Skocz do zawartości

inteligentne draw_text


nowy_user

Rekomendowane odpowiedzi

Witajcie,

 

Jak wiemy w dzisiejszych czasach wszystko musi być smart: smart phone, smart watch, smart dom itd. Niesiony na fali tego trendu chciałbym zastosować funkcję smart draw_text , tzn taką , która sama "domyśliłaby się" , że jeżeli w jednej linijce zostanie osiągnięta określona liczba znaków, lub jeśli dana literka wyjdzie poza linię specjalnego okienka, to przerzuca ostatni wyraz do następnej linii, i kolejne słowa pisze już w następnej linii.

 

Wiecie, coś jak w przygodówkach, gdzie jest dużo dialogów, np. jak w Cinders, okienko z dialogami jest na dole, ale tekst jest tam wyświetlany elegancko i nic nie wychodzi poza ramkę. Podejrzewam, że ani TeeGee , ani inni specjaliści z MoaCube nie siedzieli przy każdym dialogu postaci, zastanawiając się w którym momencie uciąć tekst by przenieść go do następnej linijki, a zamiast tego mieli pewnie elegancki silniczek, kod, który sam się domyślał, i był na pewien sposób inteligentny :) . W ten sposób specjaliści od fabuły mogli się skupić na pisaniu dialogów a nie obliczaniu długości ciągów znaków.

 

Bardzo proszę o poratowanie mnie kodem, który mam użyć, lub skierowaniem mnie na właściwe tory myślenia.

 

Pozdrawiam i życzę szalooonego weekendu :)

nowy_user

Odnośnik do komentarza
Udostępnij na innych stronach

Jest taka funkcja, liczy odleglosc w pikselach.

 

draw_text_ext(x, y, string, sep, w);

 

sep ustawiasz na -1 jezeli chcesz podstawowe odleglosci miedzy literami lub na wartosc w pikselach aby zrobic monospace.

w ustawiasz na laczna szerokosc tekstu w pikselach.

 

Edit: Jako ciekawostke w np. undertale ręcznie zmieniali linie tekstu. Głównie po to aby zrobić wcięcia poza gwiazdkami.

Odnośnik do komentarza
Udostępnij na innych stronach

Jest taka funkcja, liczy odleglosc w pikselach.

 

draw_text_ext(x, y, string, sep, w);

 

sep ustawiasz na -1 jezeli chcesz podstawowe odleglosci miedzy literami lub na wartosc w pikselach aby zrobic monospace.

w ustawiasz na laczna szerokosc tekstu w pikselach.

 

Edit: Jako ciekawostke w np. undertale ręcznie zmieniali linie tekstu. Głównie po to aby zrobić wcięcia poza gwiazdkami.

 

Rzeczywiście działa, dzięki!

Odnośnik do komentarza
Udostępnij na innych stronach

Wybaczcie, że jeden post pod drugim , ale mam problem z tym kodem.

Jeśli dany wyraz jest tak długi że sam jeden mieści się w jednej linijce, to niestety wychodzi za ramkę.

 

Czy można zrobić tak, aby skrypt dzielił taki wyraz na dwa mniejsze i drugi z nich napisał od następnej linijki? Albo jeśli się tego nie da, to może dałoby się zmniejszyć czcionkę jeśli taka sytuacja następuje?

Odnośnik do komentarza
Udostępnij na innych stronach

niestety próbuję użyć też funkcji :

 

GML
draw_text_ext_transformed

 

i wygląda na to że niestety ta funkcja nie do końca działa tak jak trzeba. Mogę ustawić w niej transofrmacje wielkości czcionki - i fajnie, ale ta tranfsormowana czcionka działa bardzo dziwnie na zmienną : w The maximum width in pixels of the string before a line break.

 

Niestety wychodzi po za ramkę albo ucina tekst w jej połowie.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...