/* * main.cpp * * Created on: Feb 9, 2020 * Author: ayoungblood */ #include "Game.hpp" #include "../cjson/cJSON.h" #include #include #include #include Game *game = nullptr; int main(int argc, const char * argv[]) { const int FPS = 60; const int frameDelay = 1000 / FPS; Uint32 frameStart; int frameTime; // ============================= // Load cJSON config.json file // ============================= // Starting with Error Checking std::string configPath = "src/config/config.json"; std::ifstream fin(configPath); if(fin.is_open()){ std::ifstream jsonText("src/config/config.json"); std::ostringstream tmp; tmp << jsonText.rdbuf(); std::string json = tmp.str(); cJSON * myJSON = cJSON_Parse(json.c_str()); cJSON * windowName = cJSON_GetObjectItemCaseSensitive(myJSON, "WindowName"); cJSON * windowSize = cJSON_GetObjectItem(myJSON, "WindowSize"); int windowWidth = cJSON_GetObjectItem(windowSize, "w")->valueint; int windowHeight = cJSON_GetObjectItem(windowSize, "h")->valueint; int windowFS = cJSON_GetObjectItem(myJSON, "WindowFullScreen")->valueint; int globalScale = cJSON_GetObjectItem(myJSON, "GlobalScale")->valueint; bool isWindowFS; if (windowFS==0) { isWindowFS = false; } else { isWindowFS = true; } windowWidth = windowWidth*globalScale; windowHeight = windowHeight*globalScale; game = new Game(); game->init(windowName->valuestring, windowWidth, windowHeight, isWindowFS, globalScale); // cJSON memory management cJSON_Delete(myJSON); while (game->running()) { frameStart = SDL_GetTicks(); game->handleEvents(); game->update(); game->render(); frameTime = SDL_GetTicks() - frameStart; if(frameDelay > frameTime) { SDL_Delay(frameDelay - frameTime); } } game->clean(); } else { std::cout<<"config.json not found or opened"<