示例#1
0
        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));
            }
        }