more gun sync stuff

This commit is contained in:
Aaro Varis
2025-03-08 00:16:26 +02:00
parent 0030f68f99
commit c0e912be87
3 changed files with 30 additions and 9 deletions

View File

@@ -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);
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}
}