more gun sync stuff
This commit is contained in:
@@ -38,6 +38,7 @@ namespace BoneSync.Networking.Messages
|
|||||||
byteEncoder.WriteByte((byte)gunSyncInfo.messageType);
|
byteEncoder.WriteByte((byte)gunSyncInfo.messageType);
|
||||||
byteEncoder.WriteByte((byte)gunSyncInfo.hammerState);
|
byteEncoder.WriteByte((byte)gunSyncInfo.hammerState);
|
||||||
byteEncoder.WriteByte((byte)gunSyncInfo.cartridgeState);
|
byteEncoder.WriteByte((byte)gunSyncInfo.cartridgeState);
|
||||||
|
byteEncoder.WriteBool(gunSyncInfo.bulletObject != null);
|
||||||
byteEncoder.WriteAmmoVariables(gunSyncInfo.bulletObject.ammoVariables);
|
byteEncoder.WriteAmmoVariables(gunSyncInfo.bulletObject.ammoVariables);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -48,14 +49,19 @@ namespace BoneSync.Networking.Messages
|
|||||||
gunSyncInfo.messageType = (GunSyncMessageType)byteEncoder.ReadByte();
|
gunSyncInfo.messageType = (GunSyncMessageType)byteEncoder.ReadByte();
|
||||||
gunSyncInfo.hammerState = (Gun.HammerStates)byteEncoder.ReadByte();
|
gunSyncInfo.hammerState = (Gun.HammerStates)byteEncoder.ReadByte();
|
||||||
gunSyncInfo.cartridgeState = (Gun.CartridgeStates)byteEncoder.ReadByte();
|
gunSyncInfo.cartridgeState = (Gun.CartridgeStates)byteEncoder.ReadByte();
|
||||||
gunSyncInfo.bulletObject.ammoVariables = byteEncoder.ReadAmmoVariables();
|
if (byteEncoder.ReadBool()) { // If bulletObject is not null
|
||||||
|
gunSyncInfo.bulletObject = new BulletObject()
|
||||||
|
{
|
||||||
|
ammoVariables = byteEncoder.ReadAmmoVariables()
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Execute()
|
public override void Execute()
|
||||||
{
|
{
|
||||||
Syncable syncable = ObjectSyncCache.GetSyncable(gunSyncInfo.syncId);
|
Syncable syncable = ObjectSyncCache.GetSyncable(gunSyncInfo.syncId);
|
||||||
if (syncable == null) return;
|
if (syncable == null) return;
|
||||||
MelonLogger.Msg("GunSyncMessage.Execute: " + gunSyncInfo.syncId + ":" + syncable.name);
|
MelonLogger.Msg("GunSyncMessage.Execute: " + gunSyncInfo.syncId + ":" + syncable.name + " hasBulletObject: " + (gunSyncInfo.bulletObject != null));
|
||||||
syncable.OnWeaponSyncData(gunSyncInfo);
|
syncable.OnWeaponSyncData(gunSyncInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,15 +24,14 @@ namespace BoneSync.Patching
|
|||||||
|
|
||||||
|
|
||||||
[HarmonyPatch(nameof(Gun.OnFire)), HarmonyPrefix]
|
[HarmonyPatch(nameof(Gun.OnFire)), HarmonyPrefix]
|
||||||
public static bool OnFirePatch(Gun __instance)
|
public static void OnFirePatch(Gun __instance)
|
||||||
{
|
{
|
||||||
if (CallPatchedMethods.allowPatchedMethodCall) return true; // this patch should always be called
|
|
||||||
MelonLoader.MelonLogger.Msg("Gun.OnFire: " + __instance.name);
|
MelonLoader.MelonLogger.Msg("Gun.OnFire: " + __instance.name);
|
||||||
if (!BoneSync.lobby.IsConnected()) return true;
|
if (!BoneSync.lobby.IsConnected()) return;
|
||||||
|
|
||||||
Syncable syncable = ObjectSync.MakeOrGetSyncable(__instance.gameObject);
|
Syncable syncable = ObjectSync.MakeOrGetSyncable(__instance.gameObject);
|
||||||
if (syncable == null) return true;
|
if (syncable == null) return;
|
||||||
if (!syncable.Registered) return true;
|
if (!syncable.Registered) return;
|
||||||
if (syncable.isOwner)
|
if (syncable.isOwner)
|
||||||
{
|
{
|
||||||
MelonLogger.Msg("Gun.OnFire: " + __instance.name + " is owner");
|
MelonLogger.Msg("Gun.OnFire: " + __instance.name + " is owner");
|
||||||
@@ -49,7 +48,7 @@ namespace BoneSync.Patching
|
|||||||
gunSyncMessage.Broadcast();
|
gunSyncMessage.Broadcast();
|
||||||
MelonLogger.Msg("Gun.OnFire: " + __instance.name + " sent message");
|
MelonLogger.Msg("Gun.OnFire: " + __instance.name + " sent message");
|
||||||
}
|
}
|
||||||
return true;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using BoneSync.Networking.Messages;
|
using BoneSync.Networking.Messages;
|
||||||
using BoneSync.Patching;
|
using BoneSync.Patching;
|
||||||
using StressLevelZero.Combat;
|
using StressLevelZero.Combat;
|
||||||
|
using StressLevelZero.Pool;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -13,6 +14,12 @@ namespace BoneSync.Sync.Components
|
|||||||
public partial class Syncable : MonoBehaviour
|
public partial class Syncable : MonoBehaviour
|
||||||
{
|
{
|
||||||
|
|
||||||
|
private void StripDamage(ref BulletObject bulletObject)
|
||||||
|
{
|
||||||
|
AmmoVariables ammoVariables = bulletObject.ammoVariables;
|
||||||
|
ammoVariables.AttackDamage = 0f;
|
||||||
|
bulletObject.ammoVariables = ammoVariables;
|
||||||
|
}
|
||||||
private void _SendAttributeSync()
|
private void _SendAttributeSync()
|
||||||
{
|
{
|
||||||
if (!isOwner) return;
|
if (!isOwner) return;
|
||||||
@@ -55,7 +62,16 @@ namespace BoneSync.Sync.Components
|
|||||||
|
|
||||||
if (gunSyncInfo.messageType == GunSyncMessageType.Fire)
|
if (gunSyncInfo.messageType == GunSyncMessageType.Fire)
|
||||||
{
|
{
|
||||||
CallPatchedMethods.FireGun(gun);
|
gun.gunSFX?.GunShot();
|
||||||
|
Transform firepointTransform = gun.firePointTransform;
|
||||||
|
Vector3 position = firepointTransform.position;
|
||||||
|
Quaternion rotation = firepointTransform.rotation;
|
||||||
|
BulletObject bulletObject = gunSyncInfo.bulletObject;
|
||||||
|
StripDamage(ref bulletObject);
|
||||||
|
gun.EjectCartridge();
|
||||||
|
//PoolSpawner.SpawnProjectile(position, rotation, gunSyncInfo.bulletObject, "1911", null);
|
||||||
|
PoolSpawner.SpawnMuzzleFlare(position, rotation, PoolSpawner.MuzzleFlareType.Default);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user