SRMP-Public/SRMP/Patches/Patch_ExchangeAcceptor.cs
2023-05-29 22:23:11 +02:00

78 lines
No EOL
2.7 KiB
C#

using HarmonyLib;
using SRMultiplayer.Networking;
using SRMultiplayer.Packets;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
namespace SRMultiplayer.Patches
{
[HarmonyPatch(typeof(ExchangeAcceptor))]
[HarmonyPatch("OnTriggerEnter")]
class ExchangeAcceptor_OnTriggerEnter
{
static bool Prefix(ExchangeAcceptor __instance, Collider col)
{
if (!Globals.IsMultiplayer) return true;
var netActor = col.GetComponent<NetworkActor>();
return (netActor != null && netActor.IsLocal);
}
}
[HarmonyPatch(typeof(ExchangeRewardItemEntryUI))]
[HarmonyPatch("SetEntry")]
class ExchangeRewardItemEntryUI_SetEntry
{
static bool Prefix(ExchangeRewardItemEntryUI __instance, ExchangeDirector.ItemEntry entry)
{
if (entry == null)
{
__instance.gameObject.SetActive(false);
return false;
}
__instance.gameObject.SetActive(true);
if (entry.specReward != ExchangeDirector.NonIdentReward.NONE)
{
__instance.icon.sprite = SRSingleton<SceneContext>.Instance.ExchangeDirector.GetSpecRewardIcon(entry.specReward);
__instance.amountText.text = __instance.GetCountDisplayForReward(entry.specReward);
return false;
}
__instance.icon.sprite = SRSingleton<GameContext>.Instance.LookupDirector.GetIcon(entry.id);
__instance.amountText.text = entry.count.ToString();
return false;
}
}
[HarmonyPatch(typeof(ExchangeProgressItemEntryUI))]
[HarmonyPatch("SetEntry")]
class ExchangeProgressItemEntryUI_SetEntry
{
static bool Prefix(ExchangeProgressItemEntryUI __instance, ExchangeDirector.RequestedItemEntry entry)
{
if (entry == null)
{
__instance.gameObject.SetActive(false);
return false;
}
__instance.gameObject.SetActive(true);
if (entry.specReward != ExchangeDirector.NonIdentReward.NONE)
{
__instance.icon.sprite = SRSingleton<SceneContext>.Instance.ExchangeDirector.GetSpecRewardIcon(entry.specReward);
}
else
{
__instance.icon.sprite = SRSingleton<GameContext>.Instance.LookupDirector.GetIcon(entry.id);
}
__instance.progressText.text = SRSingleton<GameContext>.Instance.MessageDirector.GetBundle("ui").Get("l.exchange_progress", new object[]
{
entry.progress,
entry.count
});
return false;
}
}
}