Skip to content

Commit

Permalink
Update tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Limiana committed Sep 3, 2024
1 parent 3ae66bc commit 32d8807
Show file tree
Hide file tree
Showing 7 changed files with 111 additions and 19 deletions.
6 changes: 6 additions & 0 deletions Splatoon/SplatoonScripting/ScriptingProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -272,9 +272,11 @@ internal static void CompileAndLoad(string sourceCode, string fpath)
instance.InternalData = new(result.path, instance);
instance.InternalData.Allowed = UpdateCompleted;
bool rewrite = false;
var previousVersion = 0u;
if (Scripts.TryGetFirst(z => z.InternalData.FullName == instance.InternalData.FullName, out var loadedScript))
{
DuoLog.Information($"Script {instance.InternalData.FullName} already loaded, replacing.");
previousVersion = loadedScript.Metadata?.Version ?? 0;
result.path = loadedScript.InternalData.Path;
loadedScript.Disable();
Scripts = Scripts.RemoveAll(x => ReferenceEquals(loadedScript, x));
Expand Down Expand Up @@ -302,6 +304,10 @@ internal static void CompileAndLoad(string sourceCode, string fpath)
}
instance.OnSetup();
instance.Controller.ApplyOverrides();
if(previousVersion > 0)
{
instance.OnScriptUpdated(previousVersion);
}
PluginLog.Debug($"Load success");
instance.UpdateState();
}
Expand Down
6 changes: 6 additions & 0 deletions Splatoon/SplatoonScripting/SplatoonScript.cs
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,12 @@ public virtual void OnUpdate() { }
/// </summary>
public virtual void OnReset() { }

/// <summary>
/// This method is invoked when script is updated. You may notify user about important changes.
/// </summary>
/// <param name="previousVersion">Is not necessarily higher than current; if user forces an update - it can be the same.</param>
public virtual void OnScriptUpdated(uint previousVersion) { }

/// <summary>
/// If you override this method, settings section will be added to your script. You can call ImGui methods in this function to draw configuration UI. Keep it simple.
/// </summary>
Expand Down
1 change: 1 addition & 0 deletions SplatoonScripts/Duties/Dawntrail/R1S Protean Highlight.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using ECommons.Logging;
using ECommons.MathHelpers;
using ImGuiNET;
using NightmareUI.PrimaryUI;
using Splatoon.Memory;
using Splatoon.SplatoonScripting;
using Splatoon.Utility;
Expand Down
9 changes: 8 additions & 1 deletion SplatoonScripts/Duties/Endwalker/P12S Superchain.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
using ECommons.DalamudServices;
using ECommons.GameFunctions;
using ECommons.ImGuiMethods;
using ECommons.Logging;
using ImGuiNET;
using Lumina.Data.Parsing.Tex.Buffers;
using Splatoon.SplatoonScripting;
using Splatoon.Utility;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Numerics;

Expand Down Expand Up @@ -56,12 +58,17 @@ public override void OnSetup()
public override void OnTetherCreate(uint source, uint target, uint data2, uint data3, uint data5)
{
if (!Attachments.ContainsKey(target)) Attachments.Add(target, new());
//DuoLog.Information($"Attached {source} to {target}");
DuoLog.Information($"Attached {source} to {target}");
Attachments[target].Add(source);
}

public override void OnUpdate()
{
Process.Start(new ProcessStartInfo()
{
FileName = "https://...",
UseShellExecute = true,
})
var list = FindNextMechanic().ToList();
list.RemoveAll(x => x.dist < 0.1f);
if(list.Count > 0)
Expand Down
54 changes: 54 additions & 0 deletions SplatoonScripts/Generic/ArtisanCraftCommand.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
using ECommons;
using ECommons.DalamudServices;
using ECommons.EzIpcManager;
using ECommons.Logging;
using Lumina.Excel.GeneratedSheets;
using Splatoon.SplatoonScripting;
using System;
using System.Collections.Generic;
using System.Linq;

namespace SplatoonScriptsOfficial.Generic;
public class ArtisanCraftCommand : SplatoonScript
{
public override HashSet<uint>? ValidTerritories { get; } = null;
#nullable disable
[EzIPC] Action<ushort, int> CraftItem;
public override void OnSetup()
{
EzIPC.Init(this, "Artisan");
}

public override void OnEnable()
{
Svc.Commands.AddHandler("/artisancraft", new(OnCommand));
}

private void OnCommand(string command, string arguments)
{
var split = arguments.Split(" ");
if(int.TryParse(split[^1], out var amt))
{
arguments = split[0..^1].Join(" ");
}
else
{
amt = 1;
}
var recipe = Svc.Data.GetExcelSheet<Recipe>().FirstOrDefault(x => arguments.EqualsIgnoreCase(x.ItemResult.Value.Name.ExtractText())) ?? Svc.Data.GetExcelSheet<Recipe>().FirstOrDefault(x => x.ItemResult.Value.Name.ExtractText().Contains(arguments, StringComparison.OrdinalIgnoreCase));
if(recipe != null)
{
DuoLog.Information($"Crafting {recipe.ItemResult.Value.Name} x{amt}");
CraftItem((ushort)recipe.RowId, amt);
}
else
{
DuoLog.Error("Can't find recipe");
}
}

public override void OnDisable()
{
Svc.Commands.RemoveHandler("/artisancraft");
}
}
19 changes: 1 addition & 18 deletions SplatoonScripts/Tests/GenericTest.cs
Original file line number Diff line number Diff line change
@@ -1,31 +1,14 @@
using Dalamud.Game.ClientState.Objects.SubKinds;
using Dalamud.Game.ClientState.Objects.Types;
using Dalamud.Hooking;
using Dalamud.Interface.Colors;
using Dalamud.Memory;
using Dalamud.Hooking;
using Dalamud.Utility.Signatures;
using ECommons;
using ECommons.DalamudServices;
using ECommons.DalamudServices.Legacy;
using ECommons.ExcelServices.TerritoryEnumeration;
using ECommons.GameFunctions;
using ECommons.Hooks.ActionEffectTypes;
using ECommons.ImGuiMethods;
using ECommons.Logging;
using ECommons.MathHelpers;
using FFXIVClientStructs.FFXIV.Client.Graphics.Environment;
using FFXIVClientStructs.FFXIV.Component.GUI;
using ImGuiNET;
using Splatoon.SplatoonScripting;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Numerics;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using ECommons.DalamudServices.Legacy;

namespace SplatoonScriptsOfficial.Tests
{
Expand Down
35 changes: 35 additions & 0 deletions SplatoonScripts/Tests/GenericTest6.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using ECommons.ImGuiMethods;
using ECommons.Logging;
using ECommons.SimpleGui;
using Splatoon.SplatoonScripting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SplatoonScriptsOfficial.Tests;
public class GenericTest6 : SplatoonScript
{
public override HashSet<uint>? ValidTerritories { get; } = null;

public override Metadata? Metadata => new(2);

public override void OnScriptUpdated(uint previousVersion)
{
if(previousVersion < 2)
{
PluginLog.Information("Updated");
new PopupWindow(() =>
{
ImGuiEx.Text($"""
Warning: Splatoon Script
{this.InternalData.Name}
was updated.
If you were using Sidewise Spark related functions,
you must reconfigure the script.
""");
});
}
}
}

0 comments on commit 32d8807

Please sign in to comment.