Initial commit: AetherBags + KamiToolKit for FC Gitea
Debug Build and Test / Build against Latest Dalamud (push) Has been cancelled
Debug Build and Test / Build against Staging Dalamud (push) Has been cancelled

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-02-08 14:46:31 -05:00
commit 8db4ce6094
375 changed files with 34124 additions and 0 deletions
@@ -0,0 +1,61 @@
using System;
using System.IO;
using System.Numerics;
using System.Text.Json;
using Dalamud.Utility;
using FFXIVClientStructs.FFXIV.Component.GUI;
using KamiToolKit.Classes;
namespace KamiToolKit;
public unsafe partial class NativeAddon {
private readonly JsonSerializerOptions serializerOptions = new() {
WriteIndented = true,
IncludeFields = true,
};
private AddonConfig LoadAddonConfig() {
var directory = DalamudInterface.Instance.PluginInterface.ConfigDirectory;
var file = new FileInfo(Path.Combine(directory.FullName, $"{InternalName}.addon.json"));
if (!file.Exists) {
file.Create().Close();
var newConfig = new AddonConfig();
SaveAddonConfig(newConfig);
return newConfig;
}
AddonConfig? addonConfig;
try {
var data = File.ReadAllText(file.FullName);
addonConfig = JsonSerializer.Deserialize<AddonConfig>(data, serializerOptions);
addonConfig ??= new AddonConfig();
}
catch (Exception e) {
DalamudInterface.Instance.Log.Error(e, "Exception while deserializing AddonConfig, creating new config.");
addonConfig = new AddonConfig();
SaveAddonConfig(addonConfig);
}
return addonConfig;
}
private void SaveAddonConfig(AddonConfig addonConfig) {
var directory = DalamudInterface.Instance.PluginInterface.ConfigDirectory;
var file = new FileInfo(Path.Combine(directory.FullName, $"{InternalName}.addon.json"));
var data = JsonSerializer.Serialize(addonConfig, serializerOptions);
FilesystemUtil.WriteAllTextSafe(file.FullName, data);
}
private void SaveAddonConfig() {
var configData = new AddonConfig {
Position = new Vector2(InternalAddon->X, InternalAddon->Y),
Scale = InternalAddon->Scale / AtkUnitBase.GetGlobalUIScale(),
};
SaveAddonConfig(configData);
}
}