Cutscene management implemented

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 2 years ago
parent 1636be889b
commit b96b6bf4d0
  1. 52
      SeasonsOfLoneliness.cpp
  2. BIN
      Seasons_of_Loneliness
  3. 4
      data.h

@ -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.

@ -12,6 +12,10 @@ GPSNAV-35 - UNABLE TO LOCATE
Press any key to continue.)";
std::string STORY_TEXT2=R"( SEASONS
-of-
LONELINESS)";
olc::Pixel TILE_COLORS[3]={
olc::Pixel(112, 88, 64),
olc::Pixel(60, 97, 49),

Loading…
Cancel
Save