Files
0A-KFCommonUtilityLib/Scripts/Items/ModularActions/ActionModuleTranspilerTest.cs
2025-06-04 16:13:32 +09:30

48 lines
1.9 KiB
C#

using HarmonyLib;
using KFCommonUtilityLib.Scripts.Attributes;
using System.Collections.Generic;
using System.Reflection.Emit;
using UnityEngine;
[TypeTarget(typeof(ItemAction))]
public class ActionModuleTranspilerTest
{
[HarmonyPatch(typeof(ItemActionAttack), nameof(ItemAction.ExecuteAction)), MethodTargetTranspiler]
private static IEnumerable<CodeInstruction> Transpiler_InvalidTest(IEnumerable<CodeInstruction> instructions)
{
yield return new CodeInstruction(OpCodes.Ldstr, "Ranged!");
yield return CodeInstruction.Call(typeof(ActionModuleTranspilerTest), nameof(ActionModuleTranspilerTest.CallSomething));
foreach (var ins in instructions)
{
yield return ins;
}
}
[HarmonyPatch(typeof(ItemActionRanged), nameof(ItemAction.ExecuteAction)), MethodTargetTranspiler]
private static IEnumerable<CodeInstruction> Transpiler_RangedTest(IEnumerable<CodeInstruction> instructions)
{
yield return new CodeInstruction(OpCodes.Ldstr, "Ranged!");
yield return CodeInstruction.Call(typeof(ActionModuleTranspilerTest), nameof(ActionModuleTranspilerTest.CallSomething));
foreach (var ins in instructions)
{
yield return ins;
}
}
[HarmonyPatch(typeof(ItemActionCatapult), nameof(ItemAction.ExecuteAction)), MethodTargetTranspiler]
private static IEnumerable<CodeInstruction> Transpiler_CatapultTest(IEnumerable<CodeInstruction> instructions)
{
yield return new CodeInstruction(OpCodes.Ldstr, "Catapult!");
yield return CodeInstruction.Call(typeof(ActionModuleTranspilerTest), nameof(ActionModuleTranspilerTest.CallSomething));
foreach (var ins in instructions)
{
yield return ins;
}
}
private static void CallSomething(string str)
{
Log.Out($"Call something: {str}\n{StackTraceUtility.ExtractStackTrace()}");
}
}