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); } }
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; }
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; }
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(); }