All pastes #709059 Raw Edit

Unnamed

public text v1 · immutable
#709059 ·published 2007-09-24 10:23 UTC
rendered paste body
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<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;
}