QuestModel* QuestModel::FromJSON(const yi::rapidjson::Value& questJSONObject) { CYIParsingError parsingError; CYIString questName; CYIString questDescription; CYIRapidJSONUtility::GetStringField(&questJSONObject, "Name", questName, parsingError); YI_ASSERT(!parsingError.HasError(), "QuestModel::FromJSON", parsingError.GetParsingErrorMessage()); CYIRapidJSONUtility::GetStringField(&questJSONObject, "Description", questDescription, parsingError); YI_ASSERT(!parsingError.HasError(), "QuestModel::FromJSON", parsingError.GetParsingErrorMessage()); QuestModel* newQuest = new QuestModel(questName, questDescription); const yi::rapidjson::Value& objectives = questJSONObject["Objectives"]; YI_ASSERT(objectives.IsArray(), "QuestModel::FromJSON", "Could not find objectives array in JSON file."); for (yi::rapidjson::SizeType i = 0; i < objectives.Size(); ++i) { const yi::rapidjson::Value& objective = objectives[i]; newQuest->AddObjective(QuestObjectiveModel::FromJSON(objective), i); } return newQuest; }
QuestObjectiveModel* QuestObjectiveModel::FromJSON(const yi::rapidjson::Value& objectiveJSONObject) { CYIParsingError parsingError; CYIString name; CYIRapidJSONUtility::GetStringField(&objectiveJSONObject, "Name", name, parsingError); YI_ASSERT(!parsingError.HasError(), "QuestObjectiveModel::FromJSON", parsingError.GetParsingErrorMessage()); QuestObjectiveModel *newObjective = new QuestObjectiveModel(name); const yi::rapidjson::Value &resolutions = objectiveJSONObject["Resolutions"]; YI_ASSERT(resolutions.IsArray(), "QuestModel::FromJSON", "Could not find resolutions array in JSON file."); std::vector<CYIString> questResolutionList; for (yi::rapidjson::SizeType r = 0; r < resolutions.Size(); ++r) { const yi::rapidjson::Value &resolution = resolutions[r]; newObjective->AddResolution(QuestObjectiveResolution::FromJSON(resolution), r); } return newObjective; }
void ScreenViewController2::OnInitScreen() { m_pPreviousScreenButton = m_pView->GetNode<CYIPushButtonView>("PreviousButton"); YI_ASSERT(m_pPreviousScreenButton, LOG_TAG, "Could not find push button 'PreviousButton'"); m_pPreviousScreenButton->ButtonClicked.Connect(*m_pApplication, &DecodeApp::GoBack); }