probs broke everything

This commit is contained in:
Aaro Varis
2025-03-10 18:01:18 +02:00
parent f27e325526
commit 92ab39ed69
6 changed files with 100 additions and 1 deletions

View File

@@ -96,6 +96,7 @@
<Compile Include="Networking\Messages\AISyncMessage.cs" /> <Compile Include="Networking\Messages\AISyncMessage.cs" />
<Compile Include="Networking\Messages\DiscardSyncableMessage.cs" /> <Compile Include="Networking\Messages\DiscardSyncableMessage.cs" />
<Compile Include="Networking\Messages\GunSyncMessage.cs" /> <Compile Include="Networking\Messages\GunSyncMessage.cs" />
<Compile Include="Networking\Messages\SceneChangeMessage.cs" />
<Compile Include="Patching\AIHealthPatches.cs" /> <Compile Include="Patching\AIHealthPatches.cs" />
<Compile Include="Patching\HolsterSlotPatches.cs" /> <Compile Include="Patching\HolsterSlotPatches.cs" />
<Compile Include="Networking\Messages\MagazineSyncMessage.cs" /> <Compile Include="Networking\Messages\MagazineSyncMessage.cs" />

View File

@@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BoneSync.Sync;
using MelonLoader;
using StressLevelZero.Utilities;
namespace BoneSync.Networking.Messages
{
public enum sceneChangeType
{
FromIndex,
FromName,
CustomMap,
}
public struct SceneChangeInfo
{
public sceneChangeType sceneChangeType;
public string sceneName;
public byte sceneIndex;
}
[PacketType(PacketType.SceneChange), PacketReliability(PacketReliability.Reliable), AlwaysExecute]
internal class SceneChangeMessage : NetworkMessage
{
private SceneChangeInfo _sceneChangeInfo;
public SceneChangeInfo sceneChangeInfo => _sceneChangeInfo;
public SceneChangeMessage(SceneChangeInfo sceneChangeInfo)
{
_sceneChangeInfo = sceneChangeInfo;
byteEncoder.WriteByte((byte)_sceneChangeInfo.sceneChangeType);
switch (_sceneChangeInfo.sceneChangeType)
{
case sceneChangeType.FromIndex:
byteEncoder.WriteByte(_sceneChangeInfo.sceneIndex);
break;
case sceneChangeType.FromName:
byteEncoder.WriteString(_sceneChangeInfo.sceneName);
break;
case sceneChangeType.CustomMap:
byteEncoder.WriteString(_sceneChangeInfo.sceneName);
break;
}
}
public SceneChangeMessage(Packet packet)
{
byteEncoder.SetBytes(packet.Data);
_sceneChangeInfo = new SceneChangeInfo();
_sceneChangeInfo.sceneChangeType = (sceneChangeType)byteEncoder.ReadByte();
switch (_sceneChangeInfo.sceneChangeType)
{
case sceneChangeType.FromIndex:
_sceneChangeInfo.sceneIndex = byteEncoder.ReadByte();
break;
case sceneChangeType.FromName:
_sceneChangeInfo.sceneName = byteEncoder.ReadString();
break;
case sceneChangeType.CustomMap:
_sceneChangeInfo.sceneName = byteEncoder.ReadString();
break;
}
}
public override void Execute()
{
MelonLogger.Msg("SceneChangeMessage: " + _sceneChangeInfo.sceneName + " " + _sceneChangeInfo.sceneIndex);
BoneworksSceneManager.LoadScene(_sceneChangeInfo.sceneIndex);
}
}
}

View File

@@ -21,5 +21,6 @@ namespace BoneSync.Networking
SimpleObjectEventSync = 10, SimpleObjectEventSync = 10,
PlugSync = 11, PlugSync = 11,
AISync = 12, AISync = 12,
SceneChange = 13,
} }
} }

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using BoneSync.Sync;
using HarmonyLib; using HarmonyLib;
using MelonLoader; using MelonLoader;
using StressLevelZero.Utilities; using StressLevelZero.Utilities;
@@ -13,13 +14,14 @@ namespace BoneSync.Patching
internal class SceneManagerPatches internal class SceneManagerPatches
{ {
[HarmonyPatch(nameof(BoneworksSceneManager.LoadScene)), HarmonyPostfix] [HarmonyPatch(nameof(BoneworksSceneManager.LoadScene)), HarmonyPostfix]
private static void LoadScenePrefix(BoneworksSceneManager __instance, int sceneBuildIndex) private static void LoadScenePrefix(int sceneBuildIndex)
{ {
MelonLogger.Msg("LoadScenePrefix: " + sceneBuildIndex); MelonLogger.Msg("LoadScenePrefix: " + sceneBuildIndex);
if (!BoneSync.IsConnected) return; if (!BoneSync.IsConnected) return;
if (BoneSync.lobby.IsHost) if (BoneSync.lobby.IsHost)
{ {
MelonLogger.Msg("Host is loading scene, sending message to clients..."); MelonLogger.Msg("Host is loading scene, sending message to clients...");
SceneSync.SendSceneSyncMessage(sceneBuildIndex);
} }
} }
} }

View File

@@ -36,6 +36,7 @@ namespace BoneSync.Sync.Components
private void _SendAttributeSync() private void _SendAttributeSync()
{ {
_SendMagazineData(); _SendMagazineData();
_lastAttributeSyncTime = Time.realtimeSinceStartup;
} }
public void ApplyMagazineData(MagazineSyncData magazineSyncData) public void ApplyMagazineData(MagazineSyncData magazineSyncData)
{ {
@@ -46,6 +47,8 @@ namespace BoneSync.Sync.Components
magazine.magazineData.cartridgeType = magazineData.cartridgeType; magazine.magazineData.cartridgeType = magazineData.cartridgeType;
magazine.magazineData.weight = magazineData.weight; magazine.magazineData.weight = magazineData.weight;
magazine.magazineData.platform = magazineData.platform; magazine.magazineData.platform = magazineData.platform;
//magazine.CheckBulletArt();
//magazine.ShowBulletArt();
} }
public MagazineSyncData GetMagazineData() public MagazineSyncData GetMagazineData()

View File

@@ -1,4 +1,5 @@
using BoneSync.Data; using BoneSync.Data;
using BoneSync.Networking.Messages;
using BoneSync.Sync.Components; using BoneSync.Sync.Components;
using MelonLoader; using MelonLoader;
using StressLevelZero.Interaction; using StressLevelZero.Interaction;
@@ -88,5 +89,22 @@ namespace BoneSync.Sync
scenes.Add(SceneManager.GetSceneByBuildIndex(i)); scenes.Add(SceneManager.GetSceneByBuildIndex(i));
} }
} }
public static void SendSceneSyncMessage(int index)
{
if (!BoneSync.IsConnected) return;
if (BoneSync.lobby.IsHost)
{
MelonLogger.Msg("Host is loading scene, sending message to clients...");
SceneChangeInfo info = new SceneChangeInfo()
{
sceneName = scenes[index].name,
sceneChangeType = sceneChangeType.FromIndex,
sceneIndex = (byte)index
};
SceneChangeMessage message = new SceneChangeMessage(info);
message.Broadcast();
}
}
} }
} }