From 5729f387cc33b9c8ca00773471bac2d2f29a22f0 Mon Sep 17 00:00:00 2001 From: Karim Rizk Date: Mon, 15 Jan 2024 18:33:23 +0200 Subject: [PATCH] Update broken references --- .../Chat/ChatCommandWhisperProcessor.cs | 5 +- .../Chat/ChatCommandWhoProcessor.cs | 2 +- .../Chat/NewChatMessageProcessor.cs | 4 +- .../Chat/RemoteServerCommmandProcessor.cs | 2 +- .../GameHistoryEnqueueTechProcessor.cs | 7 +- .../GameHistoryRemoveTechProcessor.cs | 7 +- .../ILSArriveStarPlanetRequestProcessor.cs | 5 +- .../Logistics/ILSRequestShipDockProcessor.cs | 9 +- .../ILSgStationPoolSyncRequestProcessor.cs | 5 +- .../Logistics/StationUIProcessor.cs | 5 +- .../Logistics/StorageUIProcessor.cs | 6 +- .../Players/PlayerMechaArmorProcessor.cs | 6 +- .../Players/PlayerMechaDIYArmorProcessor.cs | 4 +- .../Players/PlayerMechaStatProcessor.cs | 2 +- .../Players/PlayerMovementProcessor.cs | 7 +- .../PlayerUpdateLocalStarIdProcessor.cs | 5 +- .../Players/RemoveDroneOrdersProcessor.cs | 2 +- .../Routers/PlanetBroadcastProcessor.cs | 3 - .../Routers/StarBroadcastProcessor.cs | 3 - .../Session/HandshakeRequestProcessor.cs | 16 ++-- .../Session/LobbyRequestProcessor.cs | 82 ++++++++----------- .../Session/StartGameMessageProcessor.cs | 25 ++---- .../Session/SyncCompleteProcessor.cs | 8 +- .../Statistics/MilestoneUnlockProcessor.cs | 5 +- .../StatisticsRequestEventProcessor.cs | 4 +- .../TrashSystemClearAllTrashProcessor.cs | 7 +- .../TrashSystemNewTrashCreatedProcessor.cs | 7 +- .../Trash/TrashSystemTrashRemovedProcessor.cs | 2 +- .../Universe/NameInputProcessor.cs | 7 +- .../Dynamic/UICombatSettingsDF_Patch.cs | 18 +--- .../Patches/Dynamic/UIGalaxySelect_Patch.cs | 38 ++++----- .../BattleBaseComponent_Transpiler.cs | 7 +- .../Chat/Commands/WhisperCommandHandler.cs | 2 +- NebulaWorld/Player/DroneManager.cs | 2 +- 34 files changed, 119 insertions(+), 200 deletions(-) diff --git a/NebulaNetwork/PacketProcessors/Chat/ChatCommandWhisperProcessor.cs b/NebulaNetwork/PacketProcessors/Chat/ChatCommandWhisperProcessor.cs index f7ba9d27c..dc8281d68 100644 --- a/NebulaNetwork/PacketProcessors/Chat/ChatCommandWhisperProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Chat/ChatCommandWhisperProcessor.cs @@ -31,12 +31,11 @@ protected override void ProcessPacket(ChatCommandWhisperPacket packet, NebulaCon } // second case, relay message to recipient - var recipient = Multiplayer.Session.Network - .PlayerManager.GetConnectedPlayerByUsername(packet.RecipientUsername); + var recipient = Players.Get(packet.RecipientUsername); if (recipient == null) { Log.Warn($"Recipient not found {packet.RecipientUsername}"); - var sender = Multiplayer.Session.Network.PlayerManager.GetPlayer(conn); + var sender = Players.Get(conn); sender.SendPacket(new ChatCommandWhisperPacket("SYSTEM".Translate(), packet.SenderUsername, string.Format("User not found {0}".Translate(), packet.RecipientUsername))); return; diff --git a/NebulaNetwork/PacketProcessors/Chat/ChatCommandWhoProcessor.cs b/NebulaNetwork/PacketProcessors/Chat/ChatCommandWhoProcessor.cs index 63d7efef6..a31b4c32e 100644 --- a/NebulaNetwork/PacketProcessors/Chat/ChatCommandWhoProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Chat/ChatCommandWhoProcessor.cs @@ -22,7 +22,7 @@ protected override void ProcessPacket(ChatCommandWhoPacket packet, NebulaConnect { if (IsHost) { - var recipient = Multiplayer.Session.Network.PlayerManager.GetPlayer(conn); + var recipient = Players.Get(conn); var playerDatas = Multiplayer.Session.Server.Players.GetAllPlayerData().ToArray(); var hostPlayer = Multiplayer.Session.LocalPlayer; var resultPayload = WhoCommandHandler.BuildResultPayload(playerDatas, hostPlayer); diff --git a/NebulaNetwork/PacketProcessors/Chat/NewChatMessageProcessor.cs b/NebulaNetwork/PacketProcessors/Chat/NewChatMessageProcessor.cs index 0ae4402ff..a31fda5e6 100644 --- a/NebulaNetwork/PacketProcessors/Chat/NewChatMessageProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Chat/NewChatMessageProcessor.cs @@ -26,8 +26,8 @@ protected override void ProcessPacket(NewChatMessagePacket packet, NebulaConnect if (IsHost) { - var player = Multiplayer.Session.Network.PlayerManager?.GetPlayer(conn); - Multiplayer.Session.Network.PlayerManager?.SendPacketToOtherPlayers(packet, player); + var player = Players.Get(conn); + Server.SendPacketExclude(packet, conn); } var sentAt = packet.SentAt == 0 ? DateTime.Now : DateTime.FromBinary(packet.SentAt); diff --git a/NebulaNetwork/PacketProcessors/Chat/RemoteServerCommmandProcessor.cs b/NebulaNetwork/PacketProcessors/Chat/RemoteServerCommmandProcessor.cs index b29a24653..a807b68a6 100644 --- a/NebulaNetwork/PacketProcessors/Chat/RemoteServerCommmandProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Chat/RemoteServerCommmandProcessor.cs @@ -98,7 +98,7 @@ private string Login(NebulaConnection conn, string passwordHash) return string.Format("Cooldown: {0}s".Translate(), cdtime); } LastLoginTime = DateTime.Now; - var playerData = Multiplayer.Session.Network.PlayerManager.GetPlayer(conn)?.Data; + var playerData = Players.Get(conn)?.Data; var salt = playerData != null ? playerData.Username + playerData.PlayerId : ""; var hash = CryptoUtils.Hash(Config.Options.RemoteAccessPassword + salt); if (hash != passwordHash) diff --git a/NebulaNetwork/PacketProcessors/GameHistory/GameHistoryEnqueueTechProcessor.cs b/NebulaNetwork/PacketProcessors/GameHistory/GameHistoryEnqueueTechProcessor.cs index 5ab9018ee..afb9c6050 100644 --- a/NebulaNetwork/PacketProcessors/GameHistory/GameHistoryEnqueueTechProcessor.cs +++ b/NebulaNetwork/PacketProcessors/GameHistory/GameHistoryEnqueueTechProcessor.cs @@ -14,18 +14,15 @@ namespace NebulaNetwork.PacketProcessors.GameHistory; [RegisterPacketProcessor] internal class GameHistoryEnqueueTechProcessor : PacketProcessor { - private readonly IPlayerManager playerManager; - public GameHistoryEnqueueTechProcessor() { - playerManager = Multiplayer.Session.Network.PlayerManager; } protected override void ProcessPacket(GameHistoryEnqueueTechPacket packet, NebulaConnection conn) { if (IsHost) { - var player = playerManager.GetPlayer(conn); + var player = Players.Get(conn); if (player == null) { return; @@ -34,7 +31,7 @@ protected override void ProcessPacket(GameHistoryEnqueueTechPacket packet, Nebul { GameMain.history.EnqueueTech(packet.TechId); } - playerManager.SendPacketToOtherPlayers(packet, player); + Server.SendPacketExclude(packet, conn); } else { diff --git a/NebulaNetwork/PacketProcessors/GameHistory/GameHistoryRemoveTechProcessor.cs b/NebulaNetwork/PacketProcessors/GameHistory/GameHistoryRemoveTechProcessor.cs index f56817290..f551986dc 100644 --- a/NebulaNetwork/PacketProcessors/GameHistory/GameHistoryRemoveTechProcessor.cs +++ b/NebulaNetwork/PacketProcessors/GameHistory/GameHistoryRemoveTechProcessor.cs @@ -16,11 +16,8 @@ namespace NebulaNetwork.PacketProcessors.GameHistory; [RegisterPacketProcessor] internal class GameHistoryRemoveTechProcessor : PacketProcessor { - private readonly IPlayerManager playerManager; - public GameHistoryRemoveTechProcessor() { - playerManager = Multiplayer.Session.Network.PlayerManager; } protected override void ProcessPacket(GameHistoryRemoveTechPacket packet, NebulaConnection conn) @@ -28,10 +25,10 @@ protected override void ProcessPacket(GameHistoryRemoveTechPacket packet, Nebula var valid = true; if (IsHost) { - var player = playerManager.GetPlayer(conn); + var player = Players.Get(conn); if (player != null) { - playerManager.SendPacketToOtherPlayers(packet, player); + Server.SendPacketExclude(packet, conn); } else { diff --git a/NebulaNetwork/PacketProcessors/Logistics/ILSArriveStarPlanetRequestProcessor.cs b/NebulaNetwork/PacketProcessors/Logistics/ILSArriveStarPlanetRequestProcessor.cs index 6e6d7a253..408a97cf7 100644 --- a/NebulaNetwork/PacketProcessors/Logistics/ILSArriveStarPlanetRequestProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Logistics/ILSArriveStarPlanetRequestProcessor.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using NebulaAPI.GameState; +using NebulaAPI.Networking; using NebulaAPI.Packets; using NebulaModel.Networking; using NebulaModel.Packets; @@ -20,8 +21,6 @@ namespace NebulaNetwork.PacketProcessors.Logistics; [RegisterPacketProcessor] internal class ILSArriveStarPlanetRequestProcessor : PacketProcessor { - private readonly IPlayerManager playerManager = Multiplayer.Session.Network.PlayerManager; - protected override void ProcessPacket(ILSArriveStarPlanetRequest packet, NebulaConnection conn) { if (IsClient) @@ -29,7 +28,7 @@ protected override void ProcessPacket(ILSArriveStarPlanetRequest packet, NebulaC return; } - var player = playerManager.GetPlayer(conn) ?? playerManager.GetSyncingPlayer(conn); + var player = Players.Get(conn, EConnectionStatus.Connected) ?? Players.Get(conn, EConnectionStatus.Syncing); if (player == null) { return; diff --git a/NebulaNetwork/PacketProcessors/Logistics/ILSRequestShipDockProcessor.cs b/NebulaNetwork/PacketProcessors/Logistics/ILSRequestShipDockProcessor.cs index 5aff76946..6acfac5a7 100644 --- a/NebulaNetwork/PacketProcessors/Logistics/ILSRequestShipDockProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Logistics/ILSRequestShipDockProcessor.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using NebulaAPI.DataStructures; using NebulaAPI.GameState; +using NebulaAPI.Networking; using NebulaAPI.Packets; using NebulaModel.Networking; using NebulaModel.Packets; @@ -22,8 +23,6 @@ namespace NebulaNetwork.PacketProcessors.Logistics; [RegisterPacketProcessor] public class ILSRequestShipDockProcessor : PacketProcessor { - private readonly IPlayerManager playerManager = Multiplayer.Session.Network.PlayerManager; - protected override void ProcessPacket(ILSRequestShipDock packet, NebulaConnection conn) { if (IsClient) @@ -31,12 +30,13 @@ protected override void ProcessPacket(ILSRequestShipDock packet, NebulaConnectio return; } - var player = playerManager.GetPlayer(conn) ?? playerManager.GetSyncingPlayer(conn); + var player = Players.Get(conn, EConnectionStatus.Connected) ?? Players.Get(conn, EConnectionStatus.Syncing); if (player == null || GameMain.data.galacticTransport.stationCapacity <= packet.StationGId) { return; } + var shipOtherGId = new List(); var shipIndex = new List(); var shipPos = new List(); @@ -51,6 +51,7 @@ protected override void ProcessPacket(ILSRequestShipDock packet, NebulaConnectio { continue; } + var shipData = GameMain.data.galacticTransport.stationPool[i].workShipDatas; for (var j = 0; j < shipData.Length; j++) @@ -59,6 +60,7 @@ protected override void ProcessPacket(ILSRequestShipDock packet, NebulaConnectio { continue; } + shipOtherGId.Add(shipData[j].otherGId); shipIndex.Add(j); shipPos.Add(new Double3(shipData[j].uPos.x, shipData[j].uPos.y, shipData[j].uPos.z)); @@ -68,6 +70,7 @@ protected override void ProcessPacket(ILSRequestShipDock packet, NebulaConnectio shipPRotTemp.Add(new Float4(shipData[j].pRotTemp)); } } + // also add add ships of current station as they use the dock pos too in the pos calculation // NOTE: we need to set this stations gid as otherStationGId so that the client accesses the array in the right way var shipData2 = GameMain.data.galacticTransport.stationPool[packet.StationGId].workShipDatas; diff --git a/NebulaNetwork/PacketProcessors/Logistics/ILSgStationPoolSyncRequestProcessor.cs b/NebulaNetwork/PacketProcessors/Logistics/ILSgStationPoolSyncRequestProcessor.cs index 8914dc3be..30d6452cc 100644 --- a/NebulaNetwork/PacketProcessors/Logistics/ILSgStationPoolSyncRequestProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Logistics/ILSgStationPoolSyncRequestProcessor.cs @@ -4,6 +4,7 @@ using System.Linq; using NebulaAPI.DataStructures; using NebulaAPI.GameState; +using NebulaAPI.Networking; using NebulaAPI.Packets; using NebulaModel.Networking; using NebulaModel.Packets; @@ -21,8 +22,6 @@ namespace NebulaNetwork.PacketProcessors.Logistics; [RegisterPacketProcessor] public class ILSgStationPoolSyncRequestProcessor : PacketProcessor { - private readonly IPlayerManager playerManager = Multiplayer.Session.Network.PlayerManager; - protected override void ProcessPacket(ILSRequestgStationPoolSync packet, NebulaConnection conn) { if (IsClient) @@ -30,7 +29,7 @@ protected override void ProcessPacket(ILSRequestgStationPoolSync packet, NebulaC return; } - var player = playerManager.GetPlayer(conn) ?? playerManager.GetSyncingPlayer(conn); + var player = Players.Get(conn, EConnectionStatus.Connected) ?? Players.Get(conn, EConnectionStatus.Syncing); if (player == null) { return; diff --git a/NebulaNetwork/PacketProcessors/Logistics/StationUIProcessor.cs b/NebulaNetwork/PacketProcessors/Logistics/StationUIProcessor.cs index a5111f31d..c823f74c2 100644 --- a/NebulaNetwork/PacketProcessors/Logistics/StationUIProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Logistics/StationUIProcessor.cs @@ -23,9 +23,8 @@ protected override void ProcessPacket(StationUI packet, NebulaConnection conn) StationUIManager.UpdateStation(ref packet); // broadcast to other clients - var playerManager = Multiplayer.Session.Network.PlayerManager; - var player = playerManager.GetPlayer(conn); - playerManager.SendPacketToOtherPlayers(packet, player); + var player = Players.Get(conn); + Server.SendPacketExclude(packet, conn); // as we block the normal method for the client he must run it once he receives this packet. // but only the one issued the request should get items refund diff --git a/NebulaNetwork/PacketProcessors/Logistics/StorageUIProcessor.cs b/NebulaNetwork/PacketProcessors/Logistics/StorageUIProcessor.cs index 69ea8f183..6fb9d5caa 100644 --- a/NebulaNetwork/PacketProcessors/Logistics/StorageUIProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Logistics/StorageUIProcessor.cs @@ -14,8 +14,6 @@ namespace NebulaNetwork.PacketProcessors.Logistics; [RegisterPacketProcessor] internal class StorageUIProcessor : PacketProcessor { - private readonly IPlayerManager playerManager = Multiplayer.Session.Network.PlayerManager; - protected override void ProcessPacket(StorageUI packet, NebulaConnection conn) { if (IsHost) @@ -25,8 +23,8 @@ protected override void ProcessPacket(StorageUI packet, NebulaConnection conn) Multiplayer.Session.StationsUI.UpdateStorage(packet); // broadcast to other clients - var player = playerManager.GetPlayer(conn); - playerManager.SendPacketToOtherPlayers(packet, player); + var player = Players.Get(conn); + Server.SendPacketExclude(packet, conn); // as we block some methods for the client he must run it once he receives this packet. // but only the one issued the request should get items refund diff --git a/NebulaNetwork/PacketProcessors/Players/PlayerMechaArmorProcessor.cs b/NebulaNetwork/PacketProcessors/Players/PlayerMechaArmorProcessor.cs index b2c377d7d..e9b29e575 100644 --- a/NebulaNetwork/PacketProcessors/Players/PlayerMechaArmorProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Players/PlayerMechaArmorProcessor.cs @@ -14,18 +14,16 @@ namespace NebulaNetwork.PacketProcessors.Players; [RegisterPacketProcessor] public class PlayerMechaArmorProcessor : PacketProcessor { - private readonly IPlayerManager playerManager = Multiplayer.Session.Network.PlayerManager; - protected override void ProcessPacket(PlayerMechaArmor packet, NebulaConnection conn) { INebulaPlayer player = null; if (IsHost) { // broadcast to other players - player = playerManager.GetPlayer(conn); + player = Players.Get(conn); if (player != null) { - playerManager.SendPacketToOtherPlayers(packet, player); + Server.SendPacketExclude(packet, conn); } } diff --git a/NebulaNetwork/PacketProcessors/Players/PlayerMechaDIYArmorProcessor.cs b/NebulaNetwork/PacketProcessors/Players/PlayerMechaDIYArmorProcessor.cs index 86f2c39b0..9dbd36117 100644 --- a/NebulaNetwork/PacketProcessors/Players/PlayerMechaDIYArmorProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Players/PlayerMechaDIYArmorProcessor.cs @@ -14,15 +14,13 @@ namespace NebulaNetwork.PacketProcessors.Players; [RegisterPacketProcessor] public class PlayerMechaDIYArmorProcessor : PacketProcessor { - private readonly IPlayerManager playerManager = Multiplayer.Session.Network.PlayerManager; - protected override void ProcessPacket(PlayerMechaDIYArmor packet, NebulaConnection conn) { // store DIYAppearance and items to serve them when player connects again if (IsHost) { using var reader = new BinaryUtils.Reader(packet.DIYAppearanceData); - var player = playerManager.GetPlayer(conn); + var player = Players.Get(conn); if (player == null) { return; diff --git a/NebulaNetwork/PacketProcessors/Players/PlayerMechaStatProcessor.cs b/NebulaNetwork/PacketProcessors/Players/PlayerMechaStatProcessor.cs index c585d6ea4..be97fc03c 100644 --- a/NebulaNetwork/PacketProcessors/Players/PlayerMechaStatProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Players/PlayerMechaStatProcessor.cs @@ -21,7 +21,7 @@ protected override void ProcessPacket(PlayerMechaStat packet, NebulaConnection c return; } - var player = Multiplayer.Session.Network.PlayerManager.GetPlayer(conn); + var player = Players.Get(conn); if (player == null) { return; diff --git a/NebulaNetwork/PacketProcessors/Players/PlayerMovementProcessor.cs b/NebulaNetwork/PacketProcessors/Players/PlayerMovementProcessor.cs index 00360a917..23b96570c 100644 --- a/NebulaNetwork/PacketProcessors/Players/PlayerMovementProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Players/PlayerMovementProcessor.cs @@ -14,11 +14,8 @@ namespace NebulaNetwork.PacketProcessors.Players; [RegisterPacketProcessor] public class PlayerMovementProcessor : PacketProcessor { - private readonly IPlayerManager playerManager; - public PlayerMovementProcessor() { - playerManager = Multiplayer.Session.Network.PlayerManager; } protected override void ProcessPacket(PlayerMovement packet, NebulaConnection conn) @@ -26,7 +23,7 @@ protected override void ProcessPacket(PlayerMovement packet, NebulaConnection co var valid = true; if (IsHost) { - var player = playerManager.GetPlayer(conn); + var player = Players.Get(conn); if (player != null) { player.Data.LocalPlanetId = packet.LocalPlanetId; @@ -35,7 +32,7 @@ protected override void ProcessPacket(PlayerMovement packet, NebulaConnection co player.Data.BodyRotation = packet.BodyRotation; player.Data.LocalPlanetPosition = packet.LocalPlanetPosition; - playerManager.SendPacketToOtherPlayers(packet, player); + Server.SendPacketExclude(packet, conn); } else { diff --git a/NebulaNetwork/PacketProcessors/Players/PlayerUpdateLocalStarIdProcessor.cs b/NebulaNetwork/PacketProcessors/Players/PlayerUpdateLocalStarIdProcessor.cs index 1eaaa333d..64aba2b4c 100644 --- a/NebulaNetwork/PacketProcessors/Players/PlayerUpdateLocalStarIdProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Players/PlayerUpdateLocalStarIdProcessor.cs @@ -14,11 +14,8 @@ namespace NebulaNetwork.PacketProcessors.Players; [RegisterPacketProcessor] internal class PlayerUpdateLocalStarIdProcessor : PacketProcessor { - private readonly IPlayerManager playerManager; - public PlayerUpdateLocalStarIdProcessor() { - playerManager = Multiplayer.Session.Network.PlayerManager; } protected override void ProcessPacket(PlayerUpdateLocalStarId packet, NebulaConnection conn) @@ -28,7 +25,7 @@ protected override void ProcessPacket(PlayerUpdateLocalStarId packet, NebulaConn return; } - var player = playerManager.GetPlayer(conn); + var player = Players.Get(conn); if (player != null) { player.Data.LocalStarId = packet.StarId; diff --git a/NebulaNetwork/PacketProcessors/Players/RemoveDroneOrdersProcessor.cs b/NebulaNetwork/PacketProcessors/Players/RemoveDroneOrdersProcessor.cs index 4add7b478..17dd74cca 100644 --- a/NebulaNetwork/PacketProcessors/Players/RemoveDroneOrdersProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Players/RemoveDroneOrdersProcessor.cs @@ -28,7 +28,7 @@ protected override void ProcessPacket(RemoveDroneOrdersPacket packet, NebulaConn // host needs to remove targets from DroneManager // but he also needs to RecycleDrone any rendered drone of this player // and as clients only send this when they are unable to handle a NewDroneOrder the host should search for the next closest player to ask for construction. - var player = Multiplayer.Session.Network.PlayerManager.GetPlayer(conn); + var player = Players.Get(conn); var factory = GameMain.galaxy.PlanetById(player.Data.LocalPlanetId)?.factory; Vector3 vector; diff --git a/NebulaNetwork/PacketProcessors/Routers/PlanetBroadcastProcessor.cs b/NebulaNetwork/PacketProcessors/Routers/PlanetBroadcastProcessor.cs index 2c6a6ab9a..d8aafde7e 100644 --- a/NebulaNetwork/PacketProcessors/Routers/PlanetBroadcastProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Routers/PlanetBroadcastProcessor.cs @@ -15,11 +15,8 @@ namespace NebulaNetwork.PacketProcessors.Routers; [RegisterPacketProcessor] internal class PlanetBroadcastProcessor : PacketProcessor { - private readonly IPlayerManager playerManager; - public PlanetBroadcastProcessor() { - playerManager = Multiplayer.Session.Network.PlayerManager; } protected override void ProcessPacket(PlanetBroadcastPacket packet, NebulaConnection conn) diff --git a/NebulaNetwork/PacketProcessors/Routers/StarBroadcastProcessor.cs b/NebulaNetwork/PacketProcessors/Routers/StarBroadcastProcessor.cs index 6d6c10305..c2779c3d8 100644 --- a/NebulaNetwork/PacketProcessors/Routers/StarBroadcastProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Routers/StarBroadcastProcessor.cs @@ -15,11 +15,8 @@ namespace NebulaNetwork.PacketProcessors.Routers; [RegisterPacketProcessor] internal class StarBroadcastProcessor: PacketProcessor { - private readonly IPlayerManager playerManager; - public StarBroadcastProcessor() { - playerManager = Multiplayer.Session.Network.PlayerManager; } protected override void ProcessPacket(StarBroadcastPacket packet, NebulaConnection conn) diff --git a/NebulaNetwork/PacketProcessors/Session/HandshakeRequestProcessor.cs b/NebulaNetwork/PacketProcessors/Session/HandshakeRequestProcessor.cs index efc9cb554..800e6f6ba 100644 --- a/NebulaNetwork/PacketProcessors/Session/HandshakeRequestProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Session/HandshakeRequestProcessor.cs @@ -19,8 +19,6 @@ namespace NebulaNetwork.PacketProcessors.Session; [RegisterPacketProcessor] public class HandshakeRequestProcessor : PacketProcessor { - private readonly IPlayerManager playerManager = Multiplayer.Session.Network.PlayerManager; - protected override void ProcessPacket(HandshakeRequest packet, NebulaConnection conn) { if (IsClient) @@ -28,15 +26,13 @@ protected override void ProcessPacket(HandshakeRequest packet, NebulaConnection return; } - using (playerManager.GetPendingPlayers(out var pendingPlayers)) + var pendingPlayer = Players.Get(conn, EConnectionStatus.Pending); + if (pendingPlayer is null) { - if (!pendingPlayers.TryGetValue(conn, out _)) - { - Multiplayer.Session.Server.Disconnect(conn, DisconnectionReason.InvalidData); - Log.Warn( - "WARNING: Player tried to handshake without being in the pending list. And he uses an outdated nebula version."); - return; - } + Multiplayer.Session.Server.Disconnect(conn, DisconnectionReason.InvalidData); + Log.Warn( + "WARNING: Player tried to handshake without being in the pending list. And he uses an outdated nebula version."); + return; } Multiplayer.Session.Server.Disconnect(conn, DisconnectionReason.ModVersionMismatch, "Nebula;0.7.7 or earlier;0.7.8 or greater"); diff --git a/NebulaNetwork/PacketProcessors/Session/LobbyRequestProcessor.cs b/NebulaNetwork/PacketProcessors/Session/LobbyRequestProcessor.cs index cd9cc309c..b8b4b5c1b 100644 --- a/NebulaNetwork/PacketProcessors/Session/LobbyRequestProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Session/LobbyRequestProcessor.cs @@ -27,8 +27,6 @@ namespace NebulaNetwork.PacketProcessors.Session; [RegisterPacketProcessor] public class LobbyRequestProcessor : PacketProcessor { - private readonly IPlayerManager playerManager = Multiplayer.Session.Network.PlayerManager; - protected override void ProcessPacket(LobbyRequest packet, NebulaConnection conn) { if (IsClient) @@ -36,60 +34,55 @@ protected override void ProcessPacket(LobbyRequest packet, NebulaConnection conn return; } - INebulaPlayer player; - using (playerManager.GetPendingPlayers(out var pendingPlayers)) + INebulaPlayer player = Players.Get(conn, EConnectionStatus.Pending); + + if (player is null) { - if (!pendingPlayers.TryGetValue(conn, out player)) - { - Multiplayer.Session.Server.Disconnect(conn, DisconnectionReason.InvalidData); - Log.Warn("WARNING: Player tried to enter lobby without being in the pending list"); - return; - } + Multiplayer.Session.Server.Disconnect(conn, DisconnectionReason.InvalidData); + Log.Warn("WARNING: Player tried to enter lobby without being in the pending list"); + return; + } - if (GameMain.isFullscreenPaused) - { - Log.Warn("Reject connection because server is still loading"); - Multiplayer.Session.Server.Disconnect(conn, DisconnectionReason.HostStillLoading); - // pendingPlayers.Remove(conn); - return; - } + if (GameMain.isFullscreenPaused) + { + Log.Warn("Reject connection because server is still loading"); + Multiplayer.Session.Server.Disconnect(conn, DisconnectionReason.HostStillLoading); + // pendingPlayers.Remove(conn); + return; + } - if (!ModsVersionCheck(packet, out var disconnectionReason, out var reasonMessage)) - { - Log.Warn("Reject connection because mods mismatch"); + if (!ModsVersionCheck(packet, out var disconnectionReason, out var reasonMessage)) + { + Log.Warn("Reject connection because mods mismatch"); - Multiplayer.Session.Server.Disconnect(conn, disconnectionReason, reasonMessage); - // pendingPlayers.Remove(conn); - return; - } + Multiplayer.Session.Server.Disconnect(conn, disconnectionReason, reasonMessage); + // pendingPlayers.Remove(conn); + return; } + var isNewUser = false; //TODO: some validation of client cert / generating auth challenge for the client // Load old data of the client var clientCertHash = CryptoUtils.Hash(packet.ClientCert); - using (playerManager.GetSavedPlayerData(out var savedPlayerData)) + if (SaveManager.PlayerSaves.TryGetValue(clientCertHash, out var value)) { - if (savedPlayerData.TryGetValue(clientCertHash, out var value)) + var playerData = value; { - var playerData = value; - using (playerManager.GetConnectedPlayers(out var connectedPlayers)) + foreach (var connectedPlayer in Players.Connected.Values.Where(connectedPlayer => connectedPlayer.Data == playerData)) { - foreach (var connectedPlayer in connectedPlayers.Values.Where(connectedPlayer => connectedPlayer.Data == playerData)) - { - playerData = value.CreateCopyWithoutMechaData(); - Log.Warn($"Copy playerData for duplicated player{playerData.PlayerId} {playerData.Username}"); - } + playerData = value.CreateCopyWithoutMechaData(); + Log.Warn($"Copy playerData for duplicated player{playerData.PlayerId} {playerData.Username}"); } - - player.LoadUserData(playerData); - } - else - { - // store player data once he fully loaded into the game (SyncCompleteProcessor) - isNewUser = true; } + + player.LoadUserData(playerData); + } + else + { + // store player data once he fully loaded into the game (SyncCompleteProcessor) + isNewUser = true; } // Add the username to the player data @@ -108,13 +101,8 @@ protected override void ProcessPacket(LobbyRequest packet, NebulaConnection conn // Make sure that each player that is currently in the game receives that a new player as join so they can create its RemotePlayerCharacter var pdata = new PlayerJoining((PlayerData)player.Data.CreateCopyWithoutMechaData(), Multiplayer.Session.NumPlayers); // Remove inventory from mecha data - using (playerManager.GetConnectedPlayers(out var connectedPlayers)) - { - foreach (var kvp in connectedPlayers) - { - kvp.Value.SendPacket(pdata); - } - } + + Server.SendPacket(pdata); //Add current tech bonuses to the connecting player based on the Host's mecha ((MechaData)player.Data.Mecha).TechBonuses = new PlayerTechBonuses(GameMain.mainPlayer.mecha); diff --git a/NebulaNetwork/PacketProcessors/Session/StartGameMessageProcessor.cs b/NebulaNetwork/PacketProcessors/Session/StartGameMessageProcessor.cs index cf3719f83..d38c1e760 100644 --- a/NebulaNetwork/PacketProcessors/Session/StartGameMessageProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Session/StartGameMessageProcessor.cs @@ -19,11 +19,8 @@ namespace NebulaNetwork.PacketProcessors.Session; [RegisterPacketProcessor] internal class StartGameMessageProcessor : PacketProcessor { - private readonly IPlayerManager playerManager; - public StartGameMessageProcessor() { - playerManager = Multiplayer.Session.Network.PlayerManager; } protected override void ProcessPacket(StartGameMessage packet, NebulaConnection conn) @@ -32,15 +29,12 @@ protected override void ProcessPacket(StartGameMessage packet, NebulaConnection { if (Multiplayer.Session.IsGameLoaded && !GameMain.isFullscreenPaused) { - INebulaPlayer player; - using (playerManager.GetPendingPlayers(out var pendingPlayers)) + INebulaPlayer player = Players.Get(conn, EConnectionStatus.Pending); + if (player is null) { - if (!pendingPlayers.TryGetValue(conn, out player)) - { - Multiplayer.Session.Server.Disconnect(conn, DisconnectionReason.InvalidData); - Log.Warn("WARNING: Player tried to enter the game without being in the pending list"); - return; - } + Multiplayer.Session.Server.Disconnect(conn, DisconnectionReason.InvalidData); + Log.Warn("WARNING: Player tried to enter the game without being in the pending list"); + return; } Multiplayer.Session.Server.Players.TryUpgrade(player, EConnectionStatus.Syncing); @@ -50,13 +44,8 @@ protected override void ProcessPacket(StartGameMessage packet, NebulaConnection // Make sure that each player that is currently in the game receives that a new player as join so they can create its RemotePlayerCharacter var pdata = new PlayerJoining((PlayerData)player.Data.CreateCopyWithoutMechaData(), Multiplayer.Session.NumPlayers); // Remove inventory from mecha data - using (playerManager.GetConnectedPlayers(out var connectedPlayers)) - { - foreach (var kvp in connectedPlayers) - { - kvp.Value.SendPacket(pdata); - } - } + + Server.SendPacket(pdata); //Add current tech bonuses to the connecting player based on the Host's mecha ((MechaData)player.Data.Mecha).TechBonuses = new PlayerTechBonuses(GameMain.mainPlayer.mecha); diff --git a/NebulaNetwork/PacketProcessors/Session/SyncCompleteProcessor.cs b/NebulaNetwork/PacketProcessors/Session/SyncCompleteProcessor.cs index 3fd9c1865..5e7b04b2d 100644 --- a/NebulaNetwork/PacketProcessors/Session/SyncCompleteProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Session/SyncCompleteProcessor.cs @@ -18,8 +18,6 @@ namespace NebulaNetwork.PacketProcessors.Session; [RegisterPacketProcessor] public class SyncCompleteProcessor : PacketProcessor { - private readonly IPlayerManager playerManager = Multiplayer.Session.Network.PlayerManager; - protected override void ProcessPacket(SyncComplete packet, NebulaConnection conn) { if (IsHost) @@ -43,7 +41,7 @@ protected override void ProcessPacket(SyncComplete packet, NebulaConnection conn private void ServerSyncComplete(SyncComplete packet, NebulaConnection conn) { - var player = playerManager.GetSyncingPlayer(conn); + var player = Players.Get(conn, EConnectionStatus.Syncing); if (player == null) { Log.Warn("Received a SyncComplete packet, but no player is joining."); @@ -68,7 +66,7 @@ private void ServerSyncComplete(SyncComplete packet, NebulaConnection conn) } var inGamePlayersDatas = Multiplayer.Session.Server.Players.GetAllPlayerData(); - playerManager.SendPacketToAllPlayers(new SyncComplete(inGamePlayersDatas)); + Server.SendPacket(new SyncComplete(inGamePlayersDatas)); // Since the host is always in the game he could already have changed his mecha armor, so send it to the new player. using (var writer = new BinaryUtils.Writer()) @@ -83,7 +81,7 @@ private void ServerSyncComplete(SyncComplete packet, NebulaConnection conn) using (var writer = new BinaryUtils.Writer()) { player.Data.Appearance.Export(writer.BinaryWriter); - playerManager.SendPacketToAllPlayers(new PlayerMechaArmor(player.Id, writer.CloseAndGetBytes())); + Server.SendPacket(new PlayerMechaArmor(player.Id, writer.CloseAndGetBytes())); } // and load custom appearance on host side too diff --git a/NebulaNetwork/PacketProcessors/Statistics/MilestoneUnlockProcessor.cs b/NebulaNetwork/PacketProcessors/Statistics/MilestoneUnlockProcessor.cs index 6a37d6879..3d8ced9ab 100644 --- a/NebulaNetwork/PacketProcessors/Statistics/MilestoneUnlockProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Statistics/MilestoneUnlockProcessor.cs @@ -15,15 +15,14 @@ internal class MilestoneUnlockProcessor : PacketProcessor { protected override void ProcessPacket(MilestoneUnlockPacket packet, NebulaConnection conn) { - var playerManager = Multiplayer.Session.Network.PlayerManager; var valid = true; if (IsHost) { - var player = playerManager.GetPlayer(conn); + var player = Players.Get(conn); if (player != null) { - playerManager.SendPacketToOtherPlayers(packet, player); + Server.SendPacketExclude(packet, conn); } else { diff --git a/NebulaNetwork/PacketProcessors/Statistics/StatisticsRequestEventProcessor.cs b/NebulaNetwork/PacketProcessors/Statistics/StatisticsRequestEventProcessor.cs index a69ce6682..3ece1f678 100644 --- a/NebulaNetwork/PacketProcessors/Statistics/StatisticsRequestEventProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Statistics/StatisticsRequestEventProcessor.cs @@ -16,8 +16,6 @@ namespace NebulaNetwork.PacketProcessors.Statistics; [RegisterPacketProcessor] internal class StatisticsRequestEventProcessor : PacketProcessor { - private readonly IPlayerManager playerManager = Multiplayer.Session.Network.PlayerManager; - protected override void ProcessPacket(StatisticsRequestEvent packet, NebulaConnection conn) { if (IsClient) @@ -25,7 +23,7 @@ protected override void ProcessPacket(StatisticsRequestEvent packet, NebulaConne return; } - var player = playerManager.GetPlayer(conn); + var player = Players.Get(conn); if (player == null) { return; diff --git a/NebulaNetwork/PacketProcessors/Trash/TrashSystemClearAllTrashProcessor.cs b/NebulaNetwork/PacketProcessors/Trash/TrashSystemClearAllTrashProcessor.cs index 9574789fd..212da0e53 100644 --- a/NebulaNetwork/PacketProcessors/Trash/TrashSystemClearAllTrashProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Trash/TrashSystemClearAllTrashProcessor.cs @@ -14,11 +14,8 @@ namespace NebulaNetwork.PacketProcessors.Trash; [RegisterPacketProcessor] internal class TrashSystemClearAllTrashProcessor : PacketProcessor { - private readonly IPlayerManager playerManager; - public TrashSystemClearAllTrashProcessor() { - playerManager = Multiplayer.Session.Network.PlayerManager; } protected override void ProcessPacket(TrashSystemClearAllTrashPacket packet, NebulaConnection conn) @@ -26,10 +23,10 @@ protected override void ProcessPacket(TrashSystemClearAllTrashPacket packet, Neb var valid = true; if (IsHost) { - var player = playerManager.GetPlayer(conn); + var player = Players.Get(conn); if (player != null) { - playerManager.SendPacketToOtherPlayers(packet, player); + Server.SendPacketExclude(packet, conn); } else { diff --git a/NebulaNetwork/PacketProcessors/Trash/TrashSystemNewTrashCreatedProcessor.cs b/NebulaNetwork/PacketProcessors/Trash/TrashSystemNewTrashCreatedProcessor.cs index 8164656a0..317635925 100644 --- a/NebulaNetwork/PacketProcessors/Trash/TrashSystemNewTrashCreatedProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Trash/TrashSystemNewTrashCreatedProcessor.cs @@ -15,11 +15,8 @@ namespace NebulaNetwork.PacketProcessors.Trash; [RegisterPacketProcessor] internal class TrashSystemNewTrashCreatedProcessor : PacketProcessor { - private readonly IPlayerManager playerManager; - public TrashSystemNewTrashCreatedProcessor() { - playerManager = Multiplayer.Session.Network.PlayerManager; } protected override void ProcessPacket(TrashSystemNewTrashCreatedPacket packet, NebulaConnection conn) @@ -27,10 +24,10 @@ protected override void ProcessPacket(TrashSystemNewTrashCreatedPacket packet, N var valid = true; if (IsHost) { - var player = playerManager.GetPlayer(conn); + var player = Players.Get(conn); if (player != null) { - playerManager.SendPacketToOtherPlayers(packet, player); + Server.SendPacketExclude(packet, conn); } else { diff --git a/NebulaNetwork/PacketProcessors/Trash/TrashSystemTrashRemovedProcessor.cs b/NebulaNetwork/PacketProcessors/Trash/TrashSystemTrashRemovedProcessor.cs index 74ad1cb93..6500cf0a7 100644 --- a/NebulaNetwork/PacketProcessors/Trash/TrashSystemTrashRemovedProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Trash/TrashSystemTrashRemovedProcessor.cs @@ -17,7 +17,7 @@ protected override void ProcessPacket(TrashSystemTrashRemovedPacket packet, Nebu { if (IsHost) { - Multiplayer.Session.Network.PlayerManager.SendPacketToOtherPlayers(packet, conn); + Server.SendPacketExclude(packet, conn); } using (Multiplayer.Session.Trashes.RemoveTrashFromOtherPlayers.On()) { diff --git a/NebulaNetwork/PacketProcessors/Universe/NameInputProcessor.cs b/NebulaNetwork/PacketProcessors/Universe/NameInputProcessor.cs index aaacc985e..27b24f48a 100644 --- a/NebulaNetwork/PacketProcessors/Universe/NameInputProcessor.cs +++ b/NebulaNetwork/PacketProcessors/Universe/NameInputProcessor.cs @@ -19,21 +19,18 @@ namespace NebulaNetwork.PacketProcessors.Universe; [RegisterPacketProcessor] internal class NameInputProcessor : PacketProcessor { - private readonly IPlayerManager playerManager; - public NameInputProcessor() { - playerManager = Multiplayer.Session.Network.PlayerManager; } protected override void ProcessPacket(NameInputPacket packet, NebulaConnection conn) { if (IsHost) { - var player = playerManager.GetPlayer(conn); + var player = Players.Get(conn); if (player != null) { - playerManager.SendPacketToOtherPlayers(packet, player); + Server.SendPacketExclude(packet, conn); } } diff --git a/NebulaPatcher/Patches/Dynamic/UICombatSettingsDF_Patch.cs b/NebulaPatcher/Patches/Dynamic/UICombatSettingsDF_Patch.cs index ee93efab1..0250a796f 100644 --- a/NebulaPatcher/Patches/Dynamic/UICombatSettingsDF_Patch.cs +++ b/NebulaPatcher/Patches/Dynamic/UICombatSettingsDF_Patch.cs @@ -27,20 +27,10 @@ public static void ApplySettings_Postfix(UICombatSettingsDF __instance) } // syncing players are those who have not loaded into the game yet, so they might still be in the lobby. they need to check if this packet is relevant for them in the corresponding handler. // just remembered others cant be in game anyways when host ist still in lobby >.> - using (Multiplayer.Session.Network.PlayerManager.GetSyncingPlayers(out var syncingPlayers)) - { - foreach (var entry in syncingPlayers) - { - entry.Key.SendPacket(new LobbyUpdateCombatValues(__instance.gameDesc.combatSettings)); - } - } - using (Multiplayer.Session.Network.PlayerManager.GetPendingPlayers(out var pendingPlayers)) - { - foreach (var entry in pendingPlayers) - { - entry.Key.SendPacket(new LobbyUpdateCombatValues(__instance.gameDesc.combatSettings)); - } - } + var server = Multiplayer.Session.Server; + var players = server.Players; + server.SendToPlayers(players.Syncing, new LobbyUpdateCombatValues(__instance.gameDesc.combatSettings)); + server.SendToPlayers(players.Pending, new LobbyUpdateCombatValues(__instance.gameDesc.combatSettings)); } } } diff --git a/NebulaPatcher/Patches/Dynamic/UIGalaxySelect_Patch.cs b/NebulaPatcher/Patches/Dynamic/UIGalaxySelect_Patch.cs index 81abb4340..937c1574c 100644 --- a/NebulaPatcher/Patches/Dynamic/UIGalaxySelect_Patch.cs +++ b/NebulaPatcher/Patches/Dynamic/UIGalaxySelect_Patch.cs @@ -43,10 +43,12 @@ public static void _OnOpen_Postfix(UIGalaxySelect __instance) childObject.SetActive(false); } } + if (!Multiplayer.IsActive) { return; } + // show lobby hints if needed if (Config.Options.ShowLobbyHints) { @@ -72,6 +74,7 @@ public static void _OnOpen_Postfix(UIGalaxySelect __instance) "Okay, cool :)", CloseLobbyInfo); } + // prepare PlanetModelingManager for the use of its compute thread as we need that for the planet details view in the lobby PlanetModelingManager.PrepareWorks(); // store current star id because entering the solar system details view messes up the main menu background system. @@ -96,6 +99,7 @@ public static bool EnterGame_Prefix(UIGalaxySelect __instance) { return true; } + Multiplayer.Session.IsInLobby = false; if (UIVirtualStarmap_Transpiler.CustomBirthPlanet != -1) @@ -117,8 +121,8 @@ public static bool EnterGame_Prefix(UIGalaxySelect __instance) { Multiplayer.Session.Network.SendPacket(new StartGameMessage()); } - return false; + return false; } [HarmonyPrefix] @@ -178,6 +182,7 @@ public static void SetStarmapGalaxy_Prefix() { return; } + UIVirtualStarmap_Transpiler.CustomBirthStar = -1; UIVirtualStarmap_Transpiler.CustomBirthPlanet = -1; } @@ -190,26 +195,18 @@ public static void UpdateParametersUIDisplay_Postfix(UIGalaxySelect __instance) { return; } + // syncing players are those who have not loaded into the game yet, so they might still be in the lobby. they need to check if this packet is relevant for them in the corresponding handler. // just remembered others cant be in game anyways when host ist still in lobby >.> - using (Multiplayer.Session.Network.PlayerManager.GetSyncingPlayers(out var syncingPlayers)) - { - foreach (var entry in syncingPlayers) - { - entry.Key.SendPacket(new LobbyUpdateValues(__instance.gameDesc.galaxyAlgo, __instance.gameDesc.galaxySeed, - __instance.gameDesc.starCount, __instance.gameDesc.resourceMultiplier, - __instance.gameDesc.isSandboxMode, __instance.gameDesc.isPeaceMode, __instance.gameDesc.combatSettings)); - } - } - using (Multiplayer.Session.Network.PlayerManager.GetPendingPlayers(out var pendingPlayers)) - { - foreach (var entry in pendingPlayers) - { - entry.Key.SendPacket(new LobbyUpdateValues(__instance.gameDesc.galaxyAlgo, __instance.gameDesc.galaxySeed, - __instance.gameDesc.starCount, __instance.gameDesc.resourceMultiplier, - __instance.gameDesc.isSandboxMode, __instance.gameDesc.isPeaceMode, __instance.gameDesc.combatSettings)); - } - } + var packet = new LobbyUpdateValues(__instance.gameDesc.galaxyAlgo, __instance.gameDesc.galaxySeed, + __instance.gameDesc.starCount, __instance.gameDesc.resourceMultiplier, + __instance.gameDesc.isSandboxMode, __instance.gameDesc.isPeaceMode, __instance.gameDesc.combatSettings); + + var server = Multiplayer.Session.Server; + var players = server.Players; + + server.SendToPlayers(players.Syncing, packet); + server.SendToPlayers(players.Pending, packet); } [HarmonyPostfix] @@ -221,6 +218,7 @@ public static void _OnUpdate_Postfix(UIGalaxySelect __instance) { return; } + // as we need to load and generate planets for the detail view in the lobby, update the loading process here PlanetModelingManager.ModelingPlanetCoroutine(); UIRoot.instance.uiGame.planetDetail._OnUpdate(); @@ -228,6 +226,7 @@ public static void _OnUpdate_Postfix(UIGalaxySelect __instance) { return; } + // zoom in/out when scrolling var delta = (Input.mouseScrollDelta.y < 0 ? 1f : -1f) * (VFInput.shift ? 1f : 0.1f); __instance.cameraPoser.distRatio += delta; @@ -261,7 +260,6 @@ private static void DisableDarkFogToggle() private static void RestoreDarkFogToggleState() { - if (DFToggle != null) { // we are setting the (originally) private m_IsOn here since setting the public isOn will fire an event which leads to a NRE diff --git a/NebulaPatcher/Patches/Transpilers/BattleBaseComponent_Transpiler.cs b/NebulaPatcher/Patches/Transpilers/BattleBaseComponent_Transpiler.cs index cba8adff6..b74814240 100644 --- a/NebulaPatcher/Patches/Transpilers/BattleBaseComponent_Transpiler.cs +++ b/NebulaPatcher/Patches/Transpilers/BattleBaseComponent_Transpiler.cs @@ -104,7 +104,7 @@ private static void AddPlayerSandCount(TrashSystem trashSystem, int trashId, int { if (Multiplayer.IsActive && !Config.Options.SyncSoil) // Host { - using (Multiplayer.Session.Network.PlayerManager.GetConnectedPlayers(out var connectedPlayers)) + var connectedPlayers = Multiplayer.Session.Server.Players.Connected; { var totalPlayerCount = connectedPlayers.Count + (Multiplayer.IsDedicated ? 0 : 1); if (totalPlayerCount > 0) @@ -112,10 +112,7 @@ private static void AddPlayerSandCount(TrashSystem trashSystem, int trashId, int // Sand gain is split between all connecting players sandCount = (int)((float)sandCount / totalPlayerCount + 0.5f); var packet = new PlayerSandCount(sandCount, true); - foreach (var kvp in connectedPlayers) - { - kvp.Value.SendPacket(packet); - } + Multiplayer.Session.Server.SendPacket(packet); } } } diff --git a/NebulaWorld/Chat/Commands/WhisperCommandHandler.cs b/NebulaWorld/Chat/Commands/WhisperCommandHandler.cs index 3c7dc5d98..81624a216 100644 --- a/NebulaWorld/Chat/Commands/WhisperCommandHandler.cs +++ b/NebulaWorld/Chat/Commands/WhisperCommandHandler.cs @@ -36,7 +36,7 @@ public void Execute(ChatWindow window, string[] parameters) if (Multiplayer.Session.LocalPlayer.IsHost) { - var recipient = Multiplayer.Session.Network.PlayerManager.GetConnectedPlayerByUsername(recipientUserName); + var recipient = Multiplayer.Session.Server.Players.Get(recipientUserName); if (recipient == null) { window.SendLocalChatMessage("Player not found: ".Translate() + recipientUserName, diff --git a/NebulaWorld/Player/DroneManager.cs b/NebulaWorld/Player/DroneManager.cs index cb33a127c..da8d18a6d 100644 --- a/NebulaWorld/Player/DroneManager.cs +++ b/NebulaWorld/Player/DroneManager.cs @@ -95,7 +95,7 @@ public static void RemoveOrphanDronePlans(List allPlayerIds) var dronePlans = GetPlayerDronePlans(kv.Key); if (dronePlans.Length > 0) { - var player = Multiplayer.Session.Network.PlayerManager.GetPlayerById(kv.Key); + var player = Multiplayer.Session.Server.Players.Get(kv.Key); Multiplayer.Session.Network.SendPacketToPlanet(new RemoveDroneOrdersPacket(dronePlans, CachedPositions[kv.Key].PlanetId), player.Data.LocalPlanetId);