Added main menu, ability to mute/unmute sound and start the game.

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
sigonasr2 2022-09-01 15:12:56 -05:00
parent 5a153c60c0
commit 8fffc0f458
2 changed files with 45 additions and 7 deletions

View File

@ -507,7 +507,8 @@ public:
std::vector<vi2d>REPAIRED_ROVERS; std::vector<vi2d>REPAIRED_ROVERS;
std::string CONSOLE_REF_TEXT; std::string CONSOLE_REF_TEXT;
bool SOUND_IS_PLAYING=false; bool SOUND_IS_PLAYING=false;
int MAIN_MENU_SELECTION=0;
std::string MENU_OPTIONS[4]={"NEW GAME","CONTINUE","MUTE SOUND","EXIT"};
Decal*DOME_DECAL,*FOOD_METER_DECAL,*OXYGEN_METER_DECAL,*PLANT_DECAL, Decal*DOME_DECAL,*FOOD_METER_DECAL,*OXYGEN_METER_DECAL,*PLANT_DECAL,
*PLAYER_DECAL, *PLAYER_DECAL,
@ -524,6 +525,8 @@ public:
std::vector<WEATHER_POWER*>MOVESET_SPIDEY; std::vector<WEATHER_POWER*>MOVESET_SPIDEY;
std::vector<WEATHER_POWER*>MOVESET_X_X; std::vector<WEATHER_POWER*>MOVESET_X_X;
std::vector<WEATHER_POWER*>MOVESET_XMINION; std::vector<WEATHER_POWER*>MOVESET_XMINION;
bool SOUND_IS_MUTED=false;
bool END_THE_GAME=false;
sound::Wave SONG_MAIN; sound::Wave SONG_MAIN;
@ -800,6 +803,27 @@ public:
}break; }break;
} }
} }
if (GAME_STATE==CUTSCENE_3) {
switch (MAIN_MENU_SELECTION) {
case 0:
case 1:{
fadeOut();
}break;
case 2:{
SOUND_IS_MUTED=!SOUND_IS_MUTED;
if (SOUND_IS_MUTED) {
MENU_OPTIONS[2]="UNMUTE SOUND";
engine.SetOutputVolume(0);
} else {
MENU_OPTIONS[2]="MUTE SOUND";
engine.SetOutputVolume(0.6);
}
}break;
case 3:{
END_THE_GAME=true;
}break;
}
}
switch (BATTLE_STATE) { switch (BATTLE_STATE) {
case battle::PLAYER_SELECTION:{ case battle::PLAYER_SELECTION:{
if (BATTLE_CARD_SELECTION->playerOwnCount>0) { if (BATTLE_CARD_SELECTION->playerOwnCount>0) {
@ -928,6 +952,17 @@ public:
}break; }break;
} }
} else { } else {
if (GAME_STATE==CUTSCENE_3) {
if (GetKey(A).bPressed||GetKey(LEFT).bPressed||GetKey(NP4).bPressed|GetKey(W).bPressed||GetKey(UP).bPressed||GetKey(NP8).bPressed) {
MAIN_MENU_SELECTION--;
if (MAIN_MENU_SELECTION<0) {
MAIN_MENU_SELECTION=3;
}
}
if (GetKey(D).bPressed||GetKey(RIGHT).bPressed||GetKey(NP6).bPressed||GetKey(S).bPressed||GetKey(DOWN).bPressed||GetKey(NP5).bPressed||GetKey(NP2).bPressed) {
MAIN_MENU_SELECTION=(MAIN_MENU_SELECTION+1)%4;
}
}
switch (CURRENT_CUTSCENE) { switch (CURRENT_CUTSCENE) {
case cutscene::INPUT_USERNAME:{ case cutscene::INPUT_USERNAME:{
if (GetKey(W).bPressed||GetKey(UP).bPressed||GetKey(NP8).bPressed) { if (GetKey(W).bPressed||GetKey(UP).bPressed||GetKey(NP8).bPressed) {
@ -967,7 +1002,7 @@ public:
SetDrawTarget(2); SetDrawTarget(2);
drawGame(); drawGame();
// called once per frame // called once per frame
return true; return !END_THE_GAME;
} }
void fadeOutCompleted() { void fadeOutCompleted() {
@ -1706,7 +1741,7 @@ public:
} }
if (GAME_STATE==CUTSCENE_3&&!SOUND_IS_PLAYING) { if (GAME_STATE==CUTSCENE_3&&!SOUND_IS_PLAYING) {
engine.SetOutputVolume(1); engine.SetOutputVolume(0.6);
engine.PlayWaveform(&SONG_MAIN,true); engine.PlayWaveform(&SONG_MAIN,true);
SOUND_IS_PLAYING=true; SOUND_IS_PLAYING=true;
} }
@ -1894,10 +1929,13 @@ public:
} else { } else {
FillRectDecal({(float)(48+(cursorX)*16%(WIDTH-32)),(float)(GetTextSize(CUTSCENE_CONSOLE_TEXT).y*2+((cursorX==28)?16:0))},{4*2,8*2},Pixel(100, 10, 255,(0.5*sin(frameCount*4/60.0)+0.5)*256)); FillRectDecal({(float)(48+(cursorX)*16%(WIDTH-32)),(float)(GetTextSize(CUTSCENE_CONSOLE_TEXT).y*2+((cursorX==28)?16:0))},{4*2,8*2},Pixel(100, 10, 255,(0.5*sin(frameCount*4/60.0)+0.5)*256));
} }
DrawStringDecal({(float)(WIDTH/2-GetTextSize("NEW GAME").x*2/2),(float)(HEIGHT/2-GetTextSize("NEW GAME").y*2)},"NEW GAME",WHITE,{2,2}); for (int i=0;i<4;i++) {
DrawStringDecal({(float)(WIDTH/2-GetTextSize("CONTINUE").x*2/2),(float)(HEIGHT/2-GetTextSize("CONTINUE").y*2+32)},"CONTINUE",WHITE,{2,2}); std::string tempStr = MENU_OPTIONS[i];
DrawStringDecal({(float)(WIDTH/2-GetTextSize("MUTE SOUND").x*2/2),(float)(HEIGHT/2-GetTextSize("MUTE SOUND").y*2+64)},"MUTE SOUND",WHITE,{2,2}); if (MAIN_MENU_SELECTION==i) {
DrawStringDecal({(float)(WIDTH/2-GetTextSize("EXIT").x*2/2),(float)(HEIGHT/2-GetTextSize("EXIT").y*2+96)},"EXIT",WHITE,{2,2}); tempStr="> "+tempStr+" <";
}
DrawStringDecal({(float)(WIDTH/2-GetTextSize(tempStr).x*2/2),(float)(HEIGHT/2-GetTextSize(tempStr).y*2+32*i)},tempStr,(MAIN_MENU_SELECTION==i)?MAGENTA:WHITE,{2,2});
}
GradientFillRectDecal({0,0},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN2},{100, 10, 255,ALPHA_SCREEN1}); GradientFillRectDecal({0,0},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN2},{100, 10, 255,ALPHA_SCREEN1});
GradientFillRectDecal({WIDTH/2,0},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1}); GradientFillRectDecal({WIDTH/2,0},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1});
GradientFillRectDecal({0,HEIGHT/2},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN2}); GradientFillRectDecal({0,HEIGHT/2},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN2});

Binary file not shown.