From 74ddb9e7c69278d680ded1be5993e463296e3bed Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Sat, 5 Nov 2022 15:17:26 +0100 Subject: [PATCH] integrate new ActivityContext --- PlayerTags.sln | 10 +++- .../Configuration/PluginConfiguration.cs | 22 ++++++-- .../Configuration/PluginConfigurationUI.cs | 13 ++--- PlayerTags/Data/ActivityContext.cs | 1 + PlayerTags/Data/ActivityContextHelper.cs | 18 +++---- PlayerTags/Data/ActivityContextManager.cs | 50 ------------------- PlayerTags/Features/ChatTagTargetFeature.cs | 2 +- .../Features/NameplateTagTargetFeature.cs | 2 +- PlayerTags/Features/TagTargetFeature.cs | 3 +- PlayerTags/PlayerTags.csproj | 1 + PlayerTags/packages.lock.json | 3 ++ 11 files changed, 49 insertions(+), 76 deletions(-) delete mode 100644 PlayerTags/Data/ActivityContextManager.cs diff --git a/PlayerTags.sln b/PlayerTags.sln index c058c5e..0219690 100644 --- a/PlayerTags.sln +++ b/PlayerTags.sln @@ -1,10 +1,12 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29709.97 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32929.385 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PlayerTags", "PlayerTags\PlayerTags.csproj", "{13C812E9-0D42-4B95-8646-40EEBF30636F}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pilz.Dalamud", "..\Pilz.Dalamud\Pilz.Dalamud\Pilz.Dalamud.csproj", "{A92D2FFC-FDB8-4F28-B5DD-4A1B3EB0B1BB}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -15,6 +17,10 @@ Global {13C812E9-0D42-4B95-8646-40EEBF30636F}.Debug|x64.Build.0 = Debug|x64 {13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|x64.ActiveCfg = Release|x64 {13C812E9-0D42-4B95-8646-40EEBF30636F}.Release|x64.Build.0 = Release|x64 + {A92D2FFC-FDB8-4F28-B5DD-4A1B3EB0B1BB}.Debug|x64.ActiveCfg = Debug|x64 + {A92D2FFC-FDB8-4F28-B5DD-4A1B3EB0B1BB}.Debug|x64.Build.0 = Debug|x64 + {A92D2FFC-FDB8-4F28-B5DD-4A1B3EB0B1BB}.Release|x64.ActiveCfg = Release|x64 + {A92D2FFC-FDB8-4F28-B5DD-4A1B3EB0B1BB}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/PlayerTags/Configuration/PluginConfiguration.cs b/PlayerTags/Configuration/PluginConfiguration.cs index 245930d..7c66f13 100644 --- a/PlayerTags/Configuration/PluginConfiguration.cs +++ b/PlayerTags/Configuration/PluginConfiguration.cs @@ -1,5 +1,6 @@ using Dalamud.Configuration; using Newtonsoft.Json; +using Pilz.Dalamud.ActivityContexts; using PlayerTags.Data; using PlayerTags.Inheritables; using System; @@ -19,11 +20,24 @@ namespace PlayerTags.Configuration private const NameplateTitlePosition DefaultNameplateTitlePosition = Data.NameplateTitlePosition.AlwaysAboveName; private const bool DefaultIsApplyTagsToAllChatMessagesEnabled = true; - public Dictionary GeneralOptions = new Dictionary() + [Obsolete] + [JsonProperty("GeneralOptions")] + private Dictionary GeneralOptionsV1 { - { ActivityContext.None, new GeneralOptionsClass() }, - { ActivityContext.PveDuty, new GeneralOptionsClass() }, - { ActivityContext.PvpDuty, new GeneralOptionsClass() } + set + { + GeneralOptions.Clear(); + foreach (var kvp in value) + GeneralOptions.Add((ActivityType)kvp.Key, kvp.Value); + } + } + + [JsonProperty("GeneralOptionsV2")] + public Dictionary GeneralOptions = new() + { + { ActivityType.None, new GeneralOptionsClass() }, + { ActivityType.PveDuty, new GeneralOptionsClass() }, + { ActivityType.PvpDuty, new GeneralOptionsClass() } }; public bool IsPlayerNameRandomlyGenerated = false; diff --git a/PlayerTags/Configuration/PluginConfigurationUI.cs b/PlayerTags/Configuration/PluginConfigurationUI.cs index 078c69a..9f2f923 100644 --- a/PlayerTags/Configuration/PluginConfigurationUI.cs +++ b/PlayerTags/Configuration/PluginConfigurationUI.cs @@ -5,6 +5,7 @@ using Dalamud.Interface; using Dalamud.Logging; using ImGuiNET; using Lumina.Excel.GeneratedSheets; +using Pilz.Dalamud.ActivityContexts; using PlayerTags.Data; using PlayerTags.Inheritables; using PlayerTags.PluginStrings; @@ -1233,7 +1234,7 @@ namespace PlayerTags.Configuration applyChanges(GetActivityContext(CurrentActivityContext)); } - void applyChanges(ActivityContext key) + void applyChanges(ActivityType key) { pluginConfig.GeneralOptions[key].NameplateFreeCompanyVisibility = NameplateFreeCompanyVisibility; pluginConfig.GeneralOptions[key].NameplateTitleVisibility = NameplateTitleVisibility; @@ -1242,22 +1243,22 @@ namespace PlayerTags.Configuration } } - private ActivityContext GetActivityContext(ActivityContextSelection selection) + private ActivityType GetActivityContext(ActivityContextSelection selection) { - ActivityContext result; + ActivityType result; switch (selection) { case ActivityContextSelection.PveDuty: - result = ActivityContext.PveDuty; + result = ActivityType.PveDuty; break; case ActivityContextSelection.PvpDuty: - result = ActivityContext.PvpDuty; + result = ActivityType.PvpDuty; break; case ActivityContextSelection.All: case ActivityContextSelection.None: default: - result = ActivityContext.None; + result = ActivityType.None; break; } diff --git a/PlayerTags/Data/ActivityContext.cs b/PlayerTags/Data/ActivityContext.cs index 6b5ef7c..ec78386 100644 --- a/PlayerTags/Data/ActivityContext.cs +++ b/PlayerTags/Data/ActivityContext.cs @@ -3,6 +3,7 @@ using System; namespace PlayerTags.Data { + [Obsolete] [Flags] [JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))] public enum ActivityContext diff --git a/PlayerTags/Data/ActivityContextHelper.cs b/PlayerTags/Data/ActivityContextHelper.cs index c843b33..cf82c52 100644 --- a/PlayerTags/Data/ActivityContextHelper.cs +++ b/PlayerTags/Data/ActivityContextHelper.cs @@ -1,25 +1,21 @@ -namespace PlayerTags.Data +using Pilz.Dalamud.ActivityContexts; + +namespace PlayerTags.Data { public static class ActivityContextHelper { - public static bool GetIsVisible(ActivityContext playerContext, bool desiredPveDutyVisibility, bool desiredPvpDutyVisibility, bool desiredOthersVisibility) + public static bool GetIsVisible(ActivityType playerContext, bool desiredPveDutyVisibility, bool desiredPvpDutyVisibility, bool desiredOthersVisibility) { bool isVisible = false; - if (playerContext.HasFlag(ActivityContext.PveDuty)) - { + if (playerContext.HasFlag(ActivityType.PveDuty)) isVisible |= desiredPveDutyVisibility; - } - if (playerContext.HasFlag(ActivityContext.PvpDuty)) - { + if (playerContext.HasFlag(ActivityType.PvpDuty)) isVisible |= desiredPvpDutyVisibility; - } - if (playerContext == ActivityContext.None) - { + if (playerContext == ActivityType.None) isVisible |= desiredOthersVisibility; - } return isVisible; } diff --git a/PlayerTags/Data/ActivityContextManager.cs b/PlayerTags/Data/ActivityContextManager.cs deleted file mode 100644 index 2225db0..0000000 --- a/PlayerTags/Data/ActivityContextManager.cs +++ /dev/null @@ -1,50 +0,0 @@ -using Dalamud.Plugin; -using Lumina.Excel.GeneratedSheets; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace PlayerTags.Data -{ - public class ActivityContextManager : IDisposable - { - private ActivityContext m_CurrentActivityContext; - - public ActivityContext CurrentActivityContext => m_CurrentActivityContext; - - public ActivityContextManager() - { - m_CurrentActivityContext = ActivityContext.None; - PluginServices.ClientState.TerritoryChanged += ClientState_TerritoryChanged; - } - - private void ClientState_TerritoryChanged(object? sender, ushort e) - { - m_CurrentActivityContext = ActivityContext.None; - - var contentFinderConditionsSheet = PluginServices.DataManager.GameData.GetExcelSheet(); - if (contentFinderConditionsSheet != null) - { - var foundContentFinderCondition = contentFinderConditionsSheet.FirstOrDefault(contentFinderCondition => contentFinderCondition.TerritoryType.Row == PluginServices.ClientState.TerritoryType); - if (foundContentFinderCondition != null) - { - if (foundContentFinderCondition.PvP) - { - m_CurrentActivityContext = ActivityContext.PvpDuty; - } - else - { - m_CurrentActivityContext = ActivityContext.PveDuty; - } - } - } - } - - public void Dispose() - { - PluginServices.ClientState.TerritoryChanged -= ClientState_TerritoryChanged; - } - } -} diff --git a/PlayerTags/Features/ChatTagTargetFeature.cs b/PlayerTags/Features/ChatTagTargetFeature.cs index a3518b3..22d1560 100644 --- a/PlayerTags/Features/ChatTagTargetFeature.cs +++ b/PlayerTags/Features/ChatTagTargetFeature.cs @@ -120,7 +120,7 @@ namespace PlayerTags.Features private void Chat_ChatMessage(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled) { - if (m_PluginConfiguration.GeneralOptions[ActivityContextManager.CurrentActivityContext].IsApplyTagsToAllChatMessagesEnabled || Enum.IsDefined(type)) + if (m_PluginConfiguration.GeneralOptions[ActivityContextManager.CurrentActivityContext.ActivityType].IsApplyTagsToAllChatMessagesEnabled || Enum.IsDefined(type)) { AddTagsToChat(sender, type, true); AddTagsToChat(message, type, false); diff --git a/PlayerTags/Features/NameplateTagTargetFeature.cs b/PlayerTags/Features/NameplateTagTargetFeature.cs index 1bd6379..9e30923 100644 --- a/PlayerTags/Features/NameplateTagTargetFeature.cs +++ b/PlayerTags/Features/NameplateTagTargetFeature.cs @@ -101,7 +101,7 @@ namespace PlayerTags.Features { var beforeTitleBytes = args.Title.Encode(); AddTagsToNameplate(args.PlayerCharacter, args.Name, args.Title, args.FreeCompany); - var generalOptions = m_PluginConfiguration.GeneralOptions[ActivityContextManager.CurrentActivityContext]; + var generalOptions = m_PluginConfiguration.GeneralOptions[ActivityContextManager.CurrentActivityContext.ActivityType]; if (generalOptions.NameplateTitlePosition == NameplateTitlePosition.AlwaysAboveName) args.IsTitleAboveName = true; diff --git a/PlayerTags/Features/TagTargetFeature.cs b/PlayerTags/Features/TagTargetFeature.cs index eb2be97..ae5d457 100644 --- a/PlayerTags/Features/TagTargetFeature.cs +++ b/PlayerTags/Features/TagTargetFeature.cs @@ -4,6 +4,7 @@ using Dalamud.Game.Text.SeStringHandling; using Dalamud.Game.Text.SeStringHandling.Payloads; using FFXIVClientStructs.FFXIV.Client.Game.Object; using Lumina.Excel.GeneratedSheets; +using Pilz.Dalamud.ActivityContexts; using PlayerTags.Configuration.GameConfig; using PlayerTags.Data; using PlayerTags.Inheritables; @@ -44,7 +45,7 @@ namespace PlayerTags.Features protected bool IsTagVisible(Tag tag, GameObject? gameObject) { - bool isVisibleForActivity = ActivityContextHelper.GetIsVisible(ActivityContextManager.CurrentActivityContext, + bool isVisibleForActivity = ActivityContextHelper.GetIsVisible(ActivityContextManager.CurrentActivityContext.ActivityType, tag.IsVisibleInPveDuties.InheritedValue ?? false, tag.IsVisibleInPvpDuties.InheritedValue ?? false, tag.IsVisibleInOverworld.InheritedValue ?? false); diff --git a/PlayerTags/PlayerTags.csproj b/PlayerTags/PlayerTags.csproj index f1a8fd5..b16c921 100644 --- a/PlayerTags/PlayerTags.csproj +++ b/PlayerTags/PlayerTags.csproj @@ -26,6 +26,7 @@ + $(DalamudLibPath)FFXIVClientStructs.dll false diff --git a/PlayerTags/packages.lock.json b/PlayerTags/packages.lock.json index abf5900..d25458d 100644 --- a/PlayerTags/packages.lock.json +++ b/PlayerTags/packages.lock.json @@ -13,6 +13,9 @@ "requested": "[2.1.8, )", "resolved": "2.1.8", "contentHash": "YqagNXs9InxmqkXzq7kLveImxnodkBEicAhydMXVp7dFjC7xb76U6zGgAax4/BWIWfZeWzr5DJyQSev31kj81A==" + }, + "pilz.dalamud": { + "type": "Project" } } }