diff --git a/Behaviours/SteamGiftPhysicsProp.cs b/Behaviours/SteamGiftPhysicsProp.cs index 16ac167..6cb6087 100644 --- a/Behaviours/SteamGiftPhysicsProp.cs +++ b/Behaviours/SteamGiftPhysicsProp.cs @@ -1,5 +1,4 @@ -using Unity.Netcode; -using UnityEngine; +using UnityEngine; namespace DingusThings.Behaviours { @@ -23,9 +22,9 @@ public override void ItemActivate(bool used, bool buttonDown = true) { AssetBundle? bundle = DingusThings.Bundle; string itemName = "Steam Gift Card"; - + // find a terminal - Terminal terminal = FindFirstObjectByType(); + Terminal terminal = DingusThings.GetTerminalInstance(); if (terminal != null) { // add scrap value to terminal diff --git a/DingusThings.cs b/DingusThings.cs index 32084a1..640874a 100644 --- a/DingusThings.cs +++ b/DingusThings.cs @@ -1,6 +1,7 @@ using BepInEx; using BepInEx.Logging; using DingusThings.Behaviours; +using DingusThings.Patches; using HarmonyLib; using LethalLib.Modules; using System.IO; @@ -21,6 +22,25 @@ public class DingusThings : BaseUnityPlugin public static string PluginString = $"{MyPluginInfo.PLUGIN_NAME} v{MyPluginInfo.PLUGIN_VERSION}"; + private static Terminal? terminalInstance; + + public static void SetTerminalInstance(Terminal terminal) + { + terminalInstance = terminal; + } + + public static Terminal? GetTerminalInstance() + { + if (terminalInstance != null) + { + return terminalInstance; + } + else + { + return null; + } + } + private void Awake() { Logger = base.Logger; @@ -35,6 +55,10 @@ private void Awake() return; } + // load patches + Harmony.CreateAndPatchAll(typeof(TerminalPatch)); + Harmony.CreateAndPatchAll(typeof(SteamGiftPatch)); + /// My Heart int myHeartRarity = 30; Item myHeartItem = Bundle.LoadAsset("Assets/DingusThings/Items/MyHeart.asset"); @@ -54,7 +78,7 @@ private void Awake() /// Steam Gift Card int steamGiftRarity = 50; Item steamGiftItem = Bundle.LoadAsset("Assets/DingusThings/Items/SteamGiftCard.asset"); - steamGiftItem.toolTips = ["Inspect : [ Z ]", "Redeem : [ LMB ]"]; + steamGiftItem.toolTips = ["Inspect : [ Z ]"]; SteamGiftPhysicsProp steamGiftPhysicsProp = steamGiftItem.spawnPrefab.AddComponent(); steamGiftPhysicsProp.grabbable = true; steamGiftPhysicsProp.grabbableToEnemies = true; diff --git a/Patches/SteamGiftPatch.cs b/Patches/SteamGiftPatch.cs new file mode 100644 index 0000000..a9f84af --- /dev/null +++ b/Patches/SteamGiftPatch.cs @@ -0,0 +1,18 @@ +using HarmonyLib; + +namespace DingusThings.Patches +{ + internal class SteamGiftPatch + { + [HarmonyPatch(typeof(GrabbableObject), nameof(GrabbableObject.GrabItem))] + [HarmonyPostfix] + public static void GrabbableObject_GrabItem(GrabbableObject __instance) + { + if (__instance.itemProperties.itemName == "Steam Gift Card") + { + // change tooltip on grab + HUDManager.Instance.ChangeControlTip(2, __instance.scrapValue <= 0 ? "ALREADY REDEEMED" : "Redeem : [ LMB ]"); + } + } + } +} diff --git a/Patches/TerminalPatch.cs b/Patches/TerminalPatch.cs new file mode 100644 index 0000000..c534f11 --- /dev/null +++ b/Patches/TerminalPatch.cs @@ -0,0 +1,16 @@ +using HarmonyLib; + +namespace DingusThings.Patches +{ + internal class TerminalPatch + { + // tell Harmony which class method is being targeted + [HarmonyPatch(typeof(Terminal), nameof(Terminal.Start))] + // run after original method + [HarmonyPostfix] + public static void Terminal_Start(Terminal __instance) + { + DingusThings.SetTerminalInstance(__instance); + } + } +}