Skocz do zawartości

Jak rozwiązujecie okna dialogowe?


hgter

Rekomendowane odpowiedzi

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

  • Administratorzy
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.

Odnośnik do komentarza
Udostępnij na innych stronach

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

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ę...