HUDManager/HudSwap/PluginConfig.cs

111 lines
4.4 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-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
2020-07-31 17:58:56 +00:00
public Dictionary<Status, Guid> StatusLayouts { get; } = new Dictionary<Status, Guid>();
2020-07-31 17:58:56 +00:00
public Dictionary<string, Guid> JobLayouts { get; } = new Dictionary<string, Guid>();
public bool HighPriorityJobs { get; set; } = false;
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 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();
}
#pragma warning restore 618
}
2020-07-29 16:01:00 +00:00
}
}