| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- using GadgetCore.API;
- using GadgetCore.Util;
- using HarmonyLib;
- using System.Collections;
- using UnityEngine;
- namespace ShipDecorations.Patches
- {
- [HarmonyPatch(typeof(KylockeStand))]
- [HarmonyPatch("Set")]
- [HarmonyGadget("ShipDecorations")]
- public static class Patch_KylockeStand_Set
- {
- [HarmonyPostfix]
- public static bool Prefix(KylockeStand __instance, int[] p)
- {
- if(animate == null)
- {
- animate = true;
- foreach (var gadget in GadgetCore.API.Gadgets.ListAllEnabledGadgets())
- if (gadget.Info?.ModName == "More Lights")
- {
- animate = false;
- break;
- }
- }
- if (animate ?? false)
- __instance.StartCoroutine(DoUpdateLampAnimation(__instance));
- if (Core.itemStoreList.Contains(p[0]))
- __instance.StartCoroutine(DoUpdateLoadingAnimation(__instance));
- if (p[0] == Core.itemStoreList[0])
- {
- __instance.itemID = p[0];
- __instance.cost = p[1];
- __instance.icon.GetComponent<Renderer>().material = (Material)Resources.Load("i/i" + __instance.itemID.ToString());
- __instance.txtCost[0].text = string.Empty + __instance.cost.ToString();
- __instance.txtCost[1].text = __instance.txtCost[0].text;
- __instance.txtName[0].text = string.Empty + ItemRegistry.GetItem(__instance.itemID).GetName();
- __instance.txtName[1].text = __instance.txtName[0].text;
- __instance.StartCoroutine(Patch_KylockeStand_Set.DoUpdatePlatformStand(__instance));
- return false;
- }
- return true;
- }
- private static IEnumerator DoUpdatePlatformStand(KylockeStand instance)
- {
- instance.isBuild = true;
- instance.isCredits = false;
- instance.isTrophies = false;
- instance.currency.GetComponent<Renderer>().material = (Material)Resources.Load("i/i57");
- yield break;
- }
- private static bool? animate = null;
- private static IEnumerator DoUpdateLampAnimation(KylockeStand instance)
- {
- if (!GameScript.inInstance)
- {
- instance.GetComponent<AudioSource>().PlayOneShot((AudioClip)Resources.Load("Au/shipdroid" + UnityEngine.Random.Range(0, 3)), Menuu.soundLevel / 10f);
- }
- var scale = instance.icon.transform.localScale;
- instance.icon.transform.localScale = new Vector3(scale.x * 0.90f, scale.y);
- yield return new WaitForSeconds(0.05f);
- instance.icon.transform.localScale = new Vector3(scale.x * 0.76f, scale.y);
- yield return new WaitForSeconds(0.05f);
- instance.icon.transform.localScale = new Vector3(scale.x * 0.70f, scale.y);
- yield return new WaitForSeconds(0.05f);
- instance.icon.transform.localScale = new Vector3(scale.x * 0.76f, scale.y);
- yield return new WaitForSeconds(0.05f);
- instance.icon.transform.localScale = new Vector3(scale.x * 0.90f, scale.y);
- yield return new WaitForSeconds(0.05f);
- instance.icon.transform.localScale = new Vector3(scale.y, scale.y);
- }
- private static Texture2D textureStand0 = GadgetCoreAPI.LoadTexture2D("stand0.png");
- private static Texture2D textureStand1 = GadgetCoreAPI.LoadTexture2D("stand1.png");
- private static Texture2D textureStand2 = GadgetCoreAPI.LoadTexture2D("stand2.png");
- private static Texture2D textureStand3 = GadgetCoreAPI.LoadTexture2D("stand3.png");
- private static Texture2D textureStand4 = GadgetCoreAPI.LoadTexture2D("stand4.png");
- private static Texture2D textureStand5 = GadgetCoreAPI.LoadTexture2D("stand5.png");
- private static Texture2D textureStand6 = GadgetCoreAPI.LoadTexture2D("stand6.png");
- private static IEnumerator DoUpdateLoadingAnimation(KylockeStand instance)
- {
- UpdateTexture(instance, textureStand0);
- yield return new WaitForSeconds(1.43f);
- UpdateTexture(instance, textureStand1);
- yield return new WaitForSeconds(1.43f);
- UpdateTexture(instance, textureStand2);
- yield return new WaitForSeconds(1.43f);
- UpdateTexture(instance, textureStand3);
- yield return new WaitForSeconds(1.43f);
- UpdateTexture(instance, textureStand4);
- yield return new WaitForSeconds(1.43f);
- UpdateTexture(instance, textureStand5);
- yield return new WaitForSeconds(1.43f);
- UpdateTexture(instance, textureStand6);
- }
- private static void UpdateTexture(KylockeStand instance, Texture2D texture)
- {
- Renderer renderer = instance.gameObject.transform.GetChild(0).gameObject.GetComponentInChildren<Renderer>();
- renderer.material = new Material(Shader.Find("Unlit/Transparent"))
- {
- mainTexture = texture
- };
- }
- }
- }
|