Własny CMS #3 – Wywołanie menu

Po przygotowaniu projektu głównego okienka naszego menu, czas zająć się jego wywołaniem.

Wywołanie menu

Nasze założenie jest takie, że chcemy menu wywoływać na mapie, w dowolnie wybranym przez gracza momencie. Dlatego prawie wszystko, co robimy, będzie znajdowało się w Common eventach znajdujących się w bazie danych.

W pierwszej kolejności tworzymy common event, który nazywamy Wywołanie menu. Jego Trigger ustawiamy na Parallel Process (chcemy, by działał w tle poczynań gracza), a Condition Switch na przełącznik MENU ON. Dzięki temu menu będzie wywoływane tylko wtedy, gdy aktywujemy ten przełącznik.

Następnie w komendach ustawiamy Key Input Processing zostawiając zaznaczone tylko Cancel Key (6), a jako zmienną wybierając 0001:Klawisze (pamiętajcie, by zostawić zaznaczoną opcję Wait for Key Input!). Dalej tworzymy warunek bez opcji ELSE i sprawdzamy, czy zmienna Klawisze jest równa 6 – to znaczy, czy gracz kliknął klawisz odpowiadający za akcję Cancel (ESC lub np. X). W środku warunku najpierw ustawiamy zmienną Klawisze na 0 (zerujemy jej wartość, żeby uniknąć bugów), następnie ustawiamy nowy przełącznik 0002:Włączono menu na ON, a znany nam już przełącznik 0001:MENU ON wyłączamy. Całość wygląda tak:

Właśnie stworzyliśmy typowe zdarzenie, które będzie odpalać przygotowane menu. Żeby móc to zrobić, trzeba będzie jakoś włączyć jeszcze przełącznik 0001:MENU ON. W zależności od projektu, można to zrobić różnie. Ja na potrzeby poradnika stworzę zdarzenie na mapie aktywowane na autorun, które będzie wyłączać możliwość odpalenia standardowego menu, zmieniać powyższy przełącznik na ON i usuwać się z mapy.

Na potrzeby testów tworzymy nowego Common Eventa 0002:Menu – Nawigacja i ustawiamy go na Autorun, jako Condition Switch wskazując stworzony przed chwilą 0002:Włączono menu. W środku dajemy jakąś komendę tekstową, przełącznik 0002 wyłączamy, a 0001 ustawiamy na ON.

Teraz gdy odpalicie projekt i klikniecie ESC, pojawi nam się, zamiast standardowego menu tekst, który zniknie po naciśnięciu ENTER. Ponownie klikając ESC znów go wywołamy.

Wyświetlamy obrazki

Skoro menu jest tworzone na obrazkach, trzeba będzie zacząć ich w końcu używać. Zanim zaczniemy, warto zrobić sobie jednokolorowy, czarny obrazek, który będzie zakrywał całą planszę (przyda się do przyciemniania ekranu pod menu, żeby nie zlewało się ono z mapką i bohaterem). Poniżej macie gotowca:

By uniknąć bugów związanych z wyświetlaniem, proponuję dokładnie zaznaczać sobie gdzieś, które numery obrazków za co odpowiadają (pamiętajcie, że wyższy numer obrazka zakrywa niższy). Ważna rada na przyszłość – tworząc skomplikowane systemy typu CMS, nie zawsze wszystko na początku przewidzicie, dlatego w każdym przypadku powinniście zostawiać sobie pewną granicę luzu, którą w razie czego możecie wykorzystać. Z tego powodu proponuję rozpocząć naszą listę obrazków od numeru 10 i ustalić na początek:

  • 10 – obrazek czarnego tła;
  • 13 – czerwone tło menu;
  • 16 – napisy w menu.

Wszystkie trzy pliki mają się zawsze wyświetlać w menu, dlatego ich wywołanie możemy ustawić w Common Evencie 0001:Wywołanie menu. Pamiętajcie, że wywołania obrazków innych niż kursor powinny znajdować się w innych eventach niż te, gdzie znajduje się poruszanie po menu – znacząco ułatwia to pracę.

Komendy z obrazkami wstawiamy bezpośrednio po wyzerowaniu zmiennej odpowiadającej za klawisze. Obrazek czarnego tła ustawiamy w sposób, dzięki któremu częściowo będzie on ściemniał nam cały ekran oprócz menu:

Dwa kolejne obrazki natomiast ustawiamy bez przezroczystości, za to z wykorzystaniem transparentnego koloru. Lista komend powinna wyglądać tak:

Jeśli usuniemy komendę tekstową z drugiego Common eventa i wciśniemy w projekcie ESC, pojawi nam się coś takiego:

Sami przyznacie, że zaczyna to już jakoś wyglądać! Niestety, na tym etapie gracz nie może usunąć menu klawiszem i włączyć go jeszcze raz. Zmienimy to w następnej lekcji!

ŚCIĄGNIJ PROJEKT Z LEKCJI

Michał „Michu” Wysocki

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.