using System; using System.Linq; using Aki.Reflection.Patching; using EFT.InventoryLogic; using EFT.UI.DragAndDrop; using System.Reflection; using Aki.Reflection.Utils; using EFT.UI; using UnityEngine; using Newtonsoft.Json; namespace Test_layout { public class Test_layoutPatch : ModulePatch { protected override MethodBase GetTargetMethod() { var typesToCheck = PatchConstants.EftTypes; var afterChecks = typesToCheck.First(IsTargetType); Debug.LogError($"AfterChecks: {afterChecks.Name}"); var methodToCheck = afterChecks.GetMethod("OnModChanged", PatchConstants.PublicFlags); Debug.LogError($"methodName: {methodToCheck.Name}"); return methodToCheck; } private bool IsTargetType(Type type) { Debug.LogError($"type name: {type.Name}"); var fieldsToCheck = type.GetFields(); if (fieldsToCheck.Length == 4 && fieldsToCheck.Any(x => x.Name == "item_0") && fieldsToCheck.Any(x => x.Name == "slot_0") && fieldsToCheck.Any(x => x.Name == "callback_0")) { Debug.LogError("type found mother fucker"); return true; } return false; } [PatchPostfix] private static void PatchPostfix(ref ContainedGridsView __result, Item item, ContainedGridsView containedGridsTemplate) { Debug.LogError(item.TemplateId); if (item.TemplateId != "5648a69d4bdc2ded0b8b457b") return; Debug.LogError("Test!"); foreach (var gridView in __result.GridViews) { Debug.LogError(JsonConvert.SerializeObject(gridView)); } var test = new GridView(); test.enabled = true; test.Grid = new GClass2317("1", 1, 2, false, false, Array.Empty(), new LootItemClass("test", new GClass2348())); test.IsMagnified = false; test.name = "GridView 1"; test.tag = "Untagged"; __result.GridViews = new[] { test }; } } }