From 3b4fcbf47720bc6736da847e6018f7f257353714 Mon Sep 17 00:00:00 2001 From: Mister_Nebula <41904486+misternebula@users.noreply.github.com> Date: Mon, 24 Aug 2020 15:51:12 +0100 Subject: [PATCH] fix some stuff --- QSB/Animation/AnimationSync.cs | 3 +++ QSB/Events/PlayerReadyEvent.cs | 22 +++++++++++++++++++++- QSB/Events/PlayerStatesRequestEvent.cs | 3 ++- QSB/PlayerInfo.cs | 4 +++- QSB/PlayerRegistry.cs | 4 +++- QSB/QSBNetworkManager.cs | 2 +- QSB/TimeSync/WakeUpSync.cs | 3 +++ QSB/TransformSync/PlayerCameraSync.cs | 2 ++ QSB/TransformSync/PlayerSectorEvent.cs | 2 ++ QSB/default-config.json | 2 +- 10 files changed, 41 insertions(+), 6 deletions(-) diff --git a/QSB/Animation/AnimationSync.cs b/QSB/Animation/AnimationSync.cs index 491d9d99..bbadbaed 100644 --- a/QSB/Animation/AnimationSync.cs +++ b/QSB/Animation/AnimationSync.cs @@ -1,5 +1,6 @@ using OWML.ModHelper.Events; using QSB.Events; +using QSB.Utility; using System; using System.Linq; using UnityEngine; @@ -151,6 +152,7 @@ namespace QSB.Animation private void SuitUp() { + DebugLog.DebugWrite($"Suit on for {PlayerId}"); _bodyAnim.runtimeAnimatorController = _suitedAnimController; _anim.runtimeAnimatorController = _suitedAnimController; _unsuitedGraphics.SetActive(false); @@ -159,6 +161,7 @@ namespace QSB.Animation private void SuitDown() { + DebugLog.DebugWrite($"Suit off for {PlayerId}"); _bodyAnim.runtimeAnimatorController = _unsuitedAnimController; _anim.runtimeAnimatorController = _unsuitedAnimController; _unsuitedGraphics.SetActive(true); diff --git a/QSB/Events/PlayerReadyEvent.cs b/QSB/Events/PlayerReadyEvent.cs index bc6c4a90..06647dc8 100644 --- a/QSB/Events/PlayerReadyEvent.cs +++ b/QSB/Events/PlayerReadyEvent.cs @@ -1,4 +1,8 @@ -using QSB.Messaging; +using OWML.Common; +using QSB.Messaging; +using QSB.TransformSync; +using QSB.Utility; +using System.Linq; namespace QSB.Events { @@ -26,8 +30,24 @@ namespace QSB.Events public override void OnServerReceive(ToggleMessage message) { + DebugLog.DebugWrite($"[S] Get ready event from {message.FromId}", MessageType.Success); + if (message.FromId == PlayerRegistry.LocalPlayerId) + { + return; + } PlayerRegistry.GetPlayer(message.AboutId).IsReady = message.ToggleValue; PlayerState.LocalInstance.Send(); } + + public override void OnReceiveRemote(ToggleMessage message) + { + DebugLog.DebugWrite($"Get ready event from {message.FromId}", MessageType.Success); + foreach (var item in PlayerRegistry.GetSyncObjects() + .Where(x => x != null && x.IsReady && x.ReferenceSector != null && x.PlayerId == LocalPlayerId)) + { + DebugLog.DebugWrite($"* Sending sector for netid {item.netId.Value}..."); + GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); + } + } } } diff --git a/QSB/Events/PlayerStatesRequestEvent.cs b/QSB/Events/PlayerStatesRequestEvent.cs index 4462535d..419e2048 100644 --- a/QSB/Events/PlayerStatesRequestEvent.cs +++ b/QSB/Events/PlayerStatesRequestEvent.cs @@ -28,11 +28,12 @@ namespace QSB.Events public override void OnServerReceive(PlayerMessage message) { - DebugLog.DebugWrite($"Server get state request from {message.FromId}"); + DebugLog.DebugWrite($"[S] Get state request from {message.FromId}"); PlayerState.LocalInstance.Send(); foreach (var item in PlayerRegistry.GetSyncObjects() .Where(x => x != null && x.IsReady && x.ReferenceSector != null)) { + DebugLog.DebugWrite($"* Sending sector for netid {item.netId.Value}..."); GlobalMessenger.FireEvent(EventNames.QSBSectorChange, item.netId.Value, item.ReferenceSector); } } diff --git a/QSB/PlayerInfo.cs b/QSB/PlayerInfo.cs index 3b7abb7b..4744395e 100644 --- a/QSB/PlayerInfo.cs +++ b/QSB/PlayerInfo.cs @@ -21,6 +21,7 @@ namespace QSB public string Name { get; set; } public bool IsReady { get; set; } public State State { get; set; } + //public int[] SectorCacheList = new int[PlayerRegistry.NetworkObjectCount]; public PlayerInfo(uint id) { @@ -53,7 +54,8 @@ namespace QSB Translator?.ChangeEquipState(FlagsHelper.IsSet(State, State.Translator)); ProbeLauncher?.ChangeEquipState(FlagsHelper.IsSet(State, State.ProbeLauncher)); Signalscope?.ChangeEquipState(FlagsHelper.IsSet(State, State.Signalscope)); - PlayerRegistry.GetSyncObject(NetId)?.SetSuitState(FlagsHelper.IsSet(State, State.Suit)); + QSB.Helper.Events.Unity.RunWhen(() => PlayerRegistry.GetSyncObject(NetId) != null, + () => PlayerRegistry.GetSyncObject(NetId).SetSuitState(FlagsHelper.IsSet(State, State.Suit))); } public bool GetState(State state) diff --git a/QSB/PlayerRegistry.cs b/QSB/PlayerRegistry.cs index 979215ca..6656da22 100644 --- a/QSB/PlayerRegistry.cs +++ b/QSB/PlayerRegistry.cs @@ -44,11 +44,13 @@ namespace QSB public static void HandleFullStateMessage(PlayerStateMessage message) { - DebugLog.DebugWrite($"Handle full state message"); + DebugLog.DebugWrite($"Handle full state message for player {message.AboutId}"); var player = GetPlayer(message.AboutId); player.Name = message.PlayerName; player.IsReady = message.PlayerReady; + DebugLog.DebugWrite($"* Is ready? : {player.IsReady}"); player.State = message.PlayerState; + DebugLog.DebugWrite($"* Suit is on? : {FlagsHelper.IsSet(player.State, State.Suit)}"); //DebugLog.DebugWrite($"Updating state of player {player.NetId} to : {Environment.NewLine}" + // $"{DebugLog.GenerateTable(Enum.GetNames(typeof(State)).ToList(), FlagsHelper.FlagsToListSet(player.State))}"); if (LocalPlayer.IsReady) diff --git a/QSB/QSBNetworkManager.cs b/QSB/QSBNetworkManager.cs index 77682f62..5e9fad4c 100644 --- a/QSB/QSBNetworkManager.cs +++ b/QSB/QSBNetworkManager.cs @@ -142,7 +142,7 @@ namespace QSB Destroy(GetComponent()); Destroy(GetComponent()); EventList.Reset(); - DebugLog.ToConsole("Server stopped!", MessageType.Info); + DebugLog.ToConsole("[S] Server stopped!", MessageType.Info); PlayerRegistry.PlayerList.ForEach(player => player.HudMarker?.Remove()); NetworkServer.connections.ToList().ForEach(CleanupConnection); base.OnStopServer(); diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index e9eb82a9..012d04c7 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -1,6 +1,7 @@ using OWML.ModHelper.Events; using QSB.DeathSync; using QSB.Events; +using QSB.Utility; using UnityEngine; using UnityEngine.Networking; @@ -75,6 +76,7 @@ namespace QSB.TimeSync private void Init() { + DebugLog.DebugWrite("WakeUpSync init - Request state!"); GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); _state = State.Loaded; gameObject.AddComponent(); @@ -165,6 +167,7 @@ namespace QSB.TimeSync _isFirstFastForward = false; Physics.SyncTransforms(); SpinnerUI.Hide(); + DebugLog.DebugWrite("ResetTimeScale - Request state!"); FindObjectOfType().Invoke("OnEndFastForward"); GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); RespawnOnDeath.Instance.Init(); diff --git a/QSB/TransformSync/PlayerCameraSync.cs b/QSB/TransformSync/PlayerCameraSync.cs index 0e63ddb5..cb116c51 100644 --- a/QSB/TransformSync/PlayerCameraSync.cs +++ b/QSB/TransformSync/PlayerCameraSync.cs @@ -1,5 +1,6 @@ using QSB.Events; using QSB.Tools; +using QSB.Utility; using UnityEngine; namespace QSB.TransformSync @@ -23,6 +24,7 @@ namespace QSB.TransformSync Player.IsReady = true; GlobalMessenger.FireEvent(EventNames.QSBPlayerReady, true); + DebugLog.DebugWrite("PlayerCameraSync init done - Request state!"); GlobalMessenger.FireEvent(EventNames.QSBPlayerStatesRequest); return body; diff --git a/QSB/TransformSync/PlayerSectorEvent.cs b/QSB/TransformSync/PlayerSectorEvent.cs index 7dc59cdf..b64acd76 100644 --- a/QSB/TransformSync/PlayerSectorEvent.cs +++ b/QSB/TransformSync/PlayerSectorEvent.cs @@ -32,6 +32,8 @@ namespace QSB.TransformSync { if (!QSBSceneManager.IsInUniverse) { + //var player = PlayerRegistry.GetPlayer(message.FromId); + //player.SectorCacheList[message.AboutId - message.FromId + 1] = message.ObjectId; return; } var sector = WorldRegistry.GetObject(message.ObjectId); diff --git a/QSB/default-config.json b/QSB/default-config.json index 74eaa332..1d394b36 100644 --- a/QSB/default-config.json +++ b/QSB/default-config.json @@ -3,6 +3,6 @@ "settings": { "defaultServerIP": "localhost", "port": 7777, - "debugMode": false + "debugMode": true } }