add backend possiblity to define general settings per ActivityContext & polish up the code a bit
This commit is contained in:
@@ -12,11 +12,69 @@ namespace PlayerTags.Configuration
|
||||
public class PluginConfiguration : IPluginConfiguration
|
||||
{
|
||||
public int Version { get; set; } = 0;
|
||||
|
||||
public bool IsVisible = false;
|
||||
public NameplateFreeCompanyVisibility NameplateFreeCompanyVisibility = NameplateFreeCompanyVisibility.Default;
|
||||
public NameplateTitleVisibility NameplateTitleVisibility = NameplateTitleVisibility.WhenHasTags;
|
||||
public NameplateTitlePosition NameplateTitlePosition = NameplateTitlePosition.AlwaysAboveName;
|
||||
|
||||
private const NameplateFreeCompanyVisibility DefaultNameplateFreeCompanyVisibility = Data.NameplateFreeCompanyVisibility.Default;
|
||||
private const NameplateTitleVisibility DefaultNameplateTitleVisibility = Data.NameplateTitleVisibility.WhenHasTags;
|
||||
private const NameplateTitlePosition DefaultNameplateTitlePosition = Data.NameplateTitlePosition.AlwaysAboveName;
|
||||
|
||||
[JsonProperty("NameplateFreeCompanyVisibilityV2")]
|
||||
public Dictionary<ActivityContext, NameplateFreeCompanyVisibility> NameplateFreeCompanyVisibility = new Dictionary<ActivityContext, NameplateFreeCompanyVisibility>()
|
||||
{
|
||||
{ ActivityContext.None, DefaultNameplateFreeCompanyVisibility },
|
||||
{ ActivityContext.PveDuty, DefaultNameplateFreeCompanyVisibility },
|
||||
{ ActivityContext.PvpDuty, DefaultNameplateFreeCompanyVisibility }
|
||||
};
|
||||
[JsonProperty("NameplateTitleVisibilityV2")]
|
||||
public Dictionary<ActivityContext, NameplateTitleVisibility> NameplateTitleVisibility = new Dictionary<ActivityContext, NameplateTitleVisibility>()
|
||||
{
|
||||
{ ActivityContext.None, DefaultNameplateTitleVisibility },
|
||||
{ ActivityContext.PveDuty, DefaultNameplateTitleVisibility },
|
||||
{ ActivityContext.PvpDuty, DefaultNameplateTitleVisibility }
|
||||
};
|
||||
[JsonProperty("NameplateTitlePositionV2")]
|
||||
public Dictionary<ActivityContext, NameplateTitlePosition> NameplateTitlePosition = new Dictionary<ActivityContext, NameplateTitlePosition>()
|
||||
{
|
||||
{ ActivityContext.None, DefaultNameplateTitlePosition },
|
||||
{ ActivityContext.PveDuty, DefaultNameplateTitlePosition },
|
||||
{ ActivityContext.PvpDuty, DefaultNameplateTitlePosition }
|
||||
};
|
||||
|
||||
#region Obsulate Properties
|
||||
|
||||
[JsonProperty("NameplateFreeCompanyVisibility"), Obsolete]
|
||||
private NameplateFreeCompanyVisibility NameplateFreeCompanyVisibilityV1
|
||||
{
|
||||
set
|
||||
{
|
||||
NameplateFreeCompanyVisibility[ActivityContext.None] = value;
|
||||
NameplateFreeCompanyVisibility[ActivityContext.PveDuty] = value;
|
||||
NameplateFreeCompanyVisibility[ActivityContext.PvpDuty] = value;
|
||||
}
|
||||
}
|
||||
[JsonProperty("NameplateTitleVisibility"), Obsolete]
|
||||
public NameplateTitleVisibility NameplateTitleVisibilityV1
|
||||
{
|
||||
set
|
||||
{
|
||||
NameplateTitleVisibility[ActivityContext.None] = value;
|
||||
NameplateTitleVisibility[ActivityContext.PveDuty] = value;
|
||||
NameplateTitleVisibility[ActivityContext.PvpDuty] = value;
|
||||
}
|
||||
}
|
||||
[JsonProperty("NameplateTitlePosition"), Obsolete]
|
||||
public NameplateTitlePosition NameplateTitlePositionV1
|
||||
{
|
||||
set
|
||||
{
|
||||
NameplateTitlePosition[ActivityContext.None] = value;
|
||||
NameplateTitlePosition[ActivityContext.PveDuty] = value;
|
||||
NameplateTitlePosition[ActivityContext.PvpDuty] = value;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public bool IsPlayerNameRandomlyGenerated = false;
|
||||
public bool IsCustomTagsContextMenuEnabled = true;
|
||||
public bool IsShowInheritedPropertiesEnabled = true;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Dalamud.Game.ClientState.Objects.SubKinds;
|
||||
using Dalamud.Configuration;
|
||||
using Dalamud.Game.ClientState.Objects.SubKinds;
|
||||
using Dalamud.Game.Text.SeStringHandling;
|
||||
using Dalamud.Interface;
|
||||
using Dalamud.Logging;
|
||||
@@ -25,6 +26,7 @@ namespace PlayerTags.Configuration
|
||||
|
||||
private PluginConfiguration m_PluginConfiguration;
|
||||
private PluginData m_PluginData;
|
||||
private PropertyProxy propertyProxy;
|
||||
|
||||
private InheritableValue<ushort>? m_ColorPickerPopupDataContext;
|
||||
|
||||
@@ -32,6 +34,7 @@ namespace PlayerTags.Configuration
|
||||
{
|
||||
m_PluginConfiguration = config;
|
||||
m_PluginData = pluginData;
|
||||
propertyProxy = new PropertyProxy(config);
|
||||
}
|
||||
|
||||
public void Draw()
|
||||
@@ -63,9 +66,9 @@ namespace PlayerTags.Configuration
|
||||
ImGui.Spacing();
|
||||
ImGui.Spacing();
|
||||
DrawHeading(Strings.Loc_Static_Nameplates);
|
||||
DrawComboBox(true, true, false, ref m_PluginConfiguration.NameplateFreeCompanyVisibility, () => m_PluginConfiguration.Save(m_PluginData));
|
||||
DrawComboBox(true, true, false, ref m_PluginConfiguration.NameplateTitleVisibility, () => m_PluginConfiguration.Save(m_PluginData));
|
||||
DrawComboBox(true, true, false, ref m_PluginConfiguration.NameplateTitlePosition, () => m_PluginConfiguration.Save(m_PluginData));
|
||||
DrawComboBox(true, true, false, ref propertyProxy.NameplateFreeCompanyVisibility, () => m_PluginConfiguration.Save(m_PluginData));
|
||||
DrawComboBox(true, true, false, ref propertyProxy.NameplateTitleVisibility, () => m_PluginConfiguration.Save(m_PluginData));
|
||||
DrawComboBox(true, true, false, ref propertyProxy.NameplateTitlePosition, () => m_PluginConfiguration.Save(m_PluginData));
|
||||
|
||||
|
||||
ImGui.Spacing();
|
||||
@@ -1159,5 +1162,38 @@ namespace PlayerTags.Configuration
|
||||
currentColumn++;
|
||||
}
|
||||
}
|
||||
|
||||
private class PropertyProxy
|
||||
{
|
||||
private PluginConfiguration pluginConfig;
|
||||
|
||||
public NameplateFreeCompanyVisibility NameplateFreeCompanyVisibility;
|
||||
public NameplateTitleVisibility NameplateTitleVisibility;
|
||||
public NameplateTitlePosition NameplateTitlePosition;
|
||||
|
||||
public PropertyProxy(PluginConfiguration config)
|
||||
{
|
||||
pluginConfig = config;
|
||||
}
|
||||
|
||||
public void LoadData()
|
||||
{
|
||||
NameplateFreeCompanyVisibility = pluginConfig.NameplateFreeCompanyVisibility[ActivityContext.None];
|
||||
NameplateTitleVisibility = pluginConfig.NameplateTitleVisibility[ActivityContext.None];
|
||||
NameplateTitlePosition = pluginConfig.NameplateTitlePosition[ActivityContext.None];
|
||||
}
|
||||
|
||||
public void SaveData()
|
||||
{
|
||||
foreach (var key in pluginConfig.NameplateFreeCompanyVisibility.Keys)
|
||||
pluginConfig.NameplateFreeCompanyVisibility[key] = NameplateFreeCompanyVisibility;
|
||||
|
||||
foreach (var key in pluginConfig.NameplateTitleVisibility.Keys)
|
||||
pluginConfig.NameplateTitleVisibility[key] = NameplateTitleVisibility;
|
||||
|
||||
foreach (var key in pluginConfig.NameplateTitlePosition.Keys)
|
||||
pluginConfig.NameplateTitlePosition[key] = NameplateTitlePosition;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
namespace PlayerTags.Data
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace PlayerTags.Data
|
||||
{
|
||||
[JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
|
||||
public enum NameplateFreeCompanyVisibility
|
||||
{
|
||||
Default,
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
namespace PlayerTags.Data
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace PlayerTags.Data
|
||||
{
|
||||
[JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
|
||||
public enum NameplateTitlePosition
|
||||
{
|
||||
Default,
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
namespace PlayerTags.Data
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace PlayerTags.Data
|
||||
{
|
||||
[JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
|
||||
public enum NameplateTitleVisibility
|
||||
{
|
||||
Default,
|
||||
|
||||
Reference in New Issue
Block a user