96 lines
3.3 KiB
C#
96 lines
3.3 KiB
C#
using System.Drawing;
|
|
using System.Numerics;
|
|
using Dalamud.Interface;
|
|
|
|
namespace KamiToolKit.Nodes;
|
|
|
|
public unsafe class ProgressBarCastNode : ProgressNode {
|
|
|
|
public readonly NineGridNode BackgroundImageNode;
|
|
public readonly NineGridNode ProgressNode;
|
|
public readonly NineGridNode BorderImageNode;
|
|
|
|
public ProgressBarCastNode() {
|
|
BackgroundImageNode = new SimpleNineGridNode {
|
|
TexturePath = "ui/uld/Parameter_Gauge.tex",
|
|
TextureSize = new Vector2(160.0f, 20.0f),
|
|
TextureCoordinates = new Vector2(0.0f, 100.0f),
|
|
LeftOffset = 20,
|
|
RightOffset = 20,
|
|
};
|
|
BackgroundImageNode.AttachNode(this);
|
|
|
|
ProgressNode = new SimpleNineGridNode {
|
|
TexturePath = "ui/uld/Parameter_Gauge.tex",
|
|
TextureSize = new Vector2(160.0f, 20.0f),
|
|
TextureCoordinates = new Vector2(0.0f, 40.0f),
|
|
MultiplyColor = new Vector3(90.0f, 75.0f, 75.0f) / 255.0f,
|
|
AddColor = KnownColor.Yellow.Vector().AsVector3Color() / 255.0f,
|
|
LeftOffset = 10,
|
|
RightOffset = 10,
|
|
};
|
|
ProgressNode.AttachNode(this);
|
|
|
|
BorderImageNode = new SimpleNineGridNode {
|
|
TexturePath = "ui/uld/Parameter_Gauge.tex",
|
|
TextureSize = new Vector2(160.0f, 20.0f),
|
|
TextureCoordinates = new Vector2(0.0f, 0.0f),
|
|
LeftOffset = 20,
|
|
RightOffset = 20,
|
|
};
|
|
BorderImageNode.AttachNode(this);
|
|
}
|
|
|
|
public override float Progress {
|
|
get => ProgressNode.Width / Width;
|
|
set => ProgressNode.Width = Width * value;
|
|
}
|
|
|
|
public override Vector4 BackgroundColor {
|
|
get => new(BackgroundImageNode.AddColor.X, BackgroundImageNode.AddColor.Y, BackgroundImageNode.AddColor.Z, BackgroundImageNode.ResNode->Color.A / 255.0f);
|
|
set {
|
|
BackgroundImageNode.ResNode->Color = new Vector4(1.0f, 1.0f, 1.0f, value.W).ToByteColor();
|
|
BackgroundImageNode.AddColor = value.AsVector3Color();
|
|
}
|
|
}
|
|
|
|
public Vector4 BorderColor {
|
|
get => new(BorderImageNode.AddColor.X, BorderImageNode.AddColor.Y, BorderImageNode.AddColor.Z, BorderImageNode.ResNode->Color.A / 255.0f);
|
|
set {
|
|
BorderImageNode.ResNode->Color = new Vector4(1.0f, 1.0f, 1.0f, value.W).ToByteColor();
|
|
BorderImageNode.AddColor = value.AsVector3Color();
|
|
}
|
|
}
|
|
|
|
public override Vector4 BarColor {
|
|
get => new(ProgressNode.AddColor.X, ProgressNode.AddColor.Y, ProgressNode.AddColor.Z, ProgressNode.ResNode->Color.A / 255.0f);
|
|
set {
|
|
ProgressNode.ResNode->Color = new Vector4(1.0f, 1.0f, 1.0f, value.W).ToByteColor();
|
|
ProgressNode.AddColor = value.AsVector3Color();
|
|
}
|
|
}
|
|
|
|
public override Vector3 MultiplyColor {
|
|
get => base.MultiplyColor;
|
|
set {
|
|
base.MultiplyColor = value;
|
|
BackgroundImageNode.MultiplyColor = value;
|
|
ProgressNode.MultiplyColor = value;
|
|
BorderImageNode.MultiplyColor = value;
|
|
}
|
|
}
|
|
|
|
public bool BorderVisible {
|
|
get => BorderImageNode.IsVisible;
|
|
set => BorderImageNode.IsVisible = value;
|
|
}
|
|
|
|
protected override void OnSizeChanged() {
|
|
base.OnSizeChanged();
|
|
|
|
BackgroundImageNode.Size = Size;
|
|
ProgressNode.Size = Size;
|
|
BorderImageNode.Size = Size;
|
|
}
|
|
}
|