probs broke everything
This commit is contained in:
@@ -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" />
|
||||||
|
|||||||
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,
|
SimpleObjectEventSync = 10,
|
||||||
PlugSync = 11,
|
PlugSync = 11,
|
||||||
AISync = 12,
|
AISync = 12,
|
||||||
|
SceneChange = 13,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user