56 lines
1.7 KiB
C#
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;
|
|
}
|
|
|
|
}
|
|
}
|