diff --git a/SeasonsOfLoneliness.cpp b/SeasonsOfLoneliness.cpp index 52f6811..67a05cd 100644 --- a/SeasonsOfLoneliness.cpp +++ b/SeasonsOfLoneliness.cpp @@ -9,18 +9,20 @@ enum GAMESTATE{ CUTSCENE_2, CUTSCENE_3, GAMEWORLD, - WAITING_FOR_CUTSCENE_3 + WAITING_FOR_CUTSCENE_3, }; enum TILES{ DIRT, GRASS, - WATER + WATER, + PLANTS }; enum CUTSCENE{ PAN_DOME, PAUSE_TO_CUTSCENE_3, + CUTSCENE_4, }; #define WIDTH 256 @@ -28,7 +30,8 @@ enum CUTSCENE{ #define ALPHA_SCREEN1 128 #define ALPHA_SCREEN2 20 #define FADE_SPD 6 -#define MOVE_SPD 0.4 +#define MOVE_SPD 0.2 +#define MESSAGE_SCROLL_WAIT_SPD 2 //Number of frames to wait. class Object{ public: @@ -45,7 +48,7 @@ public: } public: - GAMESTATE GAME_STATE=CUTSCENE_1; + GAMESTATE GAME_STATE=GAMEWORLD; int textInd=0; int cursorX=0; int transitionTime=0; @@ -66,12 +69,15 @@ public: int CUTSCENE_TIMER=0; bool CUTSCENE_FLAGS[8]; bool messageBoxVisible; + int messageBoxCursor; + std::string messageBoxSpeaker; + std::string messageBoxText; olc::Decal*DOME_DECAL; std::map BASE_OBJECTS; void LoadMap(char*mapName) { - std::ifstream f("assets/maps/map1"); + std::ifstream f(mapName); std::string data; MAP_WIDTH=MAP_HEIGHT=-1; if (MAP!=NULL) { @@ -79,7 +85,9 @@ public: free(MAP[y]); } free(MAP); + MAP=NULL; } + OBJECTS.clear(); int y=0; if (f.is_open()) { @@ -132,7 +140,7 @@ public: TILES=new olc::Decal(new olc::Sprite("assets/tiles.png")); DOME_DECAL=new olc::Decal(new olc::Sprite("assets/dome.png")); BASE_OBJECTS["DOME"]=DOME_DECAL; - LoadMap("map1"); + LoadMap("assets/maps/map2"); return true; } @@ -169,8 +177,8 @@ public: }break; case CUTSCENE_2:{ fadeIn(); - PlayCutscene(PAUSE_TO_CUTSCENE_3); - GAME_STATE=WAITING_FOR_CUTSCENE_3; + PlayCutscene(CUTSCENE_4); + GAME_STATE=GAMEWORLD; }break; } } @@ -189,6 +197,11 @@ public: CUTSCENE_CONSOLE_TEXT.clear(); textInd=0; }break; + case CUTSCENE_4:{ + LoadMap("assets/maps/map2"); + PLAYER_COORDS[0]=16; + PLAYER_COORDS[1]=6; + }break; } for (int i=0;i<8;i++) { CUTSCENE_FLAGS[i]=false; @@ -218,7 +231,7 @@ public: if (GetKey(olc::F1).bPressed) { } - if (!CUTSCENE_ACTIVE) { + if (!CUTSCENE_ACTIVE&&!messageBoxVisible) { if (GetKey(olc::D).bHeld||GetKey(olc::RIGHT).bHeld) { PLAYER_COORDS[0]=clamp(PLAYER_COORDS[0]+MOVE_SPD,0.0,(double)MAP_WIDTH); } @@ -330,11 +343,9 @@ public: void DrawGameWorld() { for (int y=-1;y<=HEIGHT/32;y++) { for (int x=-1;x<=WIDTH/32;x++) { - int xOffset=PLAYER_COORDS[0]-(WIDTH/64); - int yOffset=PLAYER_COORDS[1]-(HEIGHT/64); - if (xOffset+x>=0&&xOffset+x=0&&yOffset+y