hgter Opublikowano 5 Września 2017 Udostępnij Opublikowano 5 Września 2017 Pytanie jak w temacie. Jak rozwiązujecie w grach pokazywanie okien dialogowych? (mam na myśli takie okna z pytaniami do użytkownika np. czy na pewno chcesz skończyć grę? itp. Nie chodzi mi tu o okna z dialogami do np. rpg). Korzystacie z jakichś rozszerzeń? A jeżeli sami to robicie to jak to u Was wygląda? Zakładam takie typowe okno z jakimś komunikatem/pytaniem i jeden/dwa przyciski, których kliknięcie wykona określoną akcję. Tak myśląc widzę kilka podejść: 1) Oddzielny obiekt dla każdego okna i dla przycisków (może być tylko okno a przyciski opisane w kodzie okna a nie oddzielne obiekty) 2) Jak wyżej co do okna, ale dla przycisków dodatkowo jeden obiekt parent z zdefiniowaną mechaniką i dla każdego przycisku nowy, ale tylko z dwoma eventami: create (gdzie jest nazwa przycisku) i event_user0, w którym będzie to co przycisk zrobi. 3) Jeden obiekt (lub dwa jeżeli przycisk oddzielnie) wywoływany przez skrypt "konstruktor" (z przeciążaniem) w którym podamy wszystkie parametry, do tego skrypt destruktora i oddzielny skrypt z switch case z wpisanymi wszystkimi wykorzystywanymi w programie reakcjami na kliknięcie (wartość dla case będzie podawana w konstruktorze). Na chwilę obecną korzystam z 2 bo miało być jedno/dwa okna. Nagle zrobiło się więcej i nie bardzo chce mi się już pisać wariant 3, ale w przyszłości pójdę w tym kierunku - chyba, że znacie coś sensownego żeby nie wymyślać koła na nowo? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 6 Września 2017 Udostępnij Opublikowano 6 Września 2017 Ja mam jeden obiekt na całą grę którzy potrafi kolejkować okna i każde z g przyjmuje parametry jaka ma być treść, ile przycisków i co mają robić. Rysuje także ten obiekt hgter 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
hgter Opublikowano 6 Września 2017 Autor Udostępnij Opublikowano 6 Września 2017 A jak technicznie przekazujesz kod, który ma się wykonać po wciśnięciu przycisku? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 6 Września 2017 Administratorzy Udostępnij Opublikowano 6 Września 2017 1 godzinę temu, hgter napisał: A jak technicznie przekazujesz kod, który ma się wykonać po wciśnięciu przycisku? Create: onClick = scriptName On Mouse click: script_execute(onClick); // to samo co napisać onClick(); I sprawa załatwiona. Każda akcja jest wtedy skryptem a obiekt wystarczy jeden. Potem tworzysz okno tak: with (instance_create(0,0,objWindow)) { onSubmit = scriptEndGame; onCancel = scriptDestroySelf; } ========= Edit: druga moja wersja jest taka, że robię jedną zmienną: action = scriptName; a potem wywołuję ten skrypt z nazwą przycisku jaki został naciśnięty (albo radio button, albo cokolwiek) script_execute(action, "ok"); a wtedy w tym skrpycie: switch(argument0) { case "ok": instance_destroy(); break; case "toggle": window_set_fullscreen( ! window_get_fullscreen()); break; } itd. hgter 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
hgter Opublikowano 6 Września 2017 Autor Udostępnij Opublikowano 6 Września 2017 2 godziny temu, gnysek napisał: Ok fajne, dzięki. Druga wersja chyba bardziej mi podejdzie. Zrobię sobie skrypt np. "okno" z jednym argumentem na nazwę skryptu opisującego okno (i może drugim opcjonalnym np. gdyby jedno okno chciało wywoływać drugie i coś do niego przekazać). W switchu będą akcje przycisków tak jak napisałeś, ale jeszcze będzie case np. "konfiguracja", który wywoływany przez obiekt okna będzie zwracał wszystkie dane typu wielkość okna, grafiki, tekst w oknie, nazwy przycisków itp. W miarę pojawiania się zapotrzebowania na bardziej skomplikowane rzeczy będę mógł rozwijać główny obiekt, ale zawsze pozostanie wstecznie kompatybilny. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę