#define OLC_PGE_APPLICATION #include "pixelGameEngine.h" #include "data.h" using namespace std; enum GAMESTATE{ CUTSCENE_1, GAMEWORLD }; #define WIDTH 256 #define HEIGHT 224 #define ALPHA_SCREEN1 128 #define ALPHA_SCREEN2 20 #define FADE_SPD 6 class SeasonsOfLoneliness : public olc::PixelGameEngine { public: SeasonsOfLoneliness() { sAppName = "Seasons of Loneliness"; } public: GAMESTATE GAME_STATE=CUTSCENE_1; int textInd=0; int cursorX=0; int transitionTime=0; bool fade=false; int transparency=0; int frameCount=0; float elapsedTime=0; const float TARGET_RATE = 1/60.0; std::string CUTSCENE_CONSOLE_TEXT = ""; int**MAP=NULL; int MAP_WIDTH=-1; int MAP_HEIGHT=-1; void LoadMap(char*mapName) { std::ifstream f("assets/maps/map1"); std::string data; MAP_WIDTH=MAP_HEIGHT=-1; if (MAP!=NULL) { for (int y=0;y>data; if (MAP_WIDTH==-1) { std::stringstream stream(data); stream>>MAP_WIDTH; } else if (MAP_HEIGHT==-1) { std::stringstream stream(data); stream>>MAP_HEIGHT; } else { if (MAP==NULL) { MAP=(int**)malloc(sizeof(int**)*MAP_HEIGHT); } MAP[y]=(int*)malloc(sizeof(int*)*MAP_WIDTH); for (int i=0;i=STORY_TEXT1.length()) { fadeOut(); } }break; } } bool OnUserUpdate(float fElapsedTime) override { elapsedTime+=fElapsedTime; while (elapsedTime>TARGET_RATE) { elapsedTime-=TARGET_RATE; updateGame(); } drawGame(); // called once per frame return true; } void fadeOutCompleted() { switch (GAME_STATE) { case CUTSCENE_1:{ GAME_STATE=GAMEWORLD; }break; } } void fadeInCompleted() { } void updateGame(){ frameCount++; if (fade&&transparency<255) { transparency=clamp(transparency+FADE_SPD,0,255); if (transparency==255) { fadeOutCompleted(); } } else if (!fade&&transparency>0) { transparency=clamp(transparency-FADE_SPD,0,255); if (transparency==0) { fadeInCompleted(); } } switch (GAME_STATE) { case CUTSCENE_1:{ if (textIndWIDTH-32) { int tempIndex=textInd; while (CUTSCENE_CONSOLE_TEXT[--tempIndex]!=' ') { CUTSCENE_CONSOLE_TEXT.erase(tempIndex); cursorX--; } CUTSCENE_CONSOLE_TEXT.erase(tempIndex++); CUTSCENE_CONSOLE_TEXT+='\n'; cursorX=0; while (tempIndex