Example #1
0
 public static void Postfix(Panel_Inventory_Examine __instance)
 {
     if (BetterFuelManagement.IsFuelItem(__instance.m_GearItem) && BetterFuelManagementUtils.IsSelected(__instance.m_Button_Unload))
     {
         __instance.m_ButtonLegendContainer.UpdateButton("Continue", "GAMEPLAY_Drain", true, 1, true);
     }
 }
Example #2
0
        internal static float GetLitersToRefuel(GearItem gearItem)
        {
            float currentLiters  = BetterFuelManagement.GetCurrentLiters(gearItem);
            float capacityLiters = BetterFuelManagement.GetCapacityLiters(gearItem);
            float totalCurrent   = BetterFuelManagement.GetTotalCurrentLiters(gearItem);

            return(Mathf.Min(capacityLiters - currentLiters, totalCurrent));
        }
Example #3
0
        public static bool Prefix(Panel_Inventory_Examine __instance)
        {
            if (!BetterFuelManagement.IsFuelItem(__instance.m_GearItem))
            {
                return(true);
            }

            BetterFuelManagement.Drain(__instance.m_GearItem);
            return(false);
        }
Example #4
0
        public static bool Prefix(GearItem gi, ref bool __result)
        {
            if (BetterFuelManagement.IsFuelItem(gi))
            {
                __result = true;
                return(false);
            }

            return(true);
        }
Example #5
0
        public static void Prefix(Panel_Inventory_Examine __instance, bool selected)
        {
            if (!BetterFuelManagement.IsFuelItem(__instance.m_GearItem))
            {
                return;
            }

            if (selected)
            {
                BetterFuelManagementUtils.SetButtonLocalizationKey(__instance.m_RefuelPanel.GetComponentInChildren <UIButton>(), "GAMEPLAY_Refuel");
            }
        }
Example #6
0
        private static void OnRefuelFinished(bool success, bool playerCancel, float progress)
        {
            Panel_Inventory_Examine panel = InterfaceManager.m_Panel_Inventory_Examine;

            if (BetterFuelManagement.IsFuelItem(panel.m_GearItem))
            {
                float litersToTransfer = BetterFuelManagement.GetLitersToRefuel(panel.m_GearItem) * progress;
                BetterFuelManagement.AddTotalCurrentLiters(-litersToTransfer, panel.m_GearItem);
                BetterFuelManagement.AddLiters(panel.m_GearItem, litersToTransfer);
            }

            panel.RefreshMainWindow();
        }
Example #7
0
        public static bool Prefix(Panel_Inventory_Examine __instance, bool selected)
        {
            if (!BetterFuelManagement.IsFuelItem(__instance.m_GearItem))
            {
                return(true);
            }

            if (selected)
            {
                BetterFuelManagementUtils.SetButtonLocalizationKey(__instance.m_RefuelPanel.GetComponentInChildren <UIButton>(), "GAMEPLAY_Drain");
            }

            __instance.m_RefuelPanel.SetActive(selected || BetterFuelManagementUtils.IsSelected(__instance.m_Button_Refuel));

            return(false);
        }
Example #8
0
        public static bool Prefix(Panel_Inventory_Examine __instance)
        {
            if (!BetterFuelManagement.IsFuelItem(__instance.m_GearItem))
            {
                return(true);
            }

            if (BetterFuelManagementUtils.IsSelected(__instance.m_Button_Unload))
            {
                BetterFuelManagement.Drain(__instance.m_GearItem);
            }
            else
            {
                BetterFuelManagement.Refuel(__instance.m_GearItem);
            }

            return(false);
        }
Example #9
0
        public static void Postfix(Panel_Inventory_Examine __instance)
        {
            if (!BetterFuelManagement.IsFuelItem(__instance.m_GearItem))
            {
                return;
            }

            Vector3 position = BetterFuelManagementUtils.GetBottomPosition(
                __instance.m_Button_Harvest,
                __instance.m_Button_Refuel,
                __instance.m_Button_Repair);

            position.y += __instance.m_ButtonSpacing;
            __instance.m_Button_Unload.transform.localPosition = position;

            __instance.m_Button_Unload.gameObject.SetActive(true);

            float litersToDrain = BetterFuelManagement.GetLitersToDrain(__instance.m_GearItem);

            __instance.m_Button_Unload.GetComponent <Panel_Inventory_Examine_MenuItem>().SetDisabled(litersToDrain < BetterFuelManagement.MIN_LITERS);
        }
Example #10
0
        public static bool Prefix(Panel_Inventory_Examine __instance)
        {
            if (!BetterFuelManagement.IsFuelItem(__instance.m_GearItem))
            {
                return(true);
            }

            __instance.m_RefuelPanel.SetActive(false);
            __instance.m_Button_Refuel.gameObject.SetActive(true);

            float currentLiters  = BetterFuelManagement.GetCurrentLiters(__instance.m_GearItem);
            float capacityLiters = BetterFuelManagement.GetCapacityLiters(__instance.m_GearItem);

            var  fuelAvailable = BetterFuelManagement.GetTotalCurrentLiters(__instance.m_GearItem) > BetterFuelManagement.MIN_LITERS;
            bool canRefuel     = !Mathf.Approximately(currentLiters, capacityLiters) && fuelAvailable;

            __instance.m_Refuel_X.gameObject.SetActive(!canRefuel);
            __instance.m_Button_Refuel.gameObject.GetComponent <Panel_Inventory_Examine_MenuItem>().SetDisabled(!canRefuel);

            __instance.m_MouseRefuelButton.SetActive(canRefuel);
            __instance.m_RequiresFuelMessage.SetActive(false);

            __instance.m_LanternFuelAmountLabel.text =
                Utils.GetLiquidQuantityString(InterfaceManager.m_Panel_OptionsMenu.m_State.m_Units, BetterFuelManagement.GetCurrentLiters(__instance.m_GearItem)) +
                "/" +
                Utils.GetLiquidQuantityStringWithUnitsNoOunces(InterfaceManager.m_Panel_OptionsMenu.m_State.m_Units, BetterFuelManagement.GetCapacityLiters(__instance.m_GearItem));

            float totalCurrent  = BetterFuelManagement.GetTotalCurrentLiters(__instance.m_GearItem);
            float totalCapacity = BetterFuelManagement.GetTotalCapacityLiters(__instance.m_GearItem);

            __instance.m_FuelSupplyAmountLabel.text =
                Utils.GetLiquidQuantityString(InterfaceManager.m_Panel_OptionsMenu.m_State.m_Units, totalCurrent) +
                "/" +
                Utils.GetLiquidQuantityStringWithUnitsNoOunces(InterfaceManager.m_Panel_OptionsMenu.m_State.m_Units, totalCapacity);

            AccessTools.Method(__instance.GetType(), "UpdateCondition")?.Invoke(__instance, null);

            return(false);
        }
Example #11
0
        public static void Prefix(Panel_Inventory_Examine __instance, bool enable)
        {
            if (!enable)
            {
                return;
            }

            if (BetterFuelManagement.IsFuelItem(__instance.m_GearItem))
            {
                // repurpose the "Unload" button to "Drain"
                BetterFuelManagementUtils.SetButtonLocalizationKey(__instance.m_Button_Unload, "GAMEPLAY_Drain");
                BetterFuelManagementUtils.SetButtonSprite(__instance.m_Button_Unload, "ico_lightSource_lantern");

                Transform lanternTexture = __instance.m_RefuelPanel.transform.Find("FuelDisplay/Lantern_Texture");
                BetterFuelManagementUtils.SetTexture(lanternTexture, Utils.GetInventoryIconTexture(__instance.m_GearItem));
            }
            else
            {
                BetterFuelManagementUtils.SetButtonLocalizationKey(__instance.m_Button_Unload, "GAMEPLAY_Unload");
                BetterFuelManagementUtils.SetButtonSprite(__instance.m_Button_Unload, "ico_ammo_rifle");
            }
        }