rendered paste bodybool 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<int> Array = Variable.GetData< CArray<int> >();
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<bool>();
}
else if(Variable.Name == "Title")
{
ValidateDataType(Variable, SCALE::DataType_String);
Data.GameSettings.Back().WindowSettings.Back().Title = Variable.GetData<CString>();
}
else
CriticalErrorEx(ParseError_UnrecognisedVariable, "Unrecognised variable: " + Variable.Name);
} // For each variable
}
else
CriticalErrorEx(ParseError_UnrecognisedModule, "Unrecognised module: " + Module.Name);
} // For each module
return true;
}