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.hammerState);
|
||||
byteEncoder.WriteByte((byte)gunSyncInfo.cartridgeState);
|
||||
byteEncoder.WriteBool(gunSyncInfo.bulletObject != null);
|
||||
byteEncoder.WriteAmmoVariables(gunSyncInfo.bulletObject.ammoVariables);
|
||||
|
||||
}
|
||||
@@ -48,14 +49,19 @@ namespace BoneSync.Networking.Messages
|
||||
gunSyncInfo.messageType = (GunSyncMessageType)byteEncoder.ReadByte();
|
||||
gunSyncInfo.hammerState = (Gun.HammerStates)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()
|
||||
{
|
||||
Syncable syncable = ObjectSyncCache.GetSyncable(gunSyncInfo.syncId);
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,15 +24,14 @@ namespace BoneSync.Patching
|
||||
|
||||
|
||||
[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);
|
||||
if (!BoneSync.lobby.IsConnected()) return true;
|
||||
if (!BoneSync.lobby.IsConnected()) return;
|
||||
|
||||
Syncable syncable = ObjectSync.MakeOrGetSyncable(__instance.gameObject);
|
||||
if (syncable == null) return true;
|
||||
if (!syncable.Registered) return true;
|
||||
if (syncable == null) return;
|
||||
if (!syncable.Registered) return;
|
||||
if (syncable.isOwner)
|
||||
{
|
||||
MelonLogger.Msg("Gun.OnFire: " + __instance.name + " is owner");
|
||||
@@ -49,7 +48,7 @@ namespace BoneSync.Patching
|
||||
gunSyncMessage.Broadcast();
|
||||
MelonLogger.Msg("Gun.OnFire: " + __instance.name + " sent message");
|
||||
}
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using BoneSync.Networking.Messages;
|
||||
using BoneSync.Patching;
|
||||
using StressLevelZero.Combat;
|
||||
using StressLevelZero.Pool;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -13,6 +14,12 @@ namespace BoneSync.Sync.Components
|
||||
public partial class Syncable : MonoBehaviour
|
||||
{
|
||||
|
||||
private void StripDamage(ref BulletObject bulletObject)
|
||||
{
|
||||
AmmoVariables ammoVariables = bulletObject.ammoVariables;
|
||||
ammoVariables.AttackDamage = 0f;
|
||||
bulletObject.ammoVariables = ammoVariables;
|
||||
}
|
||||
private void _SendAttributeSync()
|
||||
{
|
||||
if (!isOwner) return;
|
||||
@@ -55,7 +62,16 @@ namespace BoneSync.Sync.Components
|
||||
|
||||
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