| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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<Renderer>().material = GadgetCoreAPI.GetDroidHeadMaterial(d[i] - 1000);
- ___droidBody[i].GetComponent<Renderer>().material = GadgetCoreAPI.GetDroidBodyMaterial(d[i] - 1000);
- }
- else
- {
- ___droid[i].SetActive(false);
- ___droid[i].transform.parent = __instance.transform;
- }
- }
- return false;
- }
- }
- }
|