probs broke everything
This commit is contained in:
@@ -96,6 +96,7 @@
|
||||
<Compile Include="Networking\Messages\AISyncMessage.cs" />
|
||||
<Compile Include="Networking\Messages\DiscardSyncableMessage.cs" />
|
||||
<Compile Include="Networking\Messages\GunSyncMessage.cs" />
|
||||
<Compile Include="Networking\Messages\SceneChangeMessage.cs" />
|
||||
<Compile Include="Patching\AIHealthPatches.cs" />
|
||||
<Compile Include="Patching\HolsterSlotPatches.cs" />
|
||||
<Compile Include="Networking\Messages\MagazineSyncMessage.cs" />
|
||||
|
||||
74
BoneSync/Networking/Messages/SceneChangeMessage.cs
Normal file
74
BoneSync/Networking/Messages/SceneChangeMessage.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,5 +21,6 @@ namespace BoneSync.Networking
|
||||
SimpleObjectEventSync = 10,
|
||||
PlugSync = 11,
|
||||
AISync = 12,
|
||||
SceneChange = 13,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using BoneSync.Sync;
|
||||
using HarmonyLib;
|
||||
using MelonLoader;
|
||||
using StressLevelZero.Utilities;
|
||||
@@ -13,13 +14,14 @@ namespace BoneSync.Patching
|
||||
internal class SceneManagerPatches
|
||||
{
|
||||
[HarmonyPatch(nameof(BoneworksSceneManager.LoadScene)), HarmonyPostfix]
|
||||
private static void LoadScenePrefix(BoneworksSceneManager __instance, int sceneBuildIndex)
|
||||
private static void LoadScenePrefix(int sceneBuildIndex)
|
||||
{
|
||||
MelonLogger.Msg("LoadScenePrefix: " + sceneBuildIndex);
|
||||
if (!BoneSync.IsConnected) return;
|
||||
if (BoneSync.lobby.IsHost)
|
||||
{
|
||||
MelonLogger.Msg("Host is loading scene, sending message to clients...");
|
||||
SceneSync.SendSceneSyncMessage(sceneBuildIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ namespace BoneSync.Sync.Components
|
||||
private void _SendAttributeSync()
|
||||
{
|
||||
_SendMagazineData();
|
||||
_lastAttributeSyncTime = Time.realtimeSinceStartup;
|
||||
}
|
||||
public void ApplyMagazineData(MagazineSyncData magazineSyncData)
|
||||
{
|
||||
@@ -46,6 +47,8 @@ namespace BoneSync.Sync.Components
|
||||
magazine.magazineData.cartridgeType = magazineData.cartridgeType;
|
||||
magazine.magazineData.weight = magazineData.weight;
|
||||
magazine.magazineData.platform = magazineData.platform;
|
||||
//magazine.CheckBulletArt();
|
||||
//magazine.ShowBulletArt();
|
||||
}
|
||||
|
||||
public MagazineSyncData GetMagazineData()
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using BoneSync.Data;
|
||||
using BoneSync.Networking.Messages;
|
||||
using BoneSync.Sync.Components;
|
||||
using MelonLoader;
|
||||
using StressLevelZero.Interaction;
|
||||
@@ -88,5 +89,22 @@ namespace BoneSync.Sync
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user