bool CParser::ParseSettings(const SCALE::SObjectData& Object, SParsedData& Data) { if(Object.TypeName != "GameSettings") return false; Data.GameSettings.AddElement(); for(UINT ModuleIndex = 0 ; ModuleIndex < Object.Modules.Size() ; ModuleIndex++) // For each module { const SCALE::SModuleData& Module = SCALE::GetModule(Object, ModuleIndex); if(Module.Name == "WindowSettings") { Data.GameSettings.Back().WindowSettings.AddElement(); for(UINT VariableIndex = 0 ; VariableIndex < Module.Variables.Size() ; VariableIndex++) // For each variable { const SCALE::SVariableData& Variable = SCALE::GetVariable(Module, VariableIndex); if(Variable.Name == "DefaultResolution") { ValidateDataType(Variable, SCALE::DataType_IntegerArray); CArray Array = Variable.GetData< CArray >(); if(Array.Size() != 2) CriticalErrorEx(ParseError_ArrayDimension, "Dimension: " + ToString(Array.Size()) + ", Expected: 2"); Data.GameSettings.Back().WindowSettings.Back().WindowWidth = Array[0]; Data.GameSettings.Back().WindowSettings.Back().WindowHeight = Array[1]; } else if(Variable.Name == "Windowed") { ValidateDataType(Variable, SCALE::DataType_Boolean); Data.GameSettings.Back().WindowSettings.Back().Windowed = Variable.GetData(); } else if(Variable.Name == "Title") { ValidateDataType(Variable, SCALE::DataType_String); Data.GameSettings.Back().WindowSettings.Back().Title = Variable.GetData(); } else CriticalErrorEx(ParseError_UnrecognisedVariable, "Unrecognised variable: " + Variable.Name); } // For each variable } else CriticalErrorEx(ParseError_UnrecognisedModule, "Unrecognised module: " + Module.Name); } // For each module return true; }