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; }
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)); }
private static string GetWaterInfo(LiquidQuality quality) { return(Localization.Get("GAMEPLAY_Water" + quality.ToString()) + ": " + WaterUtils.FormatWaterAmount(Water.GetActual(quality)) + "/" + WaterUtils.FormatWaterAmount(Water.GetCapacity(quality))); }