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{
|
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));
|
||||||
}
|
}
|
||||||
|
Binary file not shown.
4
data.h
4
data.h
@ -12,6 +12,10 @@ GPSNAV-35 - UNABLE TO LOCATE
|
|||||||
|
|
||||||
Press any key to continue.)";
|
Press any key to continue.)";
|
||||||
|
|
||||||
|
std::string STORY_TEXT2=R"( SEASONS
|
||||||
|
-of-
|
||||||
|
LONELINESS)";
|
||||||
|
|
||||||
olc::Pixel TILE_COLORS[3]={
|
olc::Pixel TILE_COLORS[3]={
|
||||||
olc::Pixel(112, 88, 64),
|
olc::Pixel(112, 88, 64),
|
||||||
olc::Pixel(60, 97, 49),
|
olc::Pixel(60, 97, 49),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user