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

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 3 years ago
parent 5a153c60c0
commit 8fffc0f458
  1. 52
      SeasonsOfLoneliness.cpp
  2. BIN
      Seasons_of_Loneliness

@ -507,7 +507,8 @@ public:
std::vector<vi2d>REPAIRED_ROVERS;
std::string CONSOLE_REF_TEXT;
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,
*PLAYER_DECAL,
@ -524,6 +525,8 @@ public:
std::vector<WEATHER_POWER*>MOVESET_SPIDEY;
std::vector<WEATHER_POWER*>MOVESET_X_X;
std::vector<WEATHER_POWER*>MOVESET_XMINION;
bool SOUND_IS_MUTED=false;
bool END_THE_GAME=false;
sound::Wave SONG_MAIN;
@ -800,6 +803,27 @@ public:
}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) {
case battle::PLAYER_SELECTION:{
if (BATTLE_CARD_SELECTION->playerOwnCount>0) {
@ -928,6 +952,17 @@ public:
}break;
}
} 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) {
case cutscene::INPUT_USERNAME:{
if (GetKey(W).bPressed||GetKey(UP).bPressed||GetKey(NP8).bPressed) {
@ -967,7 +1002,7 @@ public:
SetDrawTarget(2);
drawGame();
// called once per frame
return true;
return !END_THE_GAME;
}
void fadeOutCompleted() {
@ -1706,7 +1741,7 @@ public:
}
if (GAME_STATE==CUTSCENE_3&&!SOUND_IS_PLAYING) {
engine.SetOutputVolume(1);
engine.SetOutputVolume(0.6);
engine.PlayWaveform(&SONG_MAIN,true);
SOUND_IS_PLAYING=true;
}
@ -1894,10 +1929,13 @@ public:
} 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));
}
DrawStringDecal({(float)(WIDTH/2-GetTextSize("NEW GAME").x*2/2),(float)(HEIGHT/2-GetTextSize("NEW GAME").y*2)},"NEW GAME",WHITE,{2,2});
DrawStringDecal({(float)(WIDTH/2-GetTextSize("CONTINUE").x*2/2),(float)(HEIGHT/2-GetTextSize("CONTINUE").y*2+32)},"CONTINUE",WHITE,{2,2});
DrawStringDecal({(float)(WIDTH/2-GetTextSize("MUTE SOUND").x*2/2),(float)(HEIGHT/2-GetTextSize("MUTE SOUND").y*2+64)},"MUTE SOUND",WHITE,{2,2});
DrawStringDecal({(float)(WIDTH/2-GetTextSize("EXIT").x*2/2),(float)(HEIGHT/2-GetTextSize("EXIT").y*2+96)},"EXIT",WHITE,{2,2});
for (int i=0;i<4;i++) {
std::string tempStr = MENU_OPTIONS[i];
if (MAIN_MENU_SELECTION==i) {
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({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});

Binary file not shown.
Loading…
Cancel
Save