// shared between Weights and DynamicSlots public void AdjustTooltipEquipment(TooltipPrefab_Equipment tooltipInstance, MechComponentDef mechComponentDef) { var tooltip = new TooltipPrefab_EquipmentAdapter(tooltipInstance); var reservedSlots = 0; if (mechComponentDef.Is <Weights>(out var weights)) { reservedSlots += weights.ReservedSlots; var mechDef = Global.ActiveMechDef; if (mechDef != null) { var tonnageChanges = CalculateWeightChanges(mechDef, weights); tooltip.tonnageText.text = FormatChanges(mechComponentDef.Tonnage, tonnageChanges); } } if (mechComponentDef.Is <DynamicSlots.DynamicSlots>(out var dynamicSlots)) { reservedSlots += dynamicSlots.ReservedSlots; } if (reservedSlots > 0) { tooltip.slotsText.text = $"{mechComponentDef.InventorySize} + {reservedSlots}"; } }
public static void Postfix(TooltipPrefab_Equipment __instance, object data) { try { if (data == null) { return; } var panel = panelReference.Target as MechLabPanel; if (panel == null) { return; } var mechComponentDef = (MechComponentDef)data; EngineTooltip.AdjustTooltip(__instance, panel, mechComponentDef); EndoSteel.AdjustTooltip(__instance, panel, mechComponentDef); FerrosFibrous.AdjustTooltip(__instance, panel, mechComponentDef); } catch (Exception e) { Control.mod.Logger.LogError(e); } }
public void AdjustTooltip(TooltipPrefab_Equipment tooltip, MechComponentDef componentDef) { var adapter = new TooltipPrefab_EquipmentAdapter(tooltip); //GUILogUtils.LogHierarchy(tooltip.transform); adapter.ShowBonuses = false; }
internal static void AdjustTooltipEquipment_ShowBonusSection(TooltipPrefab_Equipment tooltip, bool?show = null) { show ??= !string.IsNullOrEmpty(tooltip.bonusesText.OriginalText) && tooltip.bonusesText.OriginalText != "-"; var text = tooltip.bonusesText.transform.parent.parent.parent; text.gameObject.SetActive(show.Value); }
public static void Postfix(TooltipPrefab_Equipment __instance, object data) { try { if (data == null) { return; } var panel = MechLab.Current; if (panel == null) { return; } var adapter = new TooltipPrefab_EquipmentAdapter(__instance); var mechComponentDef = (MechComponentDef)data; EngineTooltip.AdjustTooltip(adapter, panel, mechComponentDef); Armor.AdjustTooltip(adapter, panel, mechComponentDef); Structure.AdjustTooltip(adapter, panel, mechComponentDef); } catch (Exception e) { Control.mod.Logger.LogError(e); } }
public void AdjustTooltip(TooltipPrefab_Equipment tooltip, MechComponentDef componentDef) { foreach (var cc in componentDef.GetComponents <IAdjustTooltip>()) { cc.AdjustTooltip(tooltip, componentDef); } }
// show extended engine information (as its now shown anywhere else) internal static void AdjustTooltip(TooltipPrefab_Equipment tooltip, MechLabPanel panel, MechComponentDef mechComponentDef) { var engineDef = mechComponentDef.GetEngineDef(); if (engineDef == null) { return; } var engineRef = panel.activeMechInventory.Select(x => x.GetEngineRef()).FirstOrDefault(x => x != null); if (engineRef == null) { return; } var heatDissipation = engineRef.GetEngineHeatDissipation(); int minHeatSinks, maxHeatSinks; Control.calc.CalcHeatSinks(engineDef, out minHeatSinks, out maxHeatSinks); var maxAdditionalHeatSinks = maxHeatSinks - minHeatSinks; float walkSpeed, runSpeed, TTwalkSpeed; Control.calc.CalcSpeeds(engineDef, panel.activeMechDef.Chassis.Tonnage, out walkSpeed, out runSpeed, out TTwalkSpeed); var additionalRunSpeed = runSpeed - UnityGameInstance.BattleTechGame.MechStatisticsConstants.MinSprintFactor; var gyroWeight = Control.calc.CalcGyroWeight(engineDef); var engineWeight = mechComponentDef.Tonnage - gyroWeight; var originalText = tooltip.detailText.text; tooltip.detailText.text = ""; var htype = engineRef.IsDHS ? "Double Heat Sinks" : "Standard Heat Sinks"; tooltip.detailText.text += "<i>" + htype + "</i>" + " Internal: <b>" + minHeatSinks + "</b>" + " Additional: <b>" + engineRef.AdditionalHeatSinkCount + "</b> / <b>" + maxAdditionalHeatSinks + "</b>"; tooltip.detailText.text += "\r\n" + "<i>Speeds</i>" + " Cruise <b>" + walkSpeed + "</b>" + " / Top <b>" + runSpeed + "</b>"; tooltip.detailText.text += "\r\n" + "<i>Weights</i>" + " Engine: <b>" + engineWeight + "</b> Ton" + " Gyro: <b>" + gyroWeight + "</b> Ton"; tooltip.detailText.text += "\r\n"; tooltip.detailText.text += "\r\n"; tooltip.detailText.text += originalText; tooltip.bonusesText.text = string.Format("- {0} Heat / Turn + {1} Top Speed", heatDissipation, additionalRunSpeed); }
internal static void AdjustTooltip(TooltipPrefab_Equipment tooltip, MechLabPanel panel, MechComponentDef mechComponentDef) { if (!mechComponentDef.IsFerrosFibrous()) { return; } int count; var tonnage = WeightSavings(panel.activeMechDef, out count); tooltip.bonusesText.text = string.Format("- {0} ton, {1} / {2}", tonnage, count, Control.settings.FerrosFibrousRequiredCriticals); }
internal static void AdjustTooltip(TooltipPrefab_Equipment tooltip, MechLabPanel panel, MechComponentDef mechComponentDef) { if (!mechComponentDef.IsStructure()) { return; } var calculator = new StructureWeightSavingCalculator(panel.activeMechDef); var tonnage = calculator.WeightSavings; tooltip.bonusesText.text = string.Format("- {0} ton, {1} / {2}", tonnage, calculator.Count, calculator.RequiredCount); }
public void AdjustTooltip(TooltipPrefab_Equipment tooltipInstance, MechComponentDef mechComponentDef) { var coreDef = mechComponentDef.GetComponent <EngineCoreDef>(); if (coreDef == null) { return; } var panel = Global.ActiveMechLabPanel; if (panel == null) { return; } var engine = panel.GetEngine(); if (engine == null) { return; } engine.CoreDef = coreDef; var movement = coreDef.GetMovement(panel.activeMechDef.Chassis.Tonnage); var tooltip = new TooltipPrefab_EquipmentAdapter(tooltipInstance); var originalText = tooltip.detailText.text; tooltip.detailText.text = ""; tooltip.detailText.text += "<i>Speeds</i>" + " Cruise <b>" + movement.WalkSpeed + "</b>" + " / Top <b>" + movement.RunSpeed + "</b>"; tooltip.detailText.text += "\r\n" + "<i>Weights [Ton]</i>" + " Engine: <b>" + engine.EngineTonnage + "</b>" + " Gyro: <b>" + engine.GyroTonnage + "</b>" + " Sinks: <b>" + engine.HeatSinkTonnage + "</b>"; tooltip.tonnageText.text = $"{engine.TotalTonnage}"; tooltip.detailText.text += "\r\n"; tooltip.detailText.text += "\r\n"; tooltip.detailText.text += originalText; tooltip.detailText.SetAllDirty(); }
public static void Postfix(TooltipPrefab_Equipment __instance, object data) { try { BonusDescriptions.AdjustTooltipEquipment_ShowBonusSection(__instance); if (data is MechComponentDef def) { OverrideDescriptionsFeature.Shared.AdjustTooltipEquipment(__instance, def); } } catch (Exception e) { Control.Logger.Error.Log(e); } }
public void AdjustTooltip(TooltipPrefab_Equipment tooltipInstance, MechComponentDef mechComponentDef) { var def = mechComponentDef.GetComponent <EngineHeatBlockDef>(); if (def == null) { return; } var panel = Global.ActiveMechLabPanel; if (panel == null) { return; } var engine = panel.GetEngine(); if (engine == null) { return; } engine.EngineHeatBlockDef = def; var tooltip = new TooltipPrefab_EquipmentAdapter(tooltipInstance); var originalText = tooltip.detailText.text; tooltip.detailText.text = ""; tooltip.detailText.text += $"<i>{engine.MechHeatSinkDef.FullName}</i>" + $"\r\n Internal" + $" Free: <b>{engine.HeatSinkInternalFreeMaxCount}</b> " + $" Additional: <b>{engine.EngineHeatBlockDef.HeatSinkCount} / {engine.HeatSinkInternalAdditionalMaxCount}</b>" + $"\r\n External" + $" Free: <b>{engine.HeatSinkExternalFreeCount} / {engine.HeatSinkExternalFreeMaxCount}</b> " + $" Additional: <b>{engine.HeatSinkExternalAdditionalCount}</b>" + "\r\n"; tooltip.detailText.text += "\r\n"; tooltip.detailText.text += "\r\n"; tooltip.detailText.text += originalText; tooltip.detailText.SetAllDirty(); tooltip.bonusesText.text = BonusValueEngineHeatDissipation(engine) + ", " + BonusValueEngineHeatSinkCounts(engine); tooltip.bonusesText.SetAllDirty(); }
public static void Postfix(TooltipPrefab_Equipment __instance, object data) { try { var adapter = new TooltipPrefab_EquipmentAdapter(__instance); adapter.ShowBonuses = true; if (data is MechComponentDef def) { OverrideDescriptionsFeature.Shared.AdjustTooltipEquipment(__instance, def); } } catch (Exception e) { Control.mod.Logger.LogError(e); } }
public static void Postfix(TooltipPrefab_Equipment __instance, object data) { try { if (data == null) { return; } var adapter = new TooltipPrefab_EquipmentAdapter(__instance); var mechComponentDef = (MechComponentDef)data; EngineHandler.Shared.AdjustTooltip(adapter, mechComponentDef); WeightsHandler.Shared.AdjustTooltip(adapter, mechComponentDef); } catch (Exception e) { Control.mod.Logger.LogError(e); } }
public static void Postfix(TooltipPrefab_Equipment __instance, object data, TextMeshProUGUI ___detailText) { Mod.Log.Debug($"TP_E:SD - Init"); SimGameState sgs = UnityGameInstance.BattleTechGame.Simulation; if (data != null && ___detailText != null && sgs != null) { // Calculate total gear storage size MechComponentDef mcDef = (MechComponentDef)data; float componentStorageSize = Helper.CalculateGearStorageSize(mcDef); double totalSize = Helper.GetGearInventorySize(sgs); int storageCost = 0; if (totalSize > 0) { // Handle exponentiation of cost int totalCost = Helper.CalculateTotalForGearCargo(sgs, totalSize); double sizeFraction = componentStorageSize / totalSize; storageCost = (int)Math.Ceiling(totalCost * sizeFraction); Mod.Log.Debug($" totalCost: {totalCost} storageSize: {componentStorageSize} sizeFraction: {sizeFraction} fractionalCost: {storageCost}"); } else { // Assume no exponentiation when there is no gear double factoredSize = Math.Ceiling(componentStorageSize * Mod.Config.GearFactor); double scaledUnits = Math.Pow(factoredSize, Mod.Config.GearExponent); storageCost = (int)(Mod.Config.GearCostPerUnit * scaledUnits); Mod.Log.Info($" totalUnits:{componentStorageSize} x factor:{Mod.Config.GearFactor} = {factoredSize}"); } Text newDetails = new Text(mcDef.Description.Details + $"\n\n<color=#FF0000>Cargo Cost:{SimGameState.GetCBillString(storageCost)} from {componentStorageSize}u size</color>"); Mod.Log.Debug($" Setting details: {newDetails}u"); ___detailText.SetText(newDetails.ToString()); } else { Mod.Log.Debug($"TP_E:SD - Skipping"); } }
public void AdjustTooltip(TooltipPrefab_Equipment tooltipInstance, MechComponentDef mechComponentDef) { var weights = mechComponentDef.GetComponent <Weights>(); if (weights == null) { return; } var mechDef = Global.ActiveMechDef; if (mechDef == null) { return; } var tonnageChanges = CalculateWeightChanges(mechDef, weights); var tooltip = new TooltipPrefab_EquipmentAdapter(tooltipInstance); tooltip.tonnageText.text = FormatChanges(mechComponentDef.Tonnage, tonnageChanges); // TODO move to own feature... SlotsHandler or SizeHandler var reservedSlots = weights.ReservedSlots; if (mechComponentDef.Is <DynamicSlots.DynamicSlots>(out var dynamicSlots)) { reservedSlots += dynamicSlots.ReservedSlots; } if (reservedSlots > 0) { tooltip.slotsText.text = $"{mechComponentDef.InventorySize} + {reservedSlots}"; } tooltip.bonusesText.SetAllDirty(); }
public static void Postfix(TooltipPrefab_Equipment __instance, object data, LocalizableText ___bonusesText) { try { Logger.Debug("[TooltipPrefab_Equipment_SetData_POSTFIX] Comma-separating bonusesText"); MechComponentDef mechComponentDef = (MechComponentDef)data; if (string.IsNullOrEmpty(mechComponentDef.BonusValueA) && string.IsNullOrEmpty(mechComponentDef.BonusValueB)) { ___bonusesText.SetText("-", Array.Empty <object>()); } // BEN: Added these else if (!string.IsNullOrEmpty(mechComponentDef.BonusValueA) && string.IsNullOrEmpty(mechComponentDef.BonusValueB)) { ___bonusesText.SetText(mechComponentDef.BonusValueA, Array.Empty <object>()); } else if (string.IsNullOrEmpty(mechComponentDef.BonusValueA) && !string.IsNullOrEmpty(mechComponentDef.BonusValueB)) { ___bonusesText.SetText(mechComponentDef.BonusValueB, Array.Empty <object>()); } // :NEB else { // BEN: Added missing comma ___bonusesText.SetText("{0}, {1}", new object[] { mechComponentDef.BonusValueA, mechComponentDef.BonusValueB }); } } catch (Exception e) { Logger.Error(e); } }
public void AdjustTooltipEquipment(TooltipPrefab_Equipment tooltip, MechComponentDef componentDef) { WeightsHandler.Shared.AdjustTooltipEquipment(tooltip, componentDef); }
public void AdjustTooltipEquipment(TooltipPrefab_Equipment tooltip, MechComponentDef componentDef) { // we list bonuses in the description, disable bonus sections AdjustTooltipEquipment_ShowBonusSection(tooltip, false); }