예제 #1
0
            public static bool Prefix(MechLabStockInfoPopup __instance, ref string ___stockMechDefId, MechDef ___baseMechDef, UIManager ___uiManager)
            {
                try
                {
                    Logger.Debug("[MechLabStockInfoPopup_LoadStockMech_PREFIX] ___baseMechDef.Description.Id: " + ___baseMechDef.Description.Id);

                    if (!string.IsNullOrEmpty(___baseMechDef.Description.Model))
                    {
                        Logger.Debug("[MechLabStockInfoPopup_LoadStockMech_PREFIX] ___baseMechDef.Description.Model: " + ___baseMechDef.Description.Model);

                        ___stockMechDefId = ___baseMechDef.Description.Model.Replace("model", "mechdef");
                        Logger.Debug("[MechLabStockInfoPopup_LoadStockMech_PREFIX] ___stockMechDefId: " + ___stockMechDefId);



                        LoadRequest loadRequest = ___uiManager.dataManager.CreateLoadRequest(null, false);
                        // Created extension method MechLabStockInfoPopup.OverrideStockMechDefLoaded for callback
                        loadRequest.AddLoadRequest <MechDef>(BattleTechResourceType.MechDef, ___stockMechDefId, new Action <string, MechDef>(__instance.OverrideStockMechDefLoaded), false);
                        loadRequest.ProcessRequests(10u);

                        return(false);
                    }
                    else
                    {
                        return(true);
                    }
                }
                catch (Exception e)
                {
                    Logger.Error(e);
                    return(true);
                }
            }
예제 #2
0
        public static T LoadResource <T>(BattleTechResourceType resourceType, string resourceId, TimeSpan?timeout = null)
            where T : class
        {
            TimeSpan timeoutNotNull = timeout ?? TimeSpan.FromMinutes(1);

            DateTime errorTime = DateTime.Now + timeoutNotNull;

            T resource = null;

            GameInstance gameInstance = UnityGameInstance.BattleTechGame;

            DataManager dataManager = gameInstance.DataManager;

            LoadRequest loadRequest = dataManager.CreateLoadRequest(null, false);

            loadRequest.AddLoadRequest <T>(resourceType, resourceId,
                                           (s, resourceReturned) =>
            {
                resource = resourceReturned;
            }, false);
            loadRequest.ProcessRequests(10u);
            do
            {
                dataManager.Update(UnityEngine.Time.deltaTime);
                if (DateTime.Now > errorTime)
                {
                    throw new Exception("Failed to load resource: " + resourceId);
                }
            } while (resource is null);

            return(resource);
        }
        static void Postfix(SimGameState __instance, GameInstance game, SimGameDifficulty difficulty)
        {
            DataManager dm          = UnityGameInstance.BattleTechGame.DataManager;
            LoadRequest loadRequest = dm.CreateLoadRequest();

            // Need to load each unique icon
            Mod.Log.Info?.Write("-- Loading HUD icons");

            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.CrewPortrait_Aerospace, null);
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.CrewPortrait_MechTech, null);
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.CrewPortrait_MedTech, null);
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.CrewPortrait_Vehicle, null);

            loadRequest.ProcessRequests();
            Mod.Log.Info?.Write("--  Done!");

            // Reinitialize state
            ModState.Reset();
            ModState.SimGameState = __instance;
        }
예제 #4
0
        public static void Postfix(CombatGameState __instance)
        {
            Mod.Log.Trace?.Write("CGS:_I entered.");
            DataManager dm          = UnityGameInstance.BattleTechGame.DataManager;
            LoadRequest loadRequest = dm.CreateLoadRequest();

            // Need to load each unique icon
            Mod.Log.Info?.Write("LOADING EFFECT ICONS...");
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.ElectronicWarfare, null);
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.SensorsDisabled, null);
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.VisionAndSensors, null);

            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.TargetSensorsMark, null);
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.TargetVisualsMark, null);
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.TargetTaggedMark, null);
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.TargetNarcedMark, null);
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.TargetStealthMark, null);
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.TargetMimeticMark, null);
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.TargetECMShieldedMark, null);
            loadRequest.AddLoadRequest <SVGAsset>(BattleTechResourceType.SVGAsset, Mod.Config.Icons.TargetActiveProbePingedMark, null);

            loadRequest.ProcessRequests();
            Mod.Log.Info?.Write("  ICON LOADING COMPLETE!");

            ModState.Combat = __instance;
        }
예제 #5
0
        public BehaviorVariableScopeManager(GameInstance gameInstance)
        {
            scopeDescriptions = new List <ScopeDesc> {
                new ScopeDesc("global", AIMood.Undefined),
                new ScopeDesc("global_def", AIMood.Defensive),
                new ScopeDesc("global_sensorlock", AIMood.SensorLocking),
                new ScopeDesc("global_ruthless", AIMood.Ruthless),
                new ScopeDesc("role_brawler", AIMood.Undefined, UnitRole.Brawler),
                new ScopeDesc("role_brawler_def", AIMood.Defensive, UnitRole.Brawler),
                new ScopeDesc("role_ecmcarrier", AIMood.Undefined, UnitRole.EcmCarrier),
                new ScopeDesc("role_ecmcarrier_def", AIMood.Defensive, UnitRole.EcmCarrier),
                new ScopeDesc("role_ewe", AIMood.Undefined, UnitRole.Ewe),
                new ScopeDesc("role_ewe_def", AIMood.Defensive, UnitRole.Ewe),
                new ScopeDesc("role_activeprobe", AIMood.Undefined, UnitRole.ActiveProbe),
                new ScopeDesc("role_activeprobe_def", AIMood.Defensive, UnitRole.ActiveProbe),
                new ScopeDesc("role_sniper", AIMood.Undefined, UnitRole.Sniper),
                new ScopeDesc("role_sniper_def", AIMood.Defensive, UnitRole.Sniper),
                new ScopeDesc("role_scout", AIMood.Undefined, UnitRole.Scout),
                new ScopeDesc("role_scout_def", AIMood.Defensive, UnitRole.Scout),
                new ScopeDesc("role_lastmanstanding", AIMood.Undefined, UnitRole.LastManStanding),
                new ScopeDesc("role_lastmanstanding_def", AIMood.Defensive, UnitRole.LastManStanding),
                new ScopeDesc("role_meleeonly", AIMood.Undefined, UnitRole.MeleeOnly),
                new ScopeDesc("role_meleeonly_def", AIMood.Defensive, UnitRole.MeleeOnly),
                new ScopeDesc("role_noncombatant", AIMood.Undefined, UnitRole.NonCombatant),
                new ScopeDesc("role_noncombatant_def", AIMood.Defensive, UnitRole.NonCombatant),
                new ScopeDesc("role_turret", AIMood.Undefined, UnitRole.Turret),
                new ScopeDesc("role_turret_def", AIMood.Defensive, UnitRole.Turret),
                new ScopeDesc("role_vehicle", AIMood.Undefined, UnitRole.Vehicle),
                new ScopeDesc("role_vehicle_def", AIMood.Defensive, UnitRole.Vehicle),
            };

            List <FactionValue> factionList = FactionEnumeration.AIBehaviorVariableScopeList;

            for (int i = 0; i < factionList.Count; ++i)
            {
                FactionValue faction = factionList[i];
                if (faction.HasAIBehaviorVariableScope)
                {
                    string undefined = string.Format("faction_{0}", faction.Name.ToLower());
                    string defensive = string.Format("{0}_def", undefined);
                    scopeDescriptions.Add(new ScopeDesc(undefined, AIMood.Undefined, faction));
                    scopeDescriptions.Add(new ScopeDesc(defensive, AIMood.Defensive, faction));
                }
            }

            scopeDescriptions.Add(new ScopeDesc("personality_disciplined", AIMood.Undefined, AIPersonality.Disciplined));
            scopeDescriptions.Add(new ScopeDesc("personality_disciplined_def", AIMood.Defensive, AIPersonality.Disciplined));
            scopeDescriptions.Add(new ScopeDesc("personality_aggressive", AIMood.Undefined, AIPersonality.Aggressive));
            scopeDescriptions.Add(new ScopeDesc("personality_aggressive_def", AIMood.Defensive, AIPersonality.Aggressive));
            scopeDescriptions.Add(new ScopeDesc("personality_qapersonality", AIMood.Undefined, AIPersonality.QAPersonality));
            scopeDescriptions.Add(new ScopeDesc("personality_qapersonality_def", AIMood.Defensive, AIPersonality.QAPersonality));
            scopeDescriptions.Add(new ScopeDesc("skill_reckless", AIMood.Undefined, AISkillID.Reckless));
            scopeDescriptions.Add(new ScopeDesc("skill_reckless_def", AIMood.Defensive, AISkillID.Reckless));

            scopesByRole          = new Dictionary <UnitRole, BehaviorVariableScope>();
            scopesByFaction       = new Dictionary <int, BehaviorVariableScope>();
            scopesByAIPersonality = new Dictionary <AIPersonality, BehaviorVariableScope>();
            scopesByAISkill       = new Dictionary <AISkillID, BehaviorVariableScope>();

            LoadRequest loadRequest = gameInstance.DataManager.CreateLoadRequest();

            for (int i = 0; i < scopeDescriptions.Count; ++i)
            {
                ScopeDesc scopeDescription = scopeDescriptions[i];
                loadRequest.AddLoadRequest <string>(BattleTechResourceType.BehaviorVariableScope, scopeDescription.Name, OnBehaviorVariableScopeLoaded);

                switch (scopeDescription.ScopeKind)
                {
                case ScopeKind.Global:
                    if (scopeDescription.Mood == AIMood.Undefined)
                    {
                        globalBehaviorVariableScope = new BehaviorVariableScope();
                    }
                    else
                    {
                        globalBehaviorVariableScope.ScopesByMood[scopeDescription.Mood] = new BehaviorVariableScope();
                    }
                    break;

                case ScopeKind.UnitRole:
                    if (scopeDescription.Mood == AIMood.Undefined)
                    {
                        scopesByRole[scopeDescription.UnitRole] = new BehaviorVariableScope();
                    }
                    else
                    {
                        scopesByRole[scopeDescription.UnitRole].ScopesByMood[scopeDescription.Mood] = new BehaviorVariableScope();
                    }
                    break;

                case ScopeKind.Faction:
                    if (scopeDescription.Mood == AIMood.Undefined)
                    {
                        scopesByFaction[scopeDescription.FactionValue.ID] = new BehaviorVariableScope();
                    }
                    else
                    {
                        scopesByFaction[scopeDescription.FactionValue.ID].ScopesByMood[scopeDescription.Mood] = new BehaviorVariableScope();
                    }
                    break;

                case ScopeKind.Personality:
                    if (scopeDescription.Mood == AIMood.Undefined)
                    {
                        scopesByAIPersonality[scopeDescription.AIPersonality] = new BehaviorVariableScope();
                    }
                    else
                    {
                        scopesByAIPersonality[scopeDescription.AIPersonality].ScopesByMood[scopeDescription.Mood] = new BehaviorVariableScope();
                    }
                    break;

                case ScopeKind.SkillBased:
                    if (scopeDescription.Mood == AIMood.Undefined)
                    {
                        scopesByAISkill[scopeDescription.AISkillID] = new BehaviorVariableScope();
                    }
                    else
                    {
                        scopesByAISkill[scopeDescription.AISkillID].ScopesByMood[scopeDescription.Mood] = new BehaviorVariableScope();
                    }
                    break;
                }
            }

            loadRequest.ProcessRequests();
        }