// // AniGameConfigParser.cpp // SteveAndMaggieGame-mobile // // Created by Katarzyna Kalinowska-Górska on 07/05/2019. // #include "cocos2d.h" #include "AniGameConfigParser.h" #include "AniJSONParseUtils.h" #include "AniScalingUtils.h" #include "AniSoundsRepo.h" #include "AniAdventureScene.h" AniGameConfigParser::AniGameConfigParser(std::string configFilePath){ _configJson = new rapidjson::Document(); auto jsonString = cocos2d::FileUtils::getInstance()->getStringFromFile(configFilePath); _configJson->Parse(jsonString.c_str()); } AniGameConfigParser::~AniGameConfigParser(){ delete _configJson; } AniSubGameScene* AniGameConfigParser::createGameScene(int gameId,std::string layoutFilePath){ return createGameScene(gameId, parseGameType(), layoutFilePath); } std::string AniGameConfigParser::parseGameType(){ if(AniJSONParseUtils::hasMemberString(*_configJson, "game_type")){ return (*_configJson)["game_type"].GetString(); } return ""; } AniSubGameScene* AniGameConfigParser::createGameScene(int gameId, std::string gameType, std::string layoutFilePath){ //TODO add if exists everyewhere AniSoundsRepo::soundsFolder = (AniJSONParseUtils::hasMemberString(*_configJson, "sounds_path")) ? (*_configJson)["sounds_path"].GetString() : ""; // parseSoundInfoFile(AniSoundsRepo::soundsFolder, AniSoundsRepo::soundsFolder + "sounds_info.si", AniSoundsRepo::soundDurations); auto gamePropertiesJson = (*_configJson)["game_properties"].GetObject(); if(gameType == "map"){ return AniAdventureScene::create(gameId, layoutFilePath, [&](AniAdventureScene::GameConfig& gameConfig) { auto levelConfigs = gamePropertiesJson["level_info"].GetArray(); for(const auto& levelJson : levelConfigs){ AniAdventureScene::LevelConfig levelConfig; levelConfig.levelTime = levelJson["levelTime"].GetFloat(); gameConfig.levelConfigs.push_back(levelConfig); } auto itemsJson = gamePropertiesJson["itemInfo"].GetArray(); for(int i = 0; i < itemsJson.Size(); ++i){ AniAdventureScene::FItem item; item.itemId = itemsJson[i]["itemId"].GetInt(); item.mapAdvObjectName = itemsJson[i]["adventureObjectId"].GetString(); // std::string soundsfolder = gamePropertiesJson["sounds_path"].GetString(); if(itemsJson[i].HasMember("soundRequest")){ item.soundRequest = AniSoundsRepo::soundsFolder + itemsJson[i]["soundRequest"].GetString(); AniSoundsRepo::preloadSoundEffect(item.soundRequest); } if(itemsJson[i].HasMember("soundNo")){ item.soundNo = AniSoundsRepo::soundsFolder + itemsJson[i]["soundNo"].GetString(); AniSoundsRepo::preloadSoundEffect(item.soundNo); } if(itemsJson[i].HasMember("soundYes")){ item.soundConf = AniSoundsRepo::soundsFolder + itemsJson[i]["soundYes"].GetString(); AniSoundsRepo::preloadSoundEffect(item.soundConf); } if(itemsJson[i].HasMember("soundTooLate")){ item.soundTooLate = AniSoundsRepo::soundsFolder + itemsJson[i]["soundTooLate"].GetString(); AniSoundsRepo::preloadSoundEffect(item.soundConf); } gameConfig.items.push_back(item); } }); } return nullptr; }