|
|
@ -7,7 +7,9 @@ using namespace std; |
|
|
|
enum GAMESTATE{ |
|
|
|
enum GAMESTATE{ |
|
|
|
CUTSCENE_1, |
|
|
|
CUTSCENE_1, |
|
|
|
CUTSCENE_2, |
|
|
|
CUTSCENE_2, |
|
|
|
GAMEWORLD |
|
|
|
CUTSCENE_3, |
|
|
|
|
|
|
|
GAMEWORLD, |
|
|
|
|
|
|
|
WAITING_FOR_CUTSCENE_3 |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
enum TILES{ |
|
|
|
enum TILES{ |
|
|
@ -18,6 +20,7 @@ enum TILES{ |
|
|
|
|
|
|
|
|
|
|
|
enum CUTSCENE{ |
|
|
|
enum CUTSCENE{ |
|
|
|
PAN_DOME, |
|
|
|
PAN_DOME, |
|
|
|
|
|
|
|
PAUSE_TO_CUTSCENE_3, |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
#define WIDTH 256 |
|
|
|
#define WIDTH 256 |
|
|
@ -150,6 +153,8 @@ public: |
|
|
|
updateGame(); |
|
|
|
updateGame(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (GetKey(olc::F1).bPressed) { |
|
|
|
|
|
|
|
} |
|
|
|
if (!CUTSCENE_ACTIVE) { |
|
|
|
if (!CUTSCENE_ACTIVE) { |
|
|
|
if (GetKey(olc::D).bHeld||GetKey(olc::RIGHT).bHeld) { |
|
|
|
if (GetKey(olc::D).bHeld||GetKey(olc::RIGHT).bHeld) { |
|
|
|
PLAYER_COORDS[0]=clamp(PLAYER_COORDS[0]+MOVE_SPD,0.0,(double)MAP_WIDTH); |
|
|
|
PLAYER_COORDS[0]=clamp(PLAYER_COORDS[0]+MOVE_SPD,0.0,(double)MAP_WIDTH); |
|
|
@ -177,6 +182,11 @@ public: |
|
|
|
PlayCutscene(PAN_DOME); |
|
|
|
PlayCutscene(PAN_DOME); |
|
|
|
fadeIn(); |
|
|
|
fadeIn(); |
|
|
|
}break; |
|
|
|
}break; |
|
|
|
|
|
|
|
case CUTSCENE_2:{ |
|
|
|
|
|
|
|
fadeIn(); |
|
|
|
|
|
|
|
PlayCutscene(PAUSE_TO_CUTSCENE_3); |
|
|
|
|
|
|
|
GAME_STATE=WAITING_FOR_CUTSCENE_3; |
|
|
|
|
|
|
|
}break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -190,6 +200,10 @@ public: |
|
|
|
PLAYER_COORDS[0]=14; |
|
|
|
PLAYER_COORDS[0]=14; |
|
|
|
PLAYER_COORDS[1]=18+(64/2/32); |
|
|
|
PLAYER_COORDS[1]=18+(64/2/32); |
|
|
|
}break; |
|
|
|
}break; |
|
|
|
|
|
|
|
case PAUSE_TO_CUTSCENE_3:{ |
|
|
|
|
|
|
|
CUTSCENE_CONSOLE_TEXT.clear(); |
|
|
|
|
|
|
|
textInd=0; |
|
|
|
|
|
|
|
}break; |
|
|
|
} |
|
|
|
} |
|
|
|
for (int i=0;i<8;i++) { |
|
|
|
for (int i=0;i<8;i++) { |
|
|
|
CUTSCENE_FLAGS[i]=false; |
|
|
|
CUTSCENE_FLAGS[i]=false; |
|
|
@ -216,9 +230,20 @@ public: |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
switch (GAME_STATE) { |
|
|
|
switch (GAME_STATE) { |
|
|
|
case CUTSCENE_1:{ |
|
|
|
case CUTSCENE_1: |
|
|
|
if (textInd<STORY_TEXT1.length()) { |
|
|
|
case CUTSCENE_3:{ |
|
|
|
char c = STORY_TEXT1[textInd++]; |
|
|
|
std::string refText; |
|
|
|
|
|
|
|
switch (GAME_STATE) { |
|
|
|
|
|
|
|
case CUTSCENE_1:{ |
|
|
|
|
|
|
|
refText=STORY_TEXT1; |
|
|
|
|
|
|
|
}break; |
|
|
|
|
|
|
|
case CUTSCENE_3:{ |
|
|
|
|
|
|
|
refText=STORY_TEXT2; |
|
|
|
|
|
|
|
}break; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (GAME_STATE==CUTSCENE_3&&frameCount%4!=0) {break;} |
|
|
|
|
|
|
|
if (textInd<refText.length()) { |
|
|
|
|
|
|
|
char c = refText[textInd++]; |
|
|
|
CUTSCENE_CONSOLE_TEXT+=c; |
|
|
|
CUTSCENE_CONSOLE_TEXT+=c; |
|
|
|
if (c!='\n') { |
|
|
|
if (c!='\n') { |
|
|
|
cursorX++; |
|
|
|
cursorX++; |
|
|
@ -235,7 +260,7 @@ public: |
|
|
|
CUTSCENE_CONSOLE_TEXT+='\n'; |
|
|
|
CUTSCENE_CONSOLE_TEXT+='\n'; |
|
|
|
cursorX=0; |
|
|
|
cursorX=0; |
|
|
|
while (tempIndex<textInd) { |
|
|
|
while (tempIndex<textInd) { |
|
|
|
CUTSCENE_CONSOLE_TEXT+=STORY_TEXT1[tempIndex++]; |
|
|
|
CUTSCENE_CONSOLE_TEXT+=refText[tempIndex++]; |
|
|
|
cursorX++; |
|
|
|
cursorX++; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -256,6 +281,11 @@ public: |
|
|
|
CUTSCENE_TIMER=0; |
|
|
|
CUTSCENE_TIMER=0; |
|
|
|
} |
|
|
|
} |
|
|
|
}break; |
|
|
|
}break; |
|
|
|
|
|
|
|
case WAITING_FOR_CUTSCENE_3:{ |
|
|
|
|
|
|
|
if (transparency>200) { |
|
|
|
|
|
|
|
GAME_STATE=CUTSCENE_3; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -277,6 +307,18 @@ public: |
|
|
|
case GAMEWORLD:{ |
|
|
|
case GAMEWORLD:{ |
|
|
|
DrawGameWorld(); |
|
|
|
DrawGameWorld(); |
|
|
|
}break; |
|
|
|
}break; |
|
|
|
|
|
|
|
case CUTSCENE_3:{ |
|
|
|
|
|
|
|
DrawStringDecal({48,16},CUTSCENE_CONSOLE_TEXT,olc::Pixel(100, 10, 255),{2,2}); |
|
|
|
|
|
|
|
if (textInd<STORY_TEXT2.length()) { |
|
|
|
|
|
|
|
FillRectDecal({48+(cursorX)*16%(WIDTH-32),GetTextSize(CUTSCENE_CONSOLE_TEXT).y*2+((cursorX==28)?16:0)},{4*2,8*2},olc::Pixel(100, 10, 255)); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
FillRectDecal({48+(cursorX)*16%(WIDTH-32),GetTextSize(CUTSCENE_CONSOLE_TEXT).y*2+((cursorX==28)?16:0)},{4*2,8*2},olc::Pixel(100, 10, 255,(0.5*sin(frameCount*4/60.0)+0.5)*256)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
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}); |
|
|
|
|
|
|
|
GradientFillRectDecal({WIDTH/2,HEIGHT/2},{WIDTH/2,HEIGHT/2},{100, 10, 255,ALPHA_SCREEN2},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1},{100, 10, 255,ALPHA_SCREEN1}); |
|
|
|
|
|
|
|
}break; |
|
|
|
} |
|
|
|
} |
|
|
|
FillRectDecal({0,0},{WIDTH,HEIGHT},olc::Pixel(0,0,0,transparency)); |
|
|
|
FillRectDecal({0,0},{WIDTH,HEIGHT},olc::Pixel(0,0,0,transparency)); |
|
|
|
} |
|
|
|
} |
|
|
|