GameGUI* GameGUIBuilder::createDefault() { FILE_LOG(logDEBUG) << "Entire configuration set by default"; GameGUI *gameGUI = GameGUI::getInstance(); //window by default int windowXpos = ((MAX_WINDOW_WIDTH_PX-DEFAULT_WINDOW_WIDTH_PX)/2); int windowYpos = ((MAX_WINDOW_HEIGHT_PX-DEFAULT_WINDOW_HEIGHT_PX)/2); Window* ptrWindow = new Window(GAME_TITLE, windowXpos, windowYpos, DEFAULT_WINDOW_WIDTH_PX, DEFAULT_WINDOW_HEIGHT_PX, DEFAULT_WINDOW_WIDTH); FILE_LOG(logDEBUG) << "JSON - Window width: " << DEFAULT_WINDOW_WIDTH_PX << " px"; FILE_LOG(logDEBUG) << "JSON - Window height: " << DEFAULT_WINDOW_HEIGHT_PX << " px"; FILE_LOG(logDEBUG) << "JSON - Window width: " << DEFAULT_WINDOW_WIDTH; gameGUI->setWindow(ptrWindow); //stage by default Stage* ptrStage = new Stage(DEFAULT_STAGE_WIDTH, DEFAULT_STAGE_HEIGHT, DEFAULT_STAGE_YFLOOR); FILE_LOG(logDEBUG) << "JSON - Stage width: " << DEFAULT_STAGE_WIDTH; FILE_LOG(logDEBUG) << "JSON - Stage height: " << DEFAULT_STAGE_HEIGHT; FILE_LOG(logDEBUG) << "JSON - Stage ypiso: " << DEFAULT_STAGE_YFLOOR; gameGUI->setStage(ptrStage); float ratioX = getRatio(DEFAULT_WINDOW_WIDTH_PX, DEFAULT_WINDOW_WIDTH,"X"); float ratioY = getRatio(DEFAULT_WINDOW_HEIGHT_PX, DEFAULT_STAGE_HEIGHT,"Y"); TextureManager::Instance()->ratioHeight = ratioY; TextureManager::Instance()->ratioWidth = ratioX; //characters by default vector<Character*> characters; //TODO put in constant float character_width = DEFAULT_CHARACTER_WIDTH; float character_height = DEFAULT_CHARACTER_HEIGHT; int character_zindex = DEFAULT_CHARACTER_ZINDEX; string character_name = "default"; float characterPosX = 0; float stage_win_ypiso = DEFAULT_STAGE_YFLOOR; float characterPosY = (stage_win_ypiso - character_height) * ratioY; double character_alt_color_h_inicial = 180; double character_alt_color_h_final = 300; double character_alt_color_shift = 60; LoaderParams* characterParams = new LoaderParams(characterPosX, characterPosY, character_width, character_height, character_zindex, ratioX, ratioY, character_name); AlternativeColor* altColor = new AlternativeColor(character_alt_color_h_inicial, character_alt_color_h_final, character_alt_color_shift); Character* fighterOne = new Character(characterParams); fighterOne->setPlayerNumber("1"); fighterOne->setAlternativeColor(altColor); fighterOne->setPositionX(GameGUI::getInstance()->getWindow()->widthPx / 4 - fighterOne->getWidth() * fighterOne->getRatioX()/2); fighterOne->setIsRightOriented(true); Character* fighterTwo = fighterOne->getCopyInstance(); fighterTwo->setPlayerNumber("2"); fighterTwo->setPositionX((GameGUI::getInstance()->getWindow()->widthPx / 4)*3 - fighterTwo->getWidth() * fighterTwo->getRatioX()/2); fighterTwo->setIsAlternativePlayer(true); fighterTwo->setIsRightOriented(false); Fight* fight = new Fight(); fight->setFighterOne(fighterOne); fight->setFighterTwo(fighterTwo); characters.push_back(fight->getFighterOne()); characters.push_back(fight->getFighterTwo()); MKGame::Instance()->getObjectList().push_back(fight->getFighterOne()); MKGame::Instance()->getObjectList().push_back(fight->getFighterTwo()); gameGUI->setCharacters(characters); delete fight; //Add layers to the game loop gameGUI->setLayers(buildLayersByDefault(ratioX, ratioY, ptrWindow, ptrStage)); //createGameInfo(ptrWindow, characters, ratioX, ratioY); //createThrowableObject(characters, ptrWindow, ratioX, ratioY); InputControl::Instance()->loadDefaultButtons(0); InputControl::Instance()->loadDefaultButtons(1); FILE_LOG(logDEBUG) << "Configuration process finished"; return gameGUI; }
GameGUI* GameGUIBuilder::create() { FILE_LOG(logDEBUG) << "CONFIGURATION INITIALIZED"; GameGUI *gameGUI = GameGUI::getInstance(); Json::Value root; Json::Reader reader; ifstream gameConfig(this->configFilePath.c_str(), std::ifstream::binary); if (!gameConfig.good()) { MessageError fileNotFound(ERROR_FILE_NOT_FOUND, FILE_CONFIG_NOT_FOUND, LOG_LEVEL_ERROR); Log<Output2FILE>::logMsgError(fileNotFound); return createDefault(); } bool parsingSuccessful = reader.parse(gameConfig, root, false); if (!parsingSuccessful) { MessageError parseException(ERROR_PARSER_JSON, reader.getFormattedErrorMessages(), LOG_LEVEL_ERROR); Log<Output2FILE>::logMsgError(parseException); return createDefault(); } try { const Json::Value value1 = root.get(JSON_KEY_PERSONAJES, 0); const Json::Value value2 = root.get(JSON_KEY_CAPAS,0); Json::Value value3 = root[JSON_KEY_ESCENARIO]; Json::Value value14 = root[JSON_KEY_VENTANA]; Json::Value value5 = root[JSON_KEY_PELEA]; Json::Value value6 = root[JSON_KEY_JOYSTICKS]; Json::Value value7 = root[JSON_KEY_SECUENCES]; } catch(std::exception const & e) { FILE_LOG(logDEBUG) << "Corrupt JSON File. Exception: "<<e.what(); return createDefault(); //TODO: Validate create default } Window* window = jsonGetWindow(root); Stage* stage = jsonGetStage(root,window->width); gameGUI->setWindow(window); gameGUI->setStage(stage); float ratioX = getRatio(window->widthPx, window->width,"X"); float ratioY = getRatio(window->heightPx, stage->getHeight(),"Y"); TextureManager::Instance()->ratioHeight = ratioY; TextureManager::Instance()->ratioWidth = ratioX; vector<Layer*> layers = jsonGetLayers(root, ratioX, ratioY, window, stage); if (layers.size()==0) { layers = buildLayersByDefault(ratioX, ratioY,window,stage); } vector<Character*> characters = jsonGetCharacters(root, ratioX, ratioY, stage); gameGUI->setCharacters(characters); //The fight is now being triggered by the MENU /*Fight* fight = jsonGetFight(root); gameGUI->setFight(fight); if (fight->getFighterOne()->getName() == fight->getFighterTwo()->getName()) { fight->getFighterTwo()->setIsAlternativePlayer(true); } fight->getFighterOne()->setIsRightOriented(true); MKGame::Instance()->getObjectList().push_back(fight->getFighterOne()); MKGame::Instance()->getObjectList().push_back(fight->getFighterTwo());*/ gameGUI->setLayers(layers); //The fight is now being triggered by the MENU //vector<Character*> fightingCharacters; //fightingCharacters.push_back(fight->getFighterOne()); //fightingCharacters.push_back(fight->getFighterTwo()); /*gameGUI->setCharacters(fightingCharacters); createGameInfo(window, fightingCharacters, ratioX, ratioY); createThrowableObject(fightingCharacters, window, ratioX, ratioY);*/ jsonGetJoysticks(root); jsonGetSecuences(root); vector<VisualEffect*> visualEffects = createVisualEffects(ratioX, ratioY, window, stage); gameGUI->setVisualEffects(visualEffects); FILE_LOG(logDEBUG) << "CONFIGURATION FINISHED"; return gameGUI; }