#pragma region Hidden Setup Stuff #define OLC_PGE_APPLICATION #include "olcPixelGameEngine.h" using namespace olc; enum Run{ FILE1, FILE2 }; // Override base class with your custom functionality class AoC2023 : public olc::PixelGameEngine { std::vectorlines; bool waitForRender=false; void wait(int pauseMs=0){ waitForRender=true; while(waitForRender); std::this_thread::sleep_for(std::chrono::milliseconds(pauseMs)); } #pragma endregion const int DAY = 1; Run runInput=FILE2; void doStuff(){ while(true){ //lines is accessible as a global. for(std::string&line:lines){ } //wait(0); //Wait for 0ms and render the screen (calls draw()) } } void draw(){ //Only use Sprites! If using decals, you must reference global variables! Clear(BLACK); int count=0; for(std::string&line:lines){ DrawString({0,count*32},line,WHITE,4); count++; } } #pragma region Hidden Engine Stuff public: AoC2023() { // Name your application std::string fileName="day"+std::to_string(DAY)+"_1.txt"; if(runInput==FILE2){fileName="day"+std::to_string(DAY)+"_2.txt";} std::ifstream file(fileName); while(file.good()){ std::string line; std::getline(file,line); lines.push_back(line); } sAppName = "Advent of Code 2023 - Day "+std::to_string(DAY); } public: bool OnUserCreate() override { return true; } bool OnUserUpdate(float fElapsedTime) override { static std::thread aocSolver(&AoC2023::doStuff,this); if(waitForRender){ draw(); waitForRender=false; } return true; } }; int main() { AoC2023 game; if (game.Construct(640, 480, 4, 4)) game.Start(); return 0; } #pragma endregion