86 lines
2.1 KiB
C++
86 lines
2.1 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
|
|
// =============================
|
|
// 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"<<std::endl;
|
|
}
|
|
|
|
if(fin.fail()){
|
|
std::cout<<"config.json load failed"<<std::endl;
|
|
}
|
|
|
|
return 0;
|
|
}
|