Files
BoneSync/BoneSync/Patching/GunPatches.cs

56 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BoneSync.Networking.Messages;
using BoneSync.Sync;
using BoneSync.Sync.Components;
using HarmonyLib;
using MelonLoader;
using StressLevelZero.Props.Weapons;
namespace BoneSync.Patching
{
[HarmonyPatch(typeof(Gun))]
public class GunPatches
{
[HarmonyPatch(nameof(Gun.Fire)), HarmonyPrefix]
public static bool FirePatch(Gun __instance)
{
return true;
}
[HarmonyPatch(nameof(Gun.OnFire)), HarmonyPrefix]
public static void OnFirePatch(Gun __instance)
{
MelonLoader.SyncLogger.Msg("Gun.OnFire: " + __instance.name);
if (!BoneSync.IsConnected) return;
Syncable syncable = ObjectSync.MakeOrGetSyncable(__instance.gameObject);
if (syncable == null) return;
if (!syncable.Registered) return;
if (syncable.isOwner)
{
SyncLogger.Msg("Gun.OnFire: " + __instance.name + " is owner");
GunSyncInfo gunSyncInfo = new GunSyncInfo()
{
cartridgeState = __instance.cartridgeState,
hammerState = __instance.hammerState,
syncId = syncable.GetSyncId(),
messageType = GunSyncMessageType.Fire,
bulletObject = __instance.chamberedCartridge
};
GunSyncMessage gunSyncMessage = new GunSyncMessage(gunSyncInfo);
gunSyncMessage.Broadcast();
SyncLogger.Msg("Gun.OnFire: " + __instance.name + " sent message");
}
return;
}
}
}