From 68db09d5280bbfe1f901379919713bc86bfce7c7 Mon Sep 17 00:00:00 2001 From: Limiana <5073202+Limiana@users.noreply.github.com> Date: Wed, 25 Dec 2024 04:07:11 +0300 Subject: [PATCH] Script changelogs and update notifications --- Splatoon/Gui/CGui.cs | 3 +- Splatoon/Gui/Scripting/ScriptUpdateWindow.cs | 45 +++++++++++++++++-- Splatoon/Splatoon.csproj | 2 +- .../SplatoonScripting/ScriptingProcessor.cs | 1 + SplatoonScripts/Tests/GenericTest4.cs | 4 +- 5 files changed, 47 insertions(+), 8 deletions(-) diff --git a/Splatoon/Gui/CGui.cs b/Splatoon/Gui/CGui.cs index 7472a770..37bfd863 100644 --- a/Splatoon/Gui/CGui.cs +++ b/Splatoon/Gui/CGui.cs @@ -34,6 +34,7 @@ internal static float WidthElement public bool Open = false; bool WasOpen = false; float RightWidth = 0; + internal string TabRequest = null; public CGui(Splatoon p) { @@ -115,7 +116,7 @@ void Draw() }, false); ImGui.SetCursorPos(curCursor); - ImGuiEx.EzTabBar("SplatoonSettings", + ImGuiEx.EzTabBar("SplatoonSettings", null, TabRequest, ("General".Loc() + "###tab1", DisplayGeneralSettings, null, true), ("Render".Loc() + "###tab2", DisplayRenderers, null, true), ("Layouts".Loc(), DislayLayouts, Colors.Green.ToVector4(), true), diff --git a/Splatoon/Gui/Scripting/ScriptUpdateWindow.cs b/Splatoon/Gui/Scripting/ScriptUpdateWindow.cs index 06863dca..e6ee6d73 100644 --- a/Splatoon/Gui/Scripting/ScriptUpdateWindow.cs +++ b/Splatoon/Gui/Scripting/ScriptUpdateWindow.cs @@ -1,6 +1,7 @@ using Dalamud.Game.ClientState.Conditions; using Dalamud.Interface.Colors; using Dalamud.Interface.Windowing; +using ECommons; using ECommons.ChatMethods; using ECommons.ExcelServices; using ECommons.GameHelpers; @@ -31,8 +32,10 @@ public override void Draw() { ImGui.TableSetupColumn("1", ImGuiTableColumnFlags.WidthStretch); ImGui.TableSetupColumn("2"); + foreach(var x in UpdatedScripts) { + ImGui.PushID(x.InternalData.FullName); ImGui.TableNextRow(); ImGui.TableNextColumn(); ImGui.AlignTextToFramePadding(); @@ -41,9 +44,20 @@ public override void Draw() if(change != null) { ImGui.Indent(); - ImGuiEx.Text(ImGuiColors.DalamudGrey, change); + ImGuiEx.TextWrapped(ImGuiColors.DalamudGrey, change); ImGui.Unindent(); } + ImGui.TableNextColumn(); + if(ImGuiEx.IconButton(FontAwesomeIcon.Cog)) + { + P.ConfigGui.Open = true; + P.ConfigGui.TabRequest = "Scripts".Loc(); + Svc.Framework.RunOnTick(() => + { + TabScripting.RequestOpen = x.InternalData.FullName; + }, delayTicks:2); + } + ImGui.PopID(); } ImGui.EndTable(); } @@ -51,10 +65,33 @@ public override void Draw() } if(FailedScripts.Count > 0) { - ImGuiEx.TextWrapped($"The following scripts have failed to load."); - foreach(var x in FailedScripts) + ImGuiEx.TextWrapped($"The following scripts have failed to load. "); + if(ImGui.BeginTable("##table1", 2, ImGuiTableFlags.NoSavedSettings | ImGuiTableFlags.Borders | ImGuiTableFlags.RowBg | ImGuiTableFlags.SizingFixedFit)) { - ImGuiEx.Text($"{x}"); + ImGui.TableSetupColumn("1", ImGuiTableColumnFlags.WidthStretch); + ImGui.TableSetupColumn("2"); + + var rep = Path.Combine(Svc.PluginInterface.ConfigDirectory.FullName, "Scripts"); + foreach(var x in FailedScripts) + { + ImGui.PushID(x); + ImGui.TableNextRow(); + ImGui.TableNextColumn(); + ImGui.AlignTextToFramePadding(); + ImGuiEx.TextWrapped($"{x.Replace(rep, "..")}"); + ImGui.TableNextColumn(); + if(ImGuiEx.IconButton(FontAwesomeIcon.Trash)) + { + new TickScheduler(() => + { + FailedScripts.Remove(x); + GenericHelpers.DeleteFileToRecycleBin(x); + }); + } + ImGuiEx.Tooltip("Delete this script"); + ImGui.PopID(); + } + ImGui.EndTable(); } } } diff --git a/Splatoon/Splatoon.csproj b/Splatoon/Splatoon.csproj index a953b064..50c8e293 100644 --- a/Splatoon/Splatoon.csproj +++ b/Splatoon/Splatoon.csproj @@ -2,7 +2,7 @@ NightmareXIV - 3.7.4.1 + 3.7.4.2 diff --git a/Splatoon/SplatoonScripting/ScriptingProcessor.cs b/Splatoon/SplatoonScripting/ScriptingProcessor.cs index a4ac1a45..07d4ce92 100644 --- a/Splatoon/SplatoonScripting/ScriptingProcessor.cs +++ b/Splatoon/SplatoonScripting/ScriptingProcessor.cs @@ -364,6 +364,7 @@ internal static void CompileAndLoad(string sourceCode, string fpath) if (previousVersion > 0) { instance.OnScriptUpdated(previousVersion); + P.ScriptUpdateWindow.UpdatedScripts.RemoveAll(x => x.InternalData.FullName == instance.InternalData.FullName); P.ScriptUpdateWindow.UpdatedScripts.Add(instance); PluginLog.Debug($"Detected version update for {instance}"); } diff --git a/SplatoonScripts/Tests/GenericTest4.cs b/SplatoonScripts/Tests/GenericTest4.cs index 26df96f0..f7ebbb78 100644 --- a/SplatoonScripts/Tests/GenericTest4.cs +++ b/SplatoonScripts/Tests/GenericTest4.cs @@ -18,9 +18,9 @@ #pragma warning disable namespace SplatoonScriptsOfficial.Tests; public unsafe class GenericTest4 : SplatoonScript -{ +{ public override HashSet? ValidTerritories => new(); - public override Metadata? Metadata { get; } = new(3, "NightmareXIV"); + public override Metadata? Metadata { get; } = new(1, "NightmareXIV"); int a1; string Filter = "";