W tym artykule zmienimy prymitywny sposób wyboru pozycji bohatera po utracie życia. Dokonamy także kilku
zmian podnoszących przyjemność płynącą z gry w naszą platformówkę.
Kod źródłowy, który będziemy modyfikować w tym artykule można znaleźć tutaj.
Dostęp do edytora z menu głównego
Zaczniemy od dodania opcji do menu głównego, dzięki czemu będziemy mogli szybko przejść do edytora i zacząć
tworzyć kolejny poziom. W kilku poprzednich artykułach rozwijaliśmy edytor poziomów, więc
wygodne było, aby program przy starcie od razu włączał tryb edycji. Teraz chcemy, aby po
uruchomieniu pokazywało się menu główne. Dlatego po kodzie ładującym grafikę umieszczamy fragment
ustawiający menu jako początkowy stan programu.
1
2
3
4
5
6
7
8
9
10
// Plik: App.cpp, metoda Run// ładowanie atlasuconst std::string atlas_filename ="data/tex.png";
Engine::Get().GetRenderer()->LoadTexture(atlas_filename);// stanem początkowym jest menu
m_app_state.reset(new MainMenu());
m_app_state->Init();
m_app_state->Start();
Kod odpowiedzialny za uruchamianie edytora przenosimy do
metody MainMenu::ProcessEvents. Oczywiście obsługa tej akcji wymaga dodania typu odpowiedzialnego
za opcję "Edytor" (Sel::Editor).
Możemy skompilować nasz kod i... Hej, ale jak przejść do edytora? ;) Rzeczywiście, do tej pory edytor
uruchamiany był automatycznie przy starcie, więc w menu brakuje potrzebnej nam opcji. Jej obsługę (czyli
wyświetlenie odpowiedniego napisu oraz prostokąta z zaznaczeniem) umieszczamy w MainMenu.cpp w
metodzie Draw.
Aktualnie, pozycje menu mają następującą kolejność: "Nowa gra", "Hall of Fame", "Wyjście". Opcję
"Edytor" umieszczamy między "Hall of Fame" a " Wyjście". Aktualizacji wymaga także pozycja wyświetlania
zaznaczenia ostatniej z opcji, gdyż teraz będzie ona wyświetlana niżej (tj. pod opcją "Edytor").
Gwiazdki na początku wiersza oznaczają, że został on zmieniony.
Został jeszcze mały szczegół -- powrót z edytora do menu. Otwieramy
plik editor/Editor.cpp i wyszukujemy w nim słowo kluczowe SDLK_ESCAPE. Następnie dodajemy wpis
mówiący o przejściu do menu oraz dołączamy plik MainMenu.h, w którym znajduje się deklaracja
klasy MainMenu.
Możemy skompilować kod i zobaczyć, że nowa funkcjonalność działa dobrze. Jeżeli uznamy, że prostokąt
zaznaczający wyświetla się w złym miesjcu lub jest niewłaściwych rozmiarów, to należy dobrać (metodą prób i
błędów) inne parametry w metodzie
MainMenu::Draw.