#include "modulemenu.h" #include "jgame.h" #include "jdraw8.h" #include "jinput.h" #include "jsound.h" #include #include ModuleMenu::ModuleMenu(Info* info) { this->info = info; } ModuleMenu::~ModuleMenu(void) { } int ModuleMenu::Go() { JS_LoadMusic("mtitle.xm"); JS_PlayMusic(-1); JD8_Surface fondo = JD8_LoadSurface("menu.gif"); JD8_Palette pal = JD8_LoadPalette("menu.gif"); JD8_Surface opcions = JD8_LoadSurface("menu_s.gif"); JD8_Surface gfx = JD8_LoadSurface("sprites.gif"); JD8_ClearScreen(0); JD8_Flip(); // FADE IN JD8_Blit(fondo); JG_SetUpdateTicks(1); while (!JD8_FadeToPalAsync(pal) && !JG_Quitting()) { while (!JG_ShouldUpdate()) { JI_Update(); } } int x = 320; while (!JG_Quitting() && x > 0) { while (!JG_ShouldUpdate()) { JI_Update(); } JD8_Blit(fondo); JD8_BlitCKCut(x, 50, opcions, 0, 50, 320, 38, 0); JD8_Flip(); x--; } x = 320; while (!JG_Quitting() && x > 25) { while (!JG_ShouldUpdate()) { JI_Update(); } JD8_Blit(fondo); JD8_BlitCK(0, 50, opcions, 0, 50, 320, 38, 0); JD8_BlitCKCut(x, 88, opcions, 25, 88, 135, 37, 0); JD8_Flip(); x--; } x = 320; while (!JG_Quitting() && x > 0) { while (!JG_ShouldUpdate()) { JI_Update(); } JD8_Blit(fondo); JD8_BlitCK(0, 50, opcions, 0, 50, 320, 38, 0); JD8_BlitCK(25, 88, opcions, 25, 88, 135, 37, 0); JD8_BlitCKCut(x, 125, opcions, 0, 125, 320, 38, 0); JD8_Flip(); x--; } x = 320; while (!JG_Quitting() && x > 0) { while (!JG_ShouldUpdate()) { JI_Update(); } JD8_Blit(fondo); JD8_BlitCK(0, 50, opcions, 0, 50, 320, 38, 0); JD8_BlitCK(25, 88, opcions, 25, 88, 135, 37, 0); JD8_BlitCK(0, 125, opcions, 0, 125, 320, 38, 0); JD8_BlitCKCut(x, 163, opcions, 0, 163, 320, 37, 0); JD8_Flip(); x--; } int y = 50; while (!JG_Quitting() && y > 0) { while (!JG_ShouldUpdate()) { JI_Update(); } JD8_Blit(fondo); JD8_BlitCK(0, 50, opcions, 0, 50, 320, 38, 0); JD8_BlitCK(25, 88, opcions, 25, 88, 135, 37, 0); JD8_BlitCK(0, 125, opcions, 0, 125, 320, 38, 0); JD8_BlitCK(0, 163, opcions, 0, 163, 320, 37, 0); JD8_BlitCKCut(0, -y, opcions, 0, 0, 320, 50, 0); JD8_Flip(); y--; } int opcio_seleccionada = 0; int opcio_triada = -1; bool fletxa_amunt_pulsada = false; bool fletxa_avall_pulsada = false; float x_fletxa = 0; float x_velocitat = 1; JG_SetUpdateTicks(20); while (!JG_Quitting() && opcio_triada == -1) { while (!JG_ShouldUpdate()) { JI_Update(); if (JI_KeyPressed(SDL_SCANCODE_UP)) { if (!fletxa_amunt_pulsada) { fletxa_amunt_pulsada = true; opcio_seleccionada--; if (opcio_seleccionada < 0) opcio_seleccionada = 3; } } else { fletxa_amunt_pulsada = false; } if (JI_KeyPressed(SDL_SCANCODE_DOWN)) { if (!fletxa_avall_pulsada) { fletxa_avall_pulsada = true; opcio_seleccionada++; if (opcio_seleccionada > 3) opcio_seleccionada = 0; } } else { fletxa_avall_pulsada = false; } } x_fletxa += x_velocitat; x_velocitat -= 0.1; if (x_fletxa < 0) { x_fletxa = 0; x_velocitat = 1; } JD8_Blit(fondo); JD8_BlitCK(0, 50, opcions, 0, 50, 320, 38, 0); JD8_BlitCK(25, 88, opcions, 25, 88, 135, 37, 0); JD8_BlitCK(0, 125, opcions, 0, 125, 320, 38, 0); JD8_BlitCK(0, 163, opcions, 0, 163, 320, 37, 0); JD8_BlitCK(0, 0, opcions, 0, 0, 320, 50, 0); JD8_BlitCK(10+x_fletxa, 60+opcio_seleccionada*37, gfx, 18, 5, 9, 10, 255); JD8_Flip(); } // FADE OUT JG_SetUpdateTicks(2); while (!JD8_FadeOutAsync() && !JG_Quitting()) { while (!JG_ShouldUpdate()) { JI_Update(); } } JD8_FreeSurface(fondo); JD8_FreeSurface(opcions); JD8_FreeSurface(gfx); free(pal); if (JG_Quitting()) { return ESTAT_EIXIR; } else { switch (this->info->estat_joc) { case ESTAT_ICEKAS: return ESTAT_LOGO; break; case ESTAT_LOGO: return ESTAT_MENU; break; } } return ESTAT_EIXIR; }