public MegaloScriptDatabase(Engine.EngineBuildHandle forBuild) { EngineBuild = forBuild; Limits = new EngineLimits(); SingleEncodings = new List <SingleEncoding>(); Enums = new List <MegaloScriptEnum>(); ValueTypeNames = new List <string>(); ValueTypes = new List <MegaloScriptValueType>(); Conditions = new List <MegaloScriptProtoCondition>(); ActionTemplates = new List <MegaloScriptProtoActionTemplate>(); Actions = new List <MegaloScriptProtoAction>(); VariableRefTypes = new Dictionary <MegaloScriptVariableReferenceType, MegaloScriptProtoVariableReference>(); VariableSets = new Dictionary <MegaloScriptVariableSet, MegaloScriptProtoVariableSet>(); NameToValueType = new Dictionary <string, MegaloScriptValueType>(); NameToConditionMap = new Dictionary <string, MegaloScriptProtoCondition>(); NameToActionMap = new Dictionary <string, MegaloScriptProtoAction>(); ImportCodeEnum <MegaloScriptComparisonType> ("ComparisonType"); ImportCodeEnum <MegaloScriptOperationType> ("OperationType"); ImportCodeEnum <RuntimeData.GameTeamDesignator> ("TeamDesignator"); ImportCodeEnum <GameEngineTimerRate> ("TimerRate"); ImportCodeEnum <MegaloScriptNavpointIconType> ("NavpointIconType"); ImportCodeEnum <MegaloScriptDamageReportingModifier> ("DamageReportingModifier"); if (forBuild.IsChildOf(Engine.EngineRegistry.EngineBranchHaloReach.BranchHandle)) { InitializeForHaloReach(); } else if (forBuild.IsChildOf(Engine.EngineRegistry.EngineBranchHalo4.BranchHandle)) { InitializeForHalo4(); } else { Contract.Assert(false); throw new KSoft.Debug.UnreachableException(string.Format( "Failed to handle build: {0}", forBuild)); } }