generated from sigonasr2/CPlusPlusProjectTemplate
Cutscene management implemented
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
1636be889b
commit
b96b6bf4d0
@ -7,7 +7,9 @@ using namespace std;
|
||||
enum GAMESTATE{
|
||||
CUTSCENE_1,
|
||||
CUTSCENE_2,
|
||||
GAMEWORLD
|
||||
CUTSCENE_3,
|
||||
GAMEWORLD,
|
||||
WAITING_FOR_CUTSCENE_3
|
||||
};
|
||||
|
||||
enum TILES{
|
||||
@ -18,6 +20,7 @@ enum TILES{
|
||||
|
||||
enum CUTSCENE{
|
||||
PAN_DOME,
|
||||
PAUSE_TO_CUTSCENE_3,
|
||||
};
|
||||
|
||||
#define WIDTH 256
|
||||
@ -150,6 +153,8 @@ public:
|
||||
updateGame();
|
||||
}
|
||||
|
||||
if (GetKey(olc::F1).bPressed) {
|
||||
}
|
||||
if (!CUTSCENE_ACTIVE) {
|
||||
if (GetKey(olc::D).bHeld||GetKey(olc::RIGHT).bHeld) {
|
||||
PLAYER_COORDS[0]=clamp(PLAYER_COORDS[0]+MOVE_SPD,0.0,(double)MAP_WIDTH);
|
||||
@ -177,6 +182,11 @@ public:
|
||||
PlayCutscene(PAN_DOME);
|
||||
fadeIn();
|
||||
}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[1]=18+(64/2/32);
|
||||
}break;
|
||||
case PAUSE_TO_CUTSCENE_3:{
|
||||
CUTSCENE_CONSOLE_TEXT.clear();
|
||||
textInd=0;
|
||||
}break;
|
||||
}
|
||||
for (int i=0;i<8;i++) {
|
||||
CUTSCENE_FLAGS[i]=false;
|
||||
@ -216,9 +230,20 @@ public:
|
||||
}
|
||||
}
|
||||
switch (GAME_STATE) {
|
||||
case CUTSCENE_1:{
|
||||
if (textInd<STORY_TEXT1.length()) {
|
||||
char c = STORY_TEXT1[textInd++];
|
||||
case CUTSCENE_1:
|
||||
case CUTSCENE_3:{
|
||||
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;
|
||||
if (c!='\n') {
|
||||
cursorX++;
|
||||
@ -235,7 +260,7 @@ public:
|
||||
CUTSCENE_CONSOLE_TEXT+='\n';
|
||||
cursorX=0;
|
||||
while (tempIndex<textInd) {
|
||||
CUTSCENE_CONSOLE_TEXT+=STORY_TEXT1[tempIndex++];
|
||||
CUTSCENE_CONSOLE_TEXT+=refText[tempIndex++];
|
||||
cursorX++;
|
||||
}
|
||||
}
|
||||
@ -256,6 +281,11 @@ public:
|
||||
CUTSCENE_TIMER=0;
|
||||
}
|
||||
}break;
|
||||
case WAITING_FOR_CUTSCENE_3:{
|
||||
if (transparency>200) {
|
||||
GAME_STATE=CUTSCENE_3;
|
||||
}
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -277,6 +307,18 @@ public:
|
||||
case GAMEWORLD:{
|
||||
DrawGameWorld();
|
||||
}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));
|
||||
}
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user