static bool Prefix(AAR_UnitsResult_Screen __instance) { try { if (CustomUnitsAPI.Detected()) { return(true); } Contract theContract = (Contract)AccessTools.Field(typeof(AAR_UnitsResult_Screen), "theContract").GetValue(__instance); List <AAR_UnitStatusWidget> UnitWidgets = (List <AAR_UnitStatusWidget>)AccessTools.Field(typeof(AAR_UnitsResult_Screen), "UnitWidgets").GetValue(__instance); List <UnitResult> UnitResults = (List <UnitResult>)AccessTools.Field(typeof(AAR_UnitsResult_Screen), "UnitResults").GetValue(__instance); int experienceEarned = theContract.ExperienceEarned; for (int i = 0; i < 8; i++) { UnitWidgets[i].SetMechIconValueTextActive(false); if (UnitResults[i] != null) { UnitWidgets[i].SetNoUnitDeployedOverlayActive(false); UnitWidgets[i].FillInData(experienceEarned); } else { UnitWidgets[i].SetNoUnitDeployedOverlayActive(true); } } AccessTools.Field(typeof(AAR_UnitsResult_Screen), "UnitWidgets").SetValue(__instance, UnitWidgets); return(false); } catch (Exception e) { Logger.LogError(e); return(true); } }
static void Postfix(SGCmdCenterLanceConfigBG __instance) { if (CustomUnitsAPI.Detected() == false) { BiggerDrops.baysAlreadyAdded = 0; __instance.LC.UpdateSlotsCount(DropManager.DefaultMechSlots + DropManager.AdditionalMechSlots()); } }
static void Postfix(LanceConfiguratorPanel __instance, ref LanceConfiguration __result, LanceLoadoutSlot[] ___loadoutSlots) { try { if (CustomUnitsAPI.Detected()) { return; } Fields.callsigns.Clear(); LanceConfiguration lanceConfiguration = new LanceConfiguration(); for (int i = 0; i < ___loadoutSlots.Length; i++) { LanceLoadoutSlot lanceLoadoutSlot = ___loadoutSlots[i]; MechDef mechDef = null; PilotDef pilotDef = null; if (lanceLoadoutSlot.SelectedMech != null) { mechDef = lanceLoadoutSlot.SelectedMech.MechDef; } if (lanceLoadoutSlot.SelectedPilot != null) { pilotDef = lanceLoadoutSlot.SelectedPilot.Pilot.pilotDef; } if (mechDef != null && pilotDef != null) { if (i < DropManager.DefaultMechSlots) { lanceConfiguration.AddUnit(__instance.playerGUID, mechDef, pilotDef); } else { //if (i >= BiggerDrops.settings.additinalMechSlots + Settings.DEFAULT_MECH_SLOTS) { break; } Logger.M.TWL(0, "LanceConfiguratorPanel.CreateLanceConfiguration. Index:" + i + " additional slots border:" + (DropManager.AdditionalMechSlots() + DropManager.DefaultMechSlots) + " player slots border:" + (DropManager.AdditionalPlayerMechs() + DropManager.DefaultMechSlots)); if (i >= DropManager.AdditionalPlayerMechs() + DropManager.DefaultMechSlots) { Fields.callsigns.Add(pilotDef.Description.Callsign); //EMPLOYER ID Logger.M.WL(1, "adding to employer lance " + Settings.EMPLOYER_LANCE_GUID + " mech:" + mechDef.Description.Id + " pilot:" + pilotDef.Description.Id); lanceConfiguration.AddUnit(Settings.EMPLOYER_LANCE_GUID, mechDef, pilotDef); } else { Logger.M.WL(1, "adding to player lance " + __instance.playerGUID + " mech:" + mechDef.Description.Id + " pilot:" + pilotDef.Description.Id); lanceConfiguration.AddUnit(__instance.playerGUID, mechDef, pilotDef); } } } } __result = lanceConfiguration; } catch (Exception e) { Logger.LogError(e); } }
static bool Prefix(AAR_UnitsResult_Screen __instance, MissionResults mission, SimGameState sim, Contract contract) { try { if (CustomUnitsAPI.Detected()) { return(true); } List <AAR_UnitStatusWidget> UnitWidgets = (List <AAR_UnitStatusWidget>)AccessTools.Field(typeof(AAR_UnitsResult_Screen), "UnitWidgets").GetValue(__instance); GameObject nextButton = __instance.transform.FindRecursive("buttonPanel").gameObject; nextButton.transform.localPosition = new Vector3(150, 400, 0); Transform parent = UnitWidgets[0].transform.parent; parent.localPosition = new Vector3(0, 115, 0); foreach (AAR_UnitStatusWidget oldWidget in UnitWidgets) { oldWidget.transform.localScale = new Vector3(0.7f, 0.7f, 0.7f); } GameObject newparent = GameObject.Instantiate(parent.gameObject); newparent.transform.parent = parent.parent; newparent.name = "newparent"; newparent.transform.localPosition = new Vector3(0, -325, 0); foreach (Transform t in newparent.transform) { UnitWidgets.Add(t.gameObject.GetComponent <AAR_UnitStatusWidget>()); } AccessTools.Field(typeof(AAR_UnitsResult_Screen), "UnitWidgets").SetValue(__instance, UnitWidgets); List <UnitResult> UnitResults = new List <UnitResult>(); for (int i = 0; i < 8; i++) { if (i < contract.PlayerUnitResults.Count) { UnitResults.Add(contract.PlayerUnitResults[i]); } else { UnitResults.Add(null); } } AccessTools.Field(typeof(AAR_UnitsResult_Screen), "simState").SetValue(__instance, sim); AccessTools.Field(typeof(AAR_UnitsResult_Screen), "missionResultParent").SetValue(__instance, mission); AccessTools.Field(typeof(AAR_UnitsResult_Screen), "theContract").SetValue(__instance, contract); AccessTools.Field(typeof(AAR_UnitsResult_Screen), "numUnits").SetValue(__instance, contract.PlayerUnitResults.Count); AccessTools.Field(typeof(AAR_UnitsResult_Screen), "UnitResults").SetValue(__instance, UnitResults); __instance.Visible = false; __instance.InitializeWidgets(); return(false); } catch (Exception e) { Logger.LogError(e); return(true); } }
static void Prefix(LanceConfiguratorPanel __instance, ref int maxUnits, Contract contract) { try { if (CustomUnitsAPI.Detected()) { return; } if (contract != null) { maxUnits = DropManager.DefaultMechSlots + DropManager.AdditionalMechSlots(); __instance.UpdateSlotsCount(maxUnits); if (contract.Override != null) { if (contract.IsFlashpointContract | contract.IsFlashpointCampaignContract) { if (BiggerDrops.settings.limitFlashpointDrop) { maxUnits = Math.Min(4, contract.Override.maxNumberOfPlayerUnits); } } if (BiggerDrops.settings.respectFourDropLimit) { if (contract.Override.maxNumberOfPlayerUnits != -1) { maxUnits = contract.Override.maxNumberOfPlayerUnits; } } else { if (contract.Override.maxNumberOfPlayerUnits != 4) { maxUnits = contract.Override.maxNumberOfPlayerUnits; } } } } else { maxUnits = DropManager.DefaultMechSlots + DropManager.MaxAdditionalMechSlots; BiggerDrops.baysAlreadyAdded = 0; __instance.UpdateSlotsCount(maxUnits); //SkirmishUIFix(__instance,maxUnits); } } catch (Exception e) { Logger.M.TWL(0, e.ToString()); } }
static void Prefix(Contract __instance) { try { if (CustomUnitsAPI.Detected()) { return; } CombatGameState combat = __instance.BattleTechGame.Combat; List <Mech> allMechs = combat.AllMechs; foreach (Mech mech in allMechs) { if (Fields.callsigns.Contains(mech.pilot.Callsign)) { AccessTools.Field(typeof(Mech), "_teamId").SetValue(mech, combat.LocalPlayerTeam.GUID); } } } catch (Exception e) { Logger.LogError(e); } }
static void Prefix(SkirmishMechBayPanel __instance, LanceDef lance) { try { if (CustomUnitsAPI.Detected()) { return; } int maxUnits = DropManager.DefaultMechSlots + DropManager.MaxAdditionalMechSlots; if (lance != null) { maxUnits = lance.LanceUnits.Length; } if (__instance.loadoutSlots.Length >= maxUnits) { return; } if (__instance.loadoutSlots.Length < 2) { maxUnits = __instance.loadoutSlots.Length; return; } ; float ydelta = __instance.loadoutSlots[1].GetComponent <RectTransform>().localPosition.y - __instance.loadoutSlots[0].GetComponent <RectTransform>().localPosition.y; int addUnits = maxUnits - __instance.loadoutSlots.Length; GameObject srcLayout = __instance.loadoutSlots[__instance.loadoutSlots.Length - 1].gameObject; List <LanceLoadoutSlot> slots = new List <LanceLoadoutSlot>(); slots.AddRange(__instance.loadoutSlots); for (int t = 0; t < addUnits; ++t) { GameObject nLayout = GameObject.Instantiate(srcLayout, srcLayout.transform.parent); RectTransform rt = nLayout.GetComponent <RectTransform>(); Vector3 pos = rt.localPosition; pos.y = srcLayout.GetComponent <RectTransform>().localPosition.y + (t + 1) * ydelta; rt.localPosition = pos; slots.Add(nLayout.GetComponent <LanceLoadoutSlot>()); } __instance.loadoutSlots = slots.ToArray(); } catch (Exception e) { Logger.M.TWL(0, e.ToString()); } }
public static void UpdateSlotsCount(this LanceConfiguratorPanel panel, int maxUnits) { Logger.M.TWL(0, "LanceConfiguratorPanel.UpdateSlotsCount " + maxUnits); try { if (CustomUnitsAPI.Detected()) { return; } LanceLoadoutSlot[] loadoutSlots = (LanceLoadoutSlot[])AccessTools.Field(typeof(LanceConfiguratorPanel), "loadoutSlots").GetValue(panel); if (maxUnits <= loadoutSlots.Length) { Logger.M.TWL(1, "already fixed"); return; } ; Transform newLayoutTransform = panel.transform.FindRecursive("AlliedSlots"); GameObject newLayout; GameObject primelayout = panel.transform.FindRecursive("uixPrfPanel_LC_LanceSlots-Widget-MANAGED").gameObject; if (newLayoutTransform == null) { newLayout = GameObject.Instantiate(primelayout); newLayout.transform.parent = primelayout.transform.parent; newLayout.name = "AlliedSlots"; } else { newLayout = newLayoutTransform.gameObject; } GameObject slot1 = newLayout.transform.FindRecursive("lanceSlot1").gameObject; GameObject slot2 = newLayout.transform.FindRecursive("lanceSlot2").gameObject; GameObject slot3 = newLayout.transform.FindRecursive("lanceSlot3").gameObject; GameObject slot4 = newLayout.transform.FindRecursive("lanceSlot4").gameObject; primelayout.transform.FindRecursive("simbg").gameObject.SetActive(false); newLayout.transform.FindRecursive("simbg").gameObject.SetActive(false); newLayout.transform.FindRecursive("layout-lanceRating").gameObject.SetActive(false); newLayout.transform.FindRecursive("lanceSlotHeader-Campaign").gameObject.SetActive(true); newLayout.transform.FindRecursive("txt-unreadyLanceError").gameObject.SetActive(false); TextMeshProUGUI aiText = newLayout.transform.FindRecursive("label-readyLanceHeading").gameObject.GetComponent <TextMeshProUGUI>(); aiText.text = BiggerDrops.settings.additionalLanceName; primelayout.transform.position = new Vector3(650, 315, primelayout.transform.position.z); primelayout.transform.localScale = new Vector3(0.7f, 0.7f, 0.7f); newLayout.transform.position = new Vector3(650, 83, primelayout.transform.position.z); newLayout.transform.localScale = new Vector3(0.7f, 0.7f, 0.7f); GameObject deployButton = panel.transform.FindRecursive("DeployBttn-layout").gameObject; deployButton.transform.position = new Vector3(1675, 175, deployButton.transform.position.z); //LanceLoadoutSlot[] loadoutSlots = (LanceLoadoutSlot[])AccessTools.Field(typeof(LanceConfiguratorPanel), "loadoutSlots").GetValue(panel); List <LanceLoadoutSlot> list = loadoutSlots.ToList(); int addUnits = maxUnits - DropManager.DefaultMechSlots; for (int i = 0; i < BiggerDrops.baysAlreadyAdded; i++) { list.RemoveAt(DropManager.DefaultMechSlots + i); } if (addUnits > 0) { list.Add(slot1.GetComponent <LanceLoadoutSlot>()); } if (addUnits > 1) { list.Add(slot2.GetComponent <LanceLoadoutSlot>()); } if (addUnits > 2) { list.Add(slot3.GetComponent <LanceLoadoutSlot>()); } if (addUnits > 3) { list.Add(slot4.GetComponent <LanceLoadoutSlot>()); } loadoutSlots = list.ToArray <LanceLoadoutSlot>(); AccessTools.Field(typeof(LanceConfiguratorPanel), "loadoutSlots").SetValue(panel, loadoutSlots); float[] slotMaxTonnages = (float[])AccessTools.Field(typeof(LanceConfiguratorPanel), "slotMaxTonnages").GetValue(panel); float[] slotMinTonnages = (float[])AccessTools.Field(typeof(LanceConfiguratorPanel), "slotMinTonnages").GetValue(panel); List <float> listMaxTonnages = slotMaxTonnages.ToList(); List <float> listMinTonnages = slotMinTonnages.ToList(); for (int i = 0; i < BiggerDrops.baysAlreadyAdded; i++) { listMaxTonnages.RemoveAt(DropManager.DefaultMechSlots + i); listMinTonnages.RemoveAt(DropManager.DefaultMechSlots + i); } if (addUnits > 0) { listMaxTonnages.Add(-1); } if (addUnits > 1) { listMaxTonnages.Add(-1); } if (addUnits > 2) { listMaxTonnages.Add(-1); } if (addUnits > 3) { listMaxTonnages.Add(-1); } if (addUnits > 0) { listMinTonnages.Add(-1); } if (addUnits > 1) { listMinTonnages.Add(-1); } if (addUnits > 2) { listMinTonnages.Add(-1); } if (addUnits > 3) { listMinTonnages.Add(-1); } slotMaxTonnages = listMaxTonnages.ToArray <float>(); slotMinTonnages = listMinTonnages.ToArray <float>(); AccessTools.Field(typeof(LanceConfiguratorPanel), "slotMaxTonnages").SetValue(panel, slotMaxTonnages); AccessTools.Field(typeof(LanceConfiguratorPanel), "slotMinTonnages").SetValue(panel, slotMinTonnages); BiggerDrops.baysAlreadyAdded = addUnits; Logger.M.TWL(0, "Skirmish UI fixed"); } catch (Exception e) { Logger.M.TWL(0, e.ToString()); } }