Files
BeagleRescue/src/game/Main.cpp
2021-01-29 21:14:20 -05:00

78 lines
2.0 KiB
C++

/*
* main.cpp
*
* Created on: Feb 9, 2020
* Author: ayoungblood
*/
#include "Game.hpp"
#include "../cjson/cJSON.h"
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>
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
// =============================
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");
// if (cJSON_IsString(windowName) && (windowName->valuestring != NULL))
// {
// printf("Window Name is: %s\n", windowName->valuestring);
// }
cJSON * windowSize = cJSON_GetObjectItem(myJSON, "WindowSize");
int windowWidth = cJSON_GetObjectItem(windowSize, "w")->valueint;
int windowHeight = cJSON_GetObjectItem(windowSize, "h")->valueint;
// printf("Window:\nwidth:%d\nheight:%d\n",windowWidth,windowHeight);
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();
return 0;
}