예제 #1
0
        private static void OnFillFinished(bool success, bool playerCancel, float progress)
        {
            //MelonLoader.MelonLogger.Log("Fill Finished");
            LiquidItem liquidItem = WaterButtons.currentLiquidItemShowing;
            // Remove water and adjust the water supply.
            float maxWaterInBottle   = Mathf.Min(Water.GetActual(liquidItem.m_LiquidQuality), liquidItem.m_LiquidCapacityLiters);
            float maximumWaterRefuel = maxWaterInBottle - liquidItem.m_LiquidLiters;
            float finalWaterRefuel   = maximumWaterRefuel * progress;
            float finalWaterInBottle = finalWaterRefuel + liquidItem.m_LiquidLiters;

            liquidItem.m_LiquidLiters = 0;
            Water.WATER.Remove(finalWaterRefuel, liquidItem.m_LiquidQuality);
            liquidItem.m_LiquidLiters = finalWaterInBottle;
        }
예제 #2
0
        private static void OnFill()
        {
            //MelonLoader.MelonLogger.Log("Fill");
            var liquidItem = WaterButtons.currentLiquidItemShowing;

            if (liquidItem == null)
            {
                return;
            }
            if (liquidItem.m_LiquidLiters >= liquidItem.m_LiquidCapacityLiters)            //if the container is already full
            {
                HUDMessage.AddMessage(Localization.Get("GAMEPLAY_BWM_AlreadyFull"));
                GameAudioManager.PlayGUIError();
                return;
            }

            //If an empty container held nonpotable water before, we want to fill it with potable water.
            if (Water.IsEmpty(liquidItem) && liquidItem.m_LiquidQuality == LiquidQuality.NonPotable)
            {
                liquidItem.m_LiquidQuality = LiquidQuality.Potable;
            }

            //If the current water supply is empty.
            if (Water.IsNone(Water.GetActual(liquidItem.m_LiquidQuality)))
            {
                HUDMessage.AddMessage(Localization.Get("GAMEPLAY_BWM_Empty"));
                GameAudioManager.PlayGUIError();
                return;
            }
            float maxWaterInBottle   = Mathf.Min(Water.GetActual(liquidItem.m_LiquidQuality), liquidItem.m_LiquidCapacityLiters);
            float maximumWaterRefill = Mathf.Max(maxWaterInBottle - liquidItem.m_LiquidLiters, 0);

            if (Water.IsNone(maximumWaterRefill))             // If nothing gets transferred.
            {
                HUDMessage.AddMessage(Localization.Get("GAMEPLAY_None"));
                GameAudioManager.PlayGUIError();
                return;
            }
            GameAudioManager.PlayGuiConfirm();
            float refuelDuration = Mathf.Max(maximumWaterRefill * 4, 1);

            InterfaceManager.m_Panel_GenericProgressBar.Launch(Localization.Get("GAMEPLAY_BWM_FillingProgress"), refuelDuration, 0f, 0f,
                                                               "Play_SndActionRefuelLantern", null, false, true, new System.Action <bool, bool, float>(OnFillFinished));
        }
예제 #3
0
 private static string GetWaterInfo(LiquidQuality quality)
 {
     return(Localization.Get("GAMEPLAY_Water" + quality.ToString()) + ": " + WaterUtils.FormatWaterAmount(Water.GetActual(quality)) + "/" + WaterUtils.FormatWaterAmount(Water.GetCapacity(quality)));
 }