Initial commit: AetherBags + KamiToolKit for FC Gitea
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using FFXIVClientStructs.FFXIV.Component.GUI;
|
||||
using Lumina.Text.ReadOnly;
|
||||
|
||||
namespace KamiToolKit;
|
||||
|
||||
public abstract unsafe partial class NativeAddon {
|
||||
public void SetWindowPosition(Vector2 windowPosition) {
|
||||
if (InternalAddon is null) return;
|
||||
InternalAddon->SetPosition((short)windowPosition.X, (short)windowPosition.Y);
|
||||
}
|
||||
|
||||
public void SetWindowSize(Vector2 windowSize) {
|
||||
if (InternalAddon is null) return;
|
||||
|
||||
Size = windowSize;
|
||||
InternalAddon->SetSize((ushort)Size.X, (ushort)Size.Y);
|
||||
|
||||
WindowNode?.Size = Size;
|
||||
}
|
||||
|
||||
protected void SetWindowSize(float width, float height)
|
||||
=> SetWindowSize(new Vector2(width, height));
|
||||
|
||||
public required string InternalName {
|
||||
get;
|
||||
init => field = new string(value.Replace(" ", "").Take(31).ToArray());
|
||||
}
|
||||
|
||||
public required ReadOnlySeString Title { get; set; }
|
||||
|
||||
public ReadOnlySeString? Subtitle { get; set; }
|
||||
|
||||
public int OpenWindowSoundEffectId { get; set; } = 23;
|
||||
|
||||
public Vector2 Size { get; set; } = new(400.0f, 400.0f);
|
||||
|
||||
public Vector2 ContentStartPosition => (WindowNode?.ContentStartPosition ?? Vector2.Zero) + ContentPadding;
|
||||
|
||||
public Vector2 ContentSize => (WindowNode?.ContentSize ?? Vector2.Zero) - ContentPadding * 2.0f - new Vector2(0.0f, 4.0f);
|
||||
|
||||
public Vector2 ContentPadding { get; set; } = new(8.0f, 0.0f);
|
||||
|
||||
public int DepthLayer { get; init; } = 5;
|
||||
|
||||
public bool IsOpen => InternalAddon is not null && InternalAddon->IsVisible;
|
||||
|
||||
public int AddonId => InternalAddon is null ? 0 : InternalAddon->Id;
|
||||
|
||||
public bool RememberClosePosition { get; set; } = true;
|
||||
|
||||
internal Vector2 LastClosePosition = Vector2.Zero;
|
||||
|
||||
public static implicit operator AtkUnitBase*(NativeAddon addon) => addon.InternalAddon;
|
||||
|
||||
internal bool IsOverlayAddon { get; init; }
|
||||
}
|
||||
Reference in New Issue
Block a user