Patch_DroidManager_UA.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. using GadgetCore.API;
  2. using HarmonyLib;
  3. using System.Reflection;
  4. using UnityEngine;
  5. namespace Ships.Patches
  6. {
  7. [HarmonyPatch(typeof(DroidManager))]
  8. [HarmonyPatch("UA")]
  9. [HarmonyGadget("Ships")]
  10. [HarmonyPriority(1010)]
  11. public static class Patch_DroidManager_UA
  12. {
  13. public static readonly MethodInfo RPCMethod = typeof(DroidManager).GetMethod("UA", BindingFlags.Public | BindingFlags.Instance);
  14. [HarmonyPrefix]
  15. public static bool Prefix(DroidManager __instance, ref int[] d, GameObject[] ___droid, GameObject[] ___droidHead, GameObject[] ___droidBody)
  16. {
  17. if (!GadgetNetwork.MatrixReady && GadgetNetwork.GetTimeSinceConnect() < GadgetNetwork.MatrixTimeout)
  18. {
  19. __instance.StartCoroutine(GadgetUtils.WaitAndInvoke(RPCMethod, GadgetNetwork.MatrixTimeout - GadgetNetwork.GetTimeSinceConnect(), () => GadgetNetwork.MatrixReady, __instance, d));
  20. return false;
  21. }
  22. GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref d[0]);
  23. GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref d[1]);
  24. GadgetNetwork.ConvertIDToLocal(ItemRegistry.Singleton, ref d[2]);
  25. for (int i = 0; i < 3; i++)
  26. {
  27. Core.logger.LogConsole(i + " " + d[i]);
  28. if (d[i] >= 1000)
  29. {
  30. ___droid[i].transform.parent = null;
  31. ___droid[i].SetActive(true);
  32. ___droidHead[i].GetComponent<Renderer>().material = GadgetCoreAPI.GetDroidHeadMaterial(d[i] - 1000);
  33. ___droidBody[i].GetComponent<Renderer>().material = GadgetCoreAPI.GetDroidBodyMaterial(d[i] - 1000);
  34. }
  35. else
  36. {
  37. ___droid[i].SetActive(false);
  38. ___droid[i].transform.parent = __instance.transform;
  39. }
  40. }
  41. return false;
  42. }
  43. }
  44. }