HUDManager/HudSwap/PluginConfig.cs

145 lines
5.9 KiB
C#
Raw Normal View History

2020-07-29 16:01:00 +00:00
using Dalamud.Configuration;
using Dalamud.Plugin;
using Newtonsoft.Json;
2020-07-29 16:01:00 +00:00
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
2020-07-29 16:01:00 +00:00
namespace HudSwap {
[Serializable]
2020-07-31 17:58:56 +00:00
public class PluginConfig : IPluginConfiguration {
2020-07-29 16:01:00 +00:00
public int Version { get; set; } = 1;
[NonSerialized]
private DalamudPluginInterface pi;
public bool FirstRun { get; set; } = true;
2020-07-30 18:41:10 +00:00
public bool UnderstandsRisks { get; set; } = false;
public bool ImportPositions { get; set; } = false;
public bool SwapsEnabled { get; set; } = false;
2020-07-29 16:01:00 +00:00
2020-07-30 17:54:13 +00:00
public HudSlot StagingSlot { get; set; } = HudSlot.Four;
2020-09-03 02:24:34 +00:00
[Obsolete("Superceded by HudConditionMatches")]
2020-07-31 17:58:56 +00:00
public Guid DefaultLayout { get; set; } = Guid.Empty;
2020-07-29 16:01:00 +00:00
2020-07-31 17:58:56 +00:00
#pragma warning disable CA1051 // Do not declare visible instance fields
[Obsolete("Individual layout fields are deprecated; use StatusLayouts instead")]
public Guid combatLayout = Guid.Empty;
[Obsolete("Individual layout fields are deprecated; use StatusLayouts instead")]
public Guid weaponDrawnLayout = Guid.Empty;
[Obsolete("Individual layout fields are deprecated; use StatusLayouts instead")]
public Guid instanceLayout = Guid.Empty;
[Obsolete("Individual layout fields are deprecated; use StatusLayouts instead")]
public Guid craftingLayout = Guid.Empty;
[Obsolete("Individual layout fields are deprecated; use StatusLayouts instead")]
public Guid gatheringLayout = Guid.Empty;
[Obsolete("Individual layout fields are deprecated; use StatusLayouts instead")]
public Guid fishingLayout = Guid.Empty;
[Obsolete("Individual layout fields are deprecated; use StatusLayouts instead")]
public Guid roleplayingLayout = Guid.Empty;
2020-07-31 17:58:56 +00:00
#pragma warning restore CA1051 // Do not declare visible instance fields
[Obsolete("Superceded by HudConditionMatches")]
2020-07-31 17:58:56 +00:00
public Dictionary<Status, Guid> StatusLayouts { get; } = new Dictionary<Status, Guid>();
[Obsolete("Superceded by HudConditionMatches")]
2020-07-31 17:58:56 +00:00
public Dictionary<string, Guid> JobLayouts { get; } = new Dictionary<string, Guid>();
[Obsolete("Superceded by HudConditionMatches")]
public bool HighPriorityJobs { get; set; } = false;
[Obsolete("Superceded by HudConditionMatches")]
public bool JobsCombatOnly { get; set; } = false;
2020-07-29 16:01:00 +00:00
[Obsolete("Use Layouts2 instead")]
public Dictionary<Guid, Tuple<string, byte[]>> Layouts { get; } = new Dictionary<Guid, Tuple<string, byte[]>>();
public Dictionary<Guid, Layout> Layouts2 { get; } = new Dictionary<Guid, Layout>();
2020-07-29 16:01:00 +00:00
public List<HudConditionMatch> HudConditionMatches { get; } = new List<HudConditionMatch>();
2020-07-29 16:01:00 +00:00
public void Initialize(DalamudPluginInterface pluginInterface) {
this.pi = pluginInterface;
this.Migrate();
this.Save();
2020-07-29 16:01:00 +00:00
}
public void Save() {
this.pi.SavePluginConfig(this);
}
private void Migrate() {
#pragma warning disable 618
if (this.combatLayout != Guid.Empty) {
this.StatusLayouts[Status.InCombat] = this.combatLayout;
this.combatLayout = Guid.Empty;
}
if (this.weaponDrawnLayout != Guid.Empty) {
this.StatusLayouts[Status.WeaponDrawn] = this.weaponDrawnLayout;
this.weaponDrawnLayout = Guid.Empty;
}
if (this.instanceLayout != Guid.Empty) {
this.StatusLayouts[Status.InInstance] = this.instanceLayout;
this.instanceLayout = Guid.Empty;
}
if (this.craftingLayout != Guid.Empty) {
this.StatusLayouts[Status.Crafting] = this.craftingLayout;
this.craftingLayout = Guid.Empty;
}
if (this.gatheringLayout != Guid.Empty) {
this.StatusLayouts[Status.Gathering] = this.gatheringLayout;
this.gatheringLayout = Guid.Empty;
}
if (this.fishingLayout != Guid.Empty) {
this.StatusLayouts[Status.Fishing] = this.fishingLayout;
this.fishingLayout = Guid.Empty;
}
if (this.roleplayingLayout != Guid.Empty) {
this.StatusLayouts[Status.Roleplaying] = this.roleplayingLayout;
this.roleplayingLayout = Guid.Empty;
}
if (this.Layouts.Count != 0) {
foreach (KeyValuePair<Guid, Tuple<string, byte[]>> entry in this.Layouts) {
Layout layout = new Layout(entry.Value.Item1, entry.Value.Item2, new Dictionary<string, Vector2<short>>());
this.Layouts2.Add(entry.Key, layout);
}
this.Layouts.Clear();
}
if (this.JobLayouts.Count != 0) {
2020-09-03 02:24:34 +00:00
foreach (var jobLayout in this.JobLayouts) {
this.HudConditionMatches.Add(new HudConditionMatch() {
ClassJob = jobLayout.Key,
Status = JobsCombatOnly ? Status.InCombat : default,
LayoutId = jobLayout.Value
});
2020-09-03 02:24:34 +00:00
}
this.JobLayouts.Clear();
}
if (this.StatusLayouts.Count != 0) {
foreach (var statusLayout in this.StatusLayouts) {
2020-09-03 02:24:34 +00:00
var match = new HudConditionMatch() {
Status = statusLayout.Key,
LayoutId = statusLayout.Value
};
if (this.HighPriorityJobs) {
this.HudConditionMatches.Add(match);
2020-09-03 02:24:34 +00:00
} else {
this.HudConditionMatches.Insert(0, match);
2020-09-03 02:24:34 +00:00
}
}
this.StatusLayouts.Clear();
}
#pragma warning restore 618
}
2020-07-29 16:01:00 +00:00
}
}