using GadgetCore.API; using HarmonyLib; using System.Reflection; using UnityEngine; namespace Ships.Patches { [HarmonyPatch(typeof(DroidManager))] [HarmonyPatch("UA")] [HarmonyGadget("Ships")] [HarmonyPriority(1010)] public static class Patch_DroidManager_UA { public static readonly MethodInfo RPCMethod = typeof(DroidManager).GetMethod("UA", BindingFlags.Public | BindingFlags.Instance); [HarmonyPrefix] public static bool Prefix(DroidManager __instance, ref int[] d, GameObject[] ___droid, GameObject[] ___droidHead, GameObject[] ___droidBody) { if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout) { __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, d)); return false; } GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref d[0]); GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref d[1]); GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref d[2]); for (int i = 0; i < 3; i++) { Core.logger.LogConsole(i + " " + d[i]); if (d[i] >= 1000) { ___droid[i].transform.parent = null; ___droid[i].SetActive(true); ___droidHead[i].GetComponent().material = GadgetCoreAPI.GetDroidHeadMaterial(d[i] - 1000); ___droidBody[i].GetComponent().material = GadgetCoreAPI.GetDroidBodyMaterial(d[i] - 1000); } else { ___droid[i].SetActive(false); ___droid[i].transform.parent = __instance.transform; } } return false; } } }