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);
     }
 }
Exemple #2
0
 static void Postfix(SGCmdCenterLanceConfigBG __instance)
 {
     if (CustomUnitsAPI.Detected() == false)
     {
         BiggerDrops.baysAlreadyAdded = 0;
         __instance.LC.UpdateSlotsCount(DropManager.DefaultMechSlots +
                                        DropManager.AdditionalMechSlots());
     }
 }
Exemple #3
0
 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);
            }
        }
Exemple #5
0
 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());
     }
 }
Exemple #6
0
 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());
     }
 }
Exemple #8
0
        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());
            }
        }