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

56 lines
No EOL
1.5 KiB
C#

using HarmonyLib;
using MonomiPark.SlimeRancher.DataModel;
using SRMultiplayer.Packets;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SRMultiplayer.Patches
{
[HarmonyPatch(typeof(EconomyDirector))]
[HarmonyPatch("RegisterSold")]
class EconomyDirector_RegisterSold
{
static void Postfix(EconomyDirector __instance, Identifiable.Id id, int count)
{
if (!Globals.IsMultiplayer || Globals.HandlePacket) return;
if (Globals.IsClient)
{
new PacketWorldMarketSold()
{
Ident = (ushort)id,
Count = count
}.Send();
}
}
}
[HarmonyPatch(typeof(EconomyDirector))]
[HarmonyPatch("ResetPrices")]
class EconomyDirector_ResetPrices
{
static bool Prefix(EconomyDirector __instance)
{
if (!Globals.IsMultiplayer) return true;
return Globals.IsServer;
}
static void Postfix(EconomyDirector __instance, WorldModel worldModel)
{
if (!Globals.IsMultiplayer) return;
if (Globals.IsServer)
{
new PacketWorldMarketPrices()
{
Prices = __instance.currValueMap.ToDictionary(k => (ushort)k.Key, v => v.Value),
Saturation = worldModel.marketSaturation.ToDictionary(k => (ushort)k.Key, v => v.Value)
}.Send();
}
}
}
}