예제 #1
0
 public static void Postfix(SGEngineeringScreen __instance)
 {
     try
     {
         if (__instance.transform.FindRecursive("BDUpgradePanel") != null)
         {
             GameObject        primelayout = __instance.transform.FindRecursive("BDUpgradePanel").gameObject;
             List <GameObject> engineeringShipUpgradePipList = new List <GameObject>();
             GameObject        driverPipSlots = primelayout.transform.FindRecursive("BDDropTonnage").gameObject;
             foreach (Transform transform in driverPipSlots.transform)
             {
                 if ((UnityEngine.Object)transform.gameObject.GetComponent <SGEngineeringShipUpgradePip>() != (UnityEngine.Object)null)
                 {
                     engineeringShipUpgradePipList.Add(transform.gameObject);
                 }
             }
             GameObject structurePipSlots = primelayout.transform.FindRecursive("BDMechControl").gameObject;
             foreach (Transform transform in structurePipSlots.transform)
             {
                 if ((UnityEngine.Object)transform.gameObject.GetComponent <SGEngineeringShipUpgradePip>() != (UnityEngine.Object)null)
                 {
                     engineeringShipUpgradePipList.Add(transform.gameObject);
                 }
             }
             GameObject powerPipSlots = primelayout.transform.FindRecursive("BDMechDrops").gameObject;
             foreach (Transform transform in powerPipSlots.transform)
             {
                 if ((UnityEngine.Object)transform.gameObject.GetComponent <SGEngineeringShipUpgradePip>() != (UnityEngine.Object)null)
                 {
                     engineeringShipUpgradePipList.Add(transform.gameObject);
                 }
             }
             List <ShipModuleUpgrade> available = (List <ShipModuleUpgrade>)AccessTools.Field(typeof(SGEngineeringScreen), "AvailableUpgrades").GetValue(__instance);
             List <ShipModuleUpgrade> purchased = (List <ShipModuleUpgrade>)AccessTools.Field(typeof(SGEngineeringScreen), "PurchasedUpgrades").GetValue(__instance);
             SimGameState             simGame   = (SimGameState)AccessTools.Property(typeof(SGEngineeringScreen), "simState").GetValue(__instance);
             engineeringShipUpgradePipList.ForEach((Action <GameObject>)(item =>
             {
                 string id = "uixPrfIndc_SIM_argoUpgradePipUnavailable-element";
                 ShipModuleUpgrade upgradeModule = item.GetComponent <SGEngineeringShipUpgradePip>().UpgradeModule;
                 if (available.Contains(upgradeModule))
                 {
                     id = "uixPrfIndc_SIM_argoUpgradePipAvailable-element";
                 }
                 else if (purchased.Contains(upgradeModule))
                 {
                     id = "uixPrfIndc_SIM_argoUpgradePip-element";
                 }
                 simGame.DataManager.PoolGameObject(id, item);
             }));
         }
     }
     catch (Exception e)
     {
         Logger.LogError(e);
     }
 }
예제 #2
0
        public static void Prefix(SGEngineeringScreen __instance)
        {
            var sim = UnityGameInstance.BattleTechGame.Simulation;
            ShipModuleUpgrade selectedUpgrade = (ShipModuleUpgrade)Traverse.Create(__instance).Property("SelectedUpgrade").GetValue();

            originalCost = selectedUpgrade.PurchaseCost;
            float multiplier = PilotQuirkManager.Instance.getArgoUpgradeCostModifier(sim.PilotRoster.ToList(),
                                                                                     selectedUpgrade.Description.Id, false);

            Traverse.Create(selectedUpgrade).Property("PurchaseCost").SetValue((int)(originalCost * multiplier));
        }
예제 #3
0
파일: Patch.cs 프로젝트: CWolfs/BiggerDrops
 public static void Prefix(SGEngineeringScreen __instance)
 {
     if (!BiggerDrops.settings.showAdditionalArgoUpgrades)
     {
         return;
     }
     try
     {
         //This needs to be done by as a prefix to avoid strange bugs with upgrades showing the wrong state
         if (__instance.transform.FindRecursive("BDUpgradePanel") == null)
         {
             GameObject primelayout = __instance.transform.FindRecursive("uixPrbPanl_SystemsAndSupportPanel").gameObject;
             GameObject newLayout   = GameObject.Instantiate(primelayout);
             newLayout.transform.parent        = primelayout.transform.parent;
             newLayout.name                    = "BDUpgradePanel";
             newLayout.transform.localPosition = new Vector3(-757, 195, 0);
             TextMeshProUGUI agroUpgradeText = newLayout.transform.FindRecursive("systemsAndSupport_header").gameObject.GetComponent <TextMeshProUGUI>();
             agroUpgradeText.text = BiggerDrops.settings.argoUpgradeName;
             TextMeshProUGUI upgrade1Text = newLayout.transform.FindRecursive("text_powerSystem").gameObject.GetComponent <TextMeshProUGUI>();
             upgrade1Text.text = BiggerDrops.settings.argoUpgradeCategory1Name;
             TextMeshProUGUI upgrade2Text = newLayout.transform.FindRecursive("text_structureSystem").gameObject.GetComponent <TextMeshProUGUI>();
             upgrade2Text.text = BiggerDrops.settings.argoUpgradeCategory2Name;
             TextMeshProUGUI upgrade3Text = newLayout.transform.FindRecursive("text_driveeSystem").gameObject.GetComponent <TextMeshProUGUI>();
             upgrade3Text.text = BiggerDrops.settings.argoUpgradeCategory3Name;
             GameObject habitat = newLayout.transform.FindRecursive("HabitatSystem").gameObject;
             habitat.name = "BDHabitat";
             habitat.SetActive(false);
             GameObject driverPipSlots = newLayout.transform.FindRecursive("drivePipSlots").gameObject;
             driverPipSlots.name = "BDDropTonnage";
             GameObject structurePipSlots = newLayout.transform.FindRecursive("structurePipSlots").gameObject;
             structurePipSlots.name = "BDMechControl";
             GameObject powerPipSlots = newLayout.transform.FindRecursive("powerPipSlots").gameObject;
             powerPipSlots.name = "BDMechDrops";
         }
     }
     catch (Exception e)
     {
         Logger.LogError(e);
     }
 }
예제 #4
0
        public static void Postfix(SGEngineeringScreen __instance)
        {
            try
            {
                if (__instance.transform.FindRecursive("BDUpgradePanel") != null)
                {
                    GameObject primelayout = __instance.transform.FindRecursive("BDUpgradePanel").gameObject;
                    List <SGEngineeringShipUpgradePip> engineeringShipUpgradePipList = new List <SGEngineeringShipUpgradePip>();
                    GameObject driverPipSlots    = primelayout.transform.FindRecursive("BDDropTonnage").gameObject;
                    GameObject structurePipSlots = primelayout.transform.FindRecursive("BDMechControl").gameObject;
                    GameObject powerPipSlots     = primelayout.transform.FindRecursive("BDMechDrops").gameObject;
                    engineeringShipUpgradePipList.AddRange((IEnumerable <SGEngineeringShipUpgradePip>)driverPipSlots.GetComponentsInChildren <SGEngineeringShipUpgradePip>());
                    engineeringShipUpgradePipList.AddRange((IEnumerable <SGEngineeringShipUpgradePip>)structurePipSlots.GetComponentsInChildren <SGEngineeringShipUpgradePip>());
                    engineeringShipUpgradePipList.AddRange((IEnumerable <SGEngineeringShipUpgradePip>)powerPipSlots.GetComponentsInChildren <SGEngineeringShipUpgradePip>());
                    List <ShipModuleUpgrade> available = (List <ShipModuleUpgrade>)AccessTools.Field(typeof(SGEngineeringScreen), "AvailableUpgrades").GetValue(__instance);
                    List <ShipModuleUpgrade> purchased = (List <ShipModuleUpgrade>)AccessTools.Field(typeof(SGEngineeringScreen), "PurchasedUpgrades").GetValue(__instance);
                    UIManager uiManager = (UIManager)AccessTools.Field(typeof(SGEngineeringScreen), "uiManager").GetValue(__instance);
                    foreach (SGEngineeringShipUpgradePip engineeringShipUpgradePip in engineeringShipUpgradePipList)
                    {
                        string id = "uixPrfIndc_SIM_argoUpgradePipUnavailable-element";

                        if (available.Contains(engineeringShipUpgradePip.UpgradeModule))
                        {
                            id = "uixPrfIndc_SIM_argoUpgradePipAvailable-element";
                        }
                        else if (purchased.Contains(engineeringShipUpgradePip.UpgradeModule))
                        {
                            id = "uixPrfIndc_SIM_argoUpgradePip-element";
                        }
                        uiManager.dataManager.PoolGameObject(id, engineeringShipUpgradePip.gameObject);
                    }
                }
            }
            catch (Exception e)
            {
                Logger.LogError(e);
            }
        }
예제 #5
0
 public static bool Prefix(SGEngineeringScreen __instance, ShipModuleUpgrade upgrade)
 {
     return(true);
 }
예제 #6
0
 public static void UpgradeSelected(this SGEngineeringScreen screen, ShipModuleUpgrade upgrade)
 {
     AccessTools.Method(typeof(SGEngineeringScreen), "OnUpgradeSelected").Invoke(screen, new object[] { upgrade });
 }
예제 #7
0
 public static void Prefix(SGEngineeringScreen __instance)
 {
     return;
 }
예제 #8
0
파일: Patch.cs 프로젝트: CWolfs/BiggerDrops
        public static bool Prefix(SGEngineeringScreen __instance, ShipModuleUpgrade upgrade)
        {
            if (!BiggerDrops.settings.showAdditionalArgoUpgrades)
            {
                return(true);
            }
            try
            {
                //Todo: upgrades at or below this are vanilla
                if (upgrade.ShipUpgradeCategoryValue.IsVanilla /*upgrade.ShipUpgradeCategoryValue.ID <= ShipUpgradeCategoryEnumeration.GetShipUpgradeCategoryByName("TRAINING").ID*/)
                {
                    return(true);
                }

                if (__instance.transform.FindRecursive("BDUpgradePanel") != null)
                {
                    GameObject primelayout             = __instance.transform.FindRecursive("BDUpgradePanel").gameObject;
                    Transform  BDMechDrops             = primelayout.transform.FindRecursive("BDMechDrops");
                    Transform  BDMechControl           = primelayout.transform.FindRecursive("BDMechControl");
                    Transform  BDDropTonnage           = primelayout.transform.FindRecursive("BDDropTonnage");
                    List <ShipModuleUpgrade> available = (List <ShipModuleUpgrade>)AccessTools.Field(typeof(SGEngineeringScreen), "AvailableUpgrades").GetValue(__instance);
                    List <ShipModuleUpgrade> purchased = (List <ShipModuleUpgrade>)AccessTools.Field(typeof(SGEngineeringScreen), "PurchasedUpgrades").GetValue(__instance);
                    SimGameState             simGame   = (SimGameState)AccessTools.Property(typeof(SGEngineeringScreen), "simState").GetValue(__instance);
                    UIManager uiManager = (UIManager)AccessTools.Field(typeof(SGEngineeringScreen), "uiManager").GetValue(__instance);
                    Transform parent;
                    if (upgrade.ShipUpgradeCategoryValue.Name == "BDDropTonnage")
                    {
                        parent = BDDropTonnage;
                    }
                    else if (upgrade.ShipUpgradeCategoryValue.Name == "BDMechControl")
                    {
                        parent = BDMechControl;
                    }
                    else if (upgrade.ShipUpgradeCategoryValue.Name == "BDMechDrops")
                    {
                        parent = BDMechDrops;
                    }
                    else
                    {
                        Debug.LogWarning((object)string.Format("Invalid location ({0}) for ship module {1}", (object)upgrade.Location, (object)upgrade.Description.Id));
                        return(false);
                    }
                    string id = "uixPrfIndc_SIM_argoUpgradePipUnavailable-element";
                    if (available.Contains(upgrade))
                    {
                        id = "uixPrfIndc_SIM_argoUpgradePipAvailable-element";
                    }
                    else if (purchased.Contains(upgrade))
                    {
                        id = "uixPrfIndc_SIM_argoUpgradePip-element";
                    }
                    SGEngineeringShipUpgradePip component = uiManager.dataManager.PooledInstantiate(id, BattleTechResourceType.UIModulePrefabs, new Vector3?(), new Quaternion?(), parent).GetComponent <SGEngineeringShipUpgradePip>();
                    component.transform.localScale = Vector3.one;
                    component.SetUpgadeModule(upgrade);
                    simGame.RequestItem <SVGAsset>(upgrade.Description.Icon, new Action <SVGAsset>(component.SetIcon), BattleTechResourceType.SVGAsset);
                    component.OnModuleSelected.RemoveAllListeners();
                    component.OnModuleSelected.AddListener(new UnityAction <ShipModuleUpgrade>(__instance.UpgradeSelected));
                }
            }
            catch (Exception e)
            {
                Logger.LogError(e);
            }
            return(false);
        }
예제 #9
0
        public static bool Prefix(SGEngineeringScreen __instance, ShipModuleUpgrade upgrade)
        {
            if (!BiggerDrops.settings.showAdditionalArgoUpgrades)
            {
                return(true);
            }
            try
            {
                //Todo: clean this up once ShipUpgradeCategory is made into a dynamic enum
                if (upgrade.Location != DropshipLocation.UNKNOWN)
                {
                    return(true);
                }

                if (__instance.transform.FindRecursive("BDUpgradePanel") != null)
                {
                    GameObject primelayout             = __instance.transform.FindRecursive("BDUpgradePanel").gameObject;
                    Transform  driverPipSlots          = primelayout.transform.FindRecursive("BDMechDrops");
                    Transform  structurePipSlots       = primelayout.transform.FindRecursive("BDMechControl");
                    Transform  powerPipSlots           = primelayout.transform.FindRecursive("BDDropTonnage");
                    List <ShipModuleUpgrade> available = (List <ShipModuleUpgrade>)AccessTools.Field(typeof(SGEngineeringScreen), "AvailableUpgrades").GetValue(__instance);
                    List <ShipModuleUpgrade> purchased = (List <ShipModuleUpgrade>)AccessTools.Field(typeof(SGEngineeringScreen), "PurchasedUpgrades").GetValue(__instance);
                    SimGameState             simGame   = (SimGameState)AccessTools.Property(typeof(SGEngineeringScreen), "simState").GetValue(__instance);
                    UIManager uiManager = (UIManager)AccessTools.Field(typeof(SGEngineeringScreen), "uiManager").GetValue(__instance);
                    Transform parent;
                    switch (upgrade.Category)
                    {
                    case ShipUpgradeCategory.POWER_SYSTEM:
                        parent = powerPipSlots;
                        break;

                    case ShipUpgradeCategory.STRUCTURE:
                        parent = structurePipSlots;
                        break;

                    case ShipUpgradeCategory.DRIVE_SYSTEM:
                        parent = driverPipSlots;
                        break;

                    default:
                        Debug.LogWarning((object)string.Format("Invalid location ({0}) for ship module {1}", (object)upgrade.Location, (object)upgrade.Description.Id));
                        return(false);
                    }
                    string id = "uixPrfIndc_SIM_argoUpgradePipUnavailable-element";
                    if (available.Contains(upgrade))
                    {
                        id = "uixPrfIndc_SIM_argoUpgradePipAvailable-element";
                    }
                    else if (purchased.Contains(upgrade))
                    {
                        id = "uixPrfIndc_SIM_argoUpgradePip-element";
                    }
                    SGEngineeringShipUpgradePip component = uiManager.dataManager.PooledInstantiate(id, BattleTechResourceType.UIModulePrefabs, new Vector3?(), new Quaternion?(), parent).GetComponent <SGEngineeringShipUpgradePip>();
                    component.transform.localScale = Vector3.one;
                    component.SetUpgadeModule(upgrade);
                    simGame.RequestItem <SVGAsset>(upgrade.Description.Icon, new Action <SVGAsset>(component.SetIcon), BattleTechResourceType.SVGAsset);
                    component.OnModuleSelected.RemoveAllListeners();
                    component.OnModuleSelected.AddListener(new UnityAction <ShipModuleUpgrade>(__instance.UpgradeSelected));
                }
            }
            catch (Exception e)
            {
                Logger.LogError(e);
            }
            return(false);
        }
예제 #10
0
        public static void Postfix(SGEngineeringScreen __instance)
        {
            ShipModuleUpgrade selectedUpgrade = (ShipModuleUpgrade)Traverse.Create(__instance).Property("SelectedUpgrade").GetValue();

            Traverse.Create(selectedUpgrade).Property("PurchaseCost").SetValue(originalCost);
        }