74 lines
3.6 KiB
C#
74 lines
3.6 KiB
C#
using Microsoft.Xna.Framework;
|
|
using Microsoft.Xna.Framework.Graphics;
|
|
using System.Xml.Linq;
|
|
|
|
namespace Barotrauma.Items.Components
|
|
{
|
|
partial class PowerTransfer : Powered
|
|
{
|
|
private GUITickBox powerIndicator;
|
|
private GUITickBox highVoltageIndicator;
|
|
private GUITickBox lowVoltageIndicator;
|
|
|
|
partial void InitProjectSpecific(XElement element)
|
|
{
|
|
if (GuiFrame == null) return;
|
|
|
|
var paddedFrame = new GUIFrame(new RectTransform(new Vector2(0.9f, 0.7f), GuiFrame.RectTransform, Anchor.Center), style: null);
|
|
powerIndicator = new GUITickBox(new RectTransform(new Point(30, 30), paddedFrame.RectTransform),
|
|
TextManager.Get("PowerTransferPowered"), style: "IndicatorLightGreen")
|
|
{
|
|
Enabled = false
|
|
};
|
|
highVoltageIndicator = new GUITickBox(new RectTransform(new Point(30, 30), paddedFrame.RectTransform) { AbsoluteOffset = new Point(0, 40) },
|
|
TextManager.Get("PowerTransferHighVoltage"), style: "IndicatorLightRed")
|
|
{
|
|
ToolTip = TextManager.Get("PowerTransferTipOvervoltage"),
|
|
Enabled = false
|
|
};
|
|
lowVoltageIndicator = new GUITickBox(new RectTransform(new Point(30, 30), paddedFrame.RectTransform) { AbsoluteOffset = new Point(0, 80) },
|
|
TextManager.Get("PowerTransferLowVoltage"), style: "IndicatorLightRed")
|
|
{
|
|
ToolTip = TextManager.Get("PowerTransferTipLowvoltage"),
|
|
Enabled = false
|
|
};
|
|
|
|
var textContainer = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 1.0f), paddedFrame.RectTransform, Anchor.TopRight));
|
|
|
|
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), textContainer.RectTransform),
|
|
TextManager.Get("PowerTransferPowerLabel"), font: GUI.LargeFont)
|
|
{
|
|
ToolTip = TextManager.Get("PowerTransferTipPower")
|
|
};
|
|
string powerStr = TextManager.Get("PowerTransferPower");
|
|
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.2f), textContainer.RectTransform), "", textColor: Color.LightGreen)
|
|
{
|
|
ToolTip = TextManager.Get("PowerTransferTipPower"),
|
|
TextGetter = () => { return powerStr.Replace("[power]", ((int)(-currPowerConsumption)).ToString()); }
|
|
};
|
|
|
|
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), textContainer.RectTransform),
|
|
TextManager.Get("PowerTransferLoadLabel"), font: GUI.LargeFont)
|
|
{
|
|
ToolTip = TextManager.Get("PowerTransferTipLoad")
|
|
};
|
|
string loadStr = TextManager.Get("PowerTransferLoad");
|
|
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.2f), textContainer.RectTransform), "", textColor: Color.LightBlue)
|
|
{
|
|
ToolTip = TextManager.Get("PowerTransferTipLoad"),
|
|
TextGetter = () => { return loadStr.Replace("[load]", ((int)(powerLoad)).ToString()); }
|
|
};
|
|
}
|
|
|
|
public override void UpdateHUD(Character character, float deltaTime, Camera cam)
|
|
{
|
|
if (GuiFrame == null) return;
|
|
|
|
float voltage = powerLoad <= 0.0f ? 1.0f : -currPowerConsumption / powerLoad;
|
|
powerIndicator.Selected = IsActive && currPowerConsumption < -0.1f;
|
|
highVoltageIndicator.Selected = Timing.TotalTime % 0.5f < 0.25f && powerIndicator.Selected && voltage > 1.2f;
|
|
lowVoltageIndicator.Selected = Timing.TotalTime % 0.5f < 0.25f && powerIndicator.Selected && voltage < 0.8f;
|
|
}
|
|
}
|
|
}
|