11b4c268f0
Co-authored-by: Cursor <cursoragent@cursor.com>
254 lines
11 KiB
C#
254 lines
11 KiB
C#
using HSUI.Config;
|
|
using HSUI.Config.Attributes;
|
|
using HSUI.Enums;
|
|
using HSUI.Helpers;
|
|
using HSUI.Interface.Bars;
|
|
using HSUI.Interface.GeneralElements;
|
|
using HSUI.Interface.StatusEffects;
|
|
using Dalamud.Bindings.ImGui;
|
|
using System.Numerics;
|
|
|
|
namespace HSUI.Interface.Party
|
|
{
|
|
[Exportable(false)]
|
|
[Disableable(false)]
|
|
[DisableParentSettings("Position", "Anchor", "BackgroundColor", "FillColor", "HideWhenInactive", "DrawBorder", "BorderColor", "BorderThickness")]
|
|
[Section("Alliance Frames", true)]
|
|
[SubSection("Health Bar", 0)]
|
|
public class AllianceFramesHealthBarsConfig : PartyFramesHealthBarsConfig
|
|
{
|
|
public new static AllianceFramesHealthBarsConfig DefaultConfig()
|
|
{
|
|
var config = new AllianceFramesHealthBarsConfig(Vector2.Zero, new(100, 22), PluginConfigColor.Empty);
|
|
config.MouseoverAreaConfig.Enabled = false;
|
|
config.Padding = new Vector2(2, 1);
|
|
config.ShowLabels = false;
|
|
config.NameLabelConfig.Enabled = false;
|
|
config.HealthLabelConfig.Enabled = false;
|
|
config.OrderNumberConfig.Enabled = false;
|
|
return config;
|
|
}
|
|
|
|
public AllianceFramesHealthBarsConfig(Vector2 position, Vector2 size, PluginConfigColor fillColor, BarDirection fillDirection = BarDirection.Right)
|
|
: base(position, size, fillColor, fillDirection)
|
|
{
|
|
}
|
|
}
|
|
|
|
[Exportable(false)]
|
|
[Section("Alliance Frames", true)]
|
|
[SubSection("Mana Bar", 0)]
|
|
public class AllianceFramesManaBarConfig : PartyFramesManaBarConfig
|
|
{
|
|
public new static AllianceFramesManaBarConfig DefaultConfig()
|
|
{
|
|
var config = new AllianceFramesManaBarConfig(new Vector2(0, 0), new Vector2(100, 6));
|
|
config.Enabled = false;
|
|
return config;
|
|
}
|
|
public AllianceFramesManaBarConfig(Vector2 position, Vector2 size) : base(position, size) { }
|
|
}
|
|
|
|
[Exportable(false)]
|
|
[Section("Alliance Frames", true)]
|
|
[SubSection("Castbar", 0)]
|
|
public class AllianceFramesCastbarConfig : PartyFramesCastbarConfig
|
|
{
|
|
public new static AllianceFramesCastbarConfig DefaultConfig()
|
|
{
|
|
var size = new Vector2(102, 10);
|
|
var pos = new Vector2(-1, 0);
|
|
var castNameConfig = new LabelConfig(new Vector2(5, 0), "", DrawAnchor.Left, DrawAnchor.Left);
|
|
var castTimeConfig = new NumericLabelConfig(new Vector2(-5, 0), "", DrawAnchor.Right, DrawAnchor.Right);
|
|
castTimeConfig.Enabled = false;
|
|
castTimeConfig.NumberFormat = 1;
|
|
var config = new AllianceFramesCastbarConfig(pos, size, castNameConfig, castTimeConfig);
|
|
config.Enabled = false;
|
|
return config;
|
|
}
|
|
public AllianceFramesCastbarConfig(Vector2 position, Vector2 size, LabelConfig castNameConfig, NumericLabelConfig castTimeConfig)
|
|
: base(position, size, castNameConfig, castTimeConfig) { }
|
|
}
|
|
|
|
[Disableable(false)]
|
|
[Exportable(false)]
|
|
[Section("Alliance Frames", true)]
|
|
[SubSection("Icons", 0)]
|
|
public class AllianceFramesIconsConfig : PartyFramesIconsConfig
|
|
{
|
|
public new static AllianceFramesIconsConfig DefaultConfig()
|
|
{
|
|
var config = new AllianceFramesIconsConfig();
|
|
config.Role.Enabled = false;
|
|
config.Sign.Enabled = false;
|
|
config.Leader.Enabled = false;
|
|
config.PlayerStatus.Enabled = false;
|
|
config.ReadyCheckStatus.Icon.Enabled = false;
|
|
config.WhosTalking.Enabled = false;
|
|
return config;
|
|
}
|
|
}
|
|
|
|
[Exportable(false)]
|
|
[Section("Alliance Frames", true)]
|
|
[SubSection("Buffs", 0)]
|
|
public class AllianceFramesBuffsConfig : PartyFramesBuffsConfig
|
|
{
|
|
public new static AllianceFramesBuffsConfig DefaultConfig()
|
|
{
|
|
var durationConfig = new LabelConfig(new Vector2(0, -4), "", DrawAnchor.Bottom, DrawAnchor.Center);
|
|
var stacksConfig = new LabelConfig(new Vector2(-3, 4), "", DrawAnchor.TopRight, DrawAnchor.Center);
|
|
stacksConfig.Color = new(Vector4.UnitW);
|
|
stacksConfig.OutlineColor = new(Vector4.One);
|
|
var iconConfig = new StatusEffectIconConfig(durationConfig, stacksConfig);
|
|
iconConfig.DispellableBorderConfig.Enabled = false;
|
|
iconConfig.Size = new Vector2(24, 24);
|
|
var pos = new Vector2(-2, 2);
|
|
var size = new Vector2(iconConfig.Size.X * 4 + 6, iconConfig.Size.Y);
|
|
var config = new AllianceFramesBuffsConfig(DrawAnchor.TopRight, pos, size, true, false, false, GrowthDirections.Left | GrowthDirections.Down, iconConfig);
|
|
config.Limit = 4;
|
|
config.Enabled = false;
|
|
return config;
|
|
}
|
|
public AllianceFramesBuffsConfig(DrawAnchor anchor, Vector2 position, Vector2 size, bool showBuffs, bool showDebuffs, bool showPermanentEffects,
|
|
GrowthDirections growthDirections, StatusEffectIconConfig iconConfig)
|
|
: base(anchor, position, size, showBuffs, showDebuffs, showPermanentEffects, growthDirections, iconConfig) { }
|
|
}
|
|
|
|
[Exportable(false)]
|
|
[Section("Alliance Frames", true)]
|
|
[SubSection("Debuffs", 0)]
|
|
public class AllianceFramesDebuffsConfig : PartyFramesDebuffsConfig
|
|
{
|
|
public new static AllianceFramesDebuffsConfig DefaultConfig()
|
|
{
|
|
var durationConfig = new LabelConfig(new Vector2(0, -4), "", DrawAnchor.Bottom, DrawAnchor.Center);
|
|
var stacksConfig = new LabelConfig(new Vector2(-3, 4), "", DrawAnchor.TopRight, DrawAnchor.Center);
|
|
stacksConfig.Color = new(Vector4.UnitW);
|
|
stacksConfig.OutlineColor = new(Vector4.One);
|
|
var iconConfig = new StatusEffectIconConfig(durationConfig, stacksConfig);
|
|
iconConfig.Size = new Vector2(20, 20);
|
|
iconConfig.DurationLabelConfig.Enabled = false;
|
|
iconConfig.StacksLabelConfig.Enabled = false;
|
|
var pos = new Vector2(-2, -2);
|
|
var size = new Vector2(iconConfig.Size.X * 4 + 4, iconConfig.Size.Y);
|
|
var config = new AllianceFramesDebuffsConfig(DrawAnchor.BottomRight, pos, size, false, true, false, GrowthDirections.Left | GrowthDirections.Up, iconConfig);
|
|
config.Limit = 4;
|
|
return config;
|
|
}
|
|
public AllianceFramesDebuffsConfig(DrawAnchor anchor, Vector2 position, Vector2 size, bool showBuffs, bool showDebuffs, bool showPermanentEffects,
|
|
GrowthDirections growthDirections, StatusEffectIconConfig iconConfig)
|
|
: base(anchor, position, size, showBuffs, showDebuffs, showPermanentEffects, growthDirections, iconConfig) { }
|
|
}
|
|
|
|
[Disableable(false)]
|
|
[Exportable(false)]
|
|
[Section("Alliance Frames", true)]
|
|
[SubSection("Trackers", 0)]
|
|
public class AllianceFramesTrackersConfig : PartyFramesTrackersConfig
|
|
{
|
|
public new static AllianceFramesTrackersConfig DefaultConfig()
|
|
{
|
|
var config = new AllianceFramesTrackersConfig();
|
|
config.Raise.Enabled = false;
|
|
config.Raise.Icon.Enabled = false;
|
|
config.Invuln.Enabled = false;
|
|
config.Invuln.Icon.Enabled = false;
|
|
config.Cleanse.Enabled = false;
|
|
return config;
|
|
}
|
|
}
|
|
|
|
[Exportable(false)]
|
|
[Section("Alliance Frames", true)]
|
|
[SubSection("Cooldowns", 0)]
|
|
public class AllianceFramesCooldownListConfig : PartyFramesCooldownListConfig
|
|
{
|
|
public new static AllianceFramesCooldownListConfig DefaultConfig()
|
|
{
|
|
var config = new AllianceFramesCooldownListConfig();
|
|
config.Position = new Vector2(-2, 0);
|
|
config.Size = new Vector2(40 * 8 + 6, 40);
|
|
config.Enabled = false;
|
|
return config;
|
|
}
|
|
}
|
|
|
|
/// <summary>Base config for alliance frames. Slot 0 and 1 = the two alliances the player is NOT in.</summary>
|
|
public abstract class AllianceFramesConfigBase : MovablePluginConfigObject
|
|
{
|
|
public abstract int SlotIndex { get; }
|
|
public abstract string FramesLabel { get; }
|
|
|
|
[Checkbox("Preview", isMonitored = true)]
|
|
[Order(4)]
|
|
public bool Preview = false;
|
|
|
|
[DragInt("Rows", spacing = true, isMonitored = true, min = 1, max = 8, velocity = 0.2f)]
|
|
[Order(10)]
|
|
public int Rows = 4;
|
|
|
|
[DragInt("Columns", isMonitored = true, min = 1, max = 8, velocity = 0.2f)]
|
|
[Order(11)]
|
|
public int Columns = 2;
|
|
|
|
[Anchor("Bars Anchor", isMonitored = true, spacing = true)]
|
|
[Order(15)]
|
|
public DrawAnchor BarsAnchor = DrawAnchor.TopLeft;
|
|
|
|
[Checkbox("Fill Rows First", isMonitored = true)]
|
|
[Order(20)]
|
|
public bool FillRowsFirst = true;
|
|
|
|
[Checkbox("Show when not in alliance raid", help = "When enabled, shows a placeholder frame outside raids so you can position it. Disable to hide frames entirely when not in a 24-player alliance raid.")]
|
|
[Order(25)]
|
|
public bool ShowWhenNotInRaid = false;
|
|
|
|
[NestedConfig("Title Label", 60)]
|
|
public AllianceFramesTitleLabel TitleLabelConfig = new AllianceFramesTitleLabel(Vector2.Zero, "", DrawAnchor.Left, DrawAnchor.Left);
|
|
|
|
[NestedConfig("Visibility", 200)]
|
|
public VisibilityConfig VisibilityConfig = new VisibilityConfig();
|
|
}
|
|
|
|
[Exportable(false)]
|
|
[DisableParentSettings("FrameAnchor", "UseJobColor", "UseRoleColor")]
|
|
public class AllianceFramesTitleLabel : LabelConfig
|
|
{
|
|
public AllianceFramesTitleLabel(Vector2 position, string text, DrawAnchor frameAnchor, DrawAnchor textAnchor)
|
|
: base(position, text, frameAnchor, textAnchor) { }
|
|
}
|
|
|
|
[Exportable(false)]
|
|
[Section("Alliance Frames", true)]
|
|
[SubSection("Alliance Frames 1", 0)]
|
|
public class AllianceFrames1Config : AllianceFramesConfigBase
|
|
{
|
|
public override int SlotIndex => 0;
|
|
public override string FramesLabel => "Alliance Frames 1";
|
|
|
|
public new static AllianceFrames1Config DefaultConfig()
|
|
{
|
|
var config = new AllianceFrames1Config();
|
|
config.Position = new Vector2(-ImGui.GetMainViewport().Size.X / 3 - 180, -350);
|
|
return config;
|
|
}
|
|
}
|
|
|
|
[Exportable(false)]
|
|
[Section("Alliance Frames", true)]
|
|
[SubSection("Alliance Frames 2", 0)]
|
|
public class AllianceFrames2Config : AllianceFramesConfigBase
|
|
{
|
|
public override int SlotIndex => 1;
|
|
public override string FramesLabel => "Alliance Frames 2";
|
|
|
|
public new static AllianceFrames2Config DefaultConfig()
|
|
{
|
|
var config = new AllianceFrames2Config();
|
|
config.Position = new Vector2(-ImGui.GetMainViewport().Size.X / 3 - 180, -230);
|
|
return config;
|
|
}
|
|
}
|
|
}
|