generated from sigonasr2/CPlusPlusProjectTemplate
Added main menu, ability to mute/unmute sound and start the game.
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
5a153c60c0
commit
8fffc0f458
@ -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.
Loading…
x
Reference in New Issue
Block a user