diff --git a/Content.Server/EntryPoint.cs b/Content.Server/EntryPoint.cs index 2f38720c27..23fede6ba9 100644 --- a/Content.Server/EntryPoint.cs +++ b/Content.Server/EntryPoint.cs @@ -35,6 +35,8 @@ namespace Content.Server { private IBaseServer _server; private IPlayerManager _players; + private IEntityManager entityManager; + private IChatManager chatManager; private bool _countdownStarted; @@ -45,6 +47,8 @@ namespace Content.Server _server = IoCManager.Resolve(); _players = IoCManager.Resolve(); + entityManager = IoCManager.Resolve(); + chatManager = IoCManager.Resolve(); _server.RunLevelChanged += HandleRunLevelChanged; _players.PlayerStatusChanged += HandlePlayerStatusChanged; @@ -116,7 +120,7 @@ namespace Content.Server base.Dispose(disposing); } - private static void HandleRunLevelChanged(object sender, RunLevelChangedEventArgs args) + private void HandleRunLevelChanged(object sender, RunLevelChangedEventArgs args) { switch (args.NewLevel) { @@ -128,20 +132,20 @@ namespace Content.Server var newMap = mapMan.CreateMap(); var grid = mapLoader.LoadBlueprint(newMap, "Maps/stationstation.yml"); - IoCManager.Resolve().FallbackSpawnPoint = new GridLocalCoordinates(Vector2.Zero, grid); + _players.FallbackSpawnPoint = new GridLocalCoordinates(Vector2.Zero, grid); var startTime = timing.RealTime; var timeSpan = timing.RealTime - startTime; Logger.Info($"Loaded map in {timeSpan.TotalMilliseconds:N2}ms."); - IoCManager.Resolve().DispatchMessage(ChatChannel.Server, "Gamemode: Round loaded!"); + chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Round loaded!"); break; case ServerRunLevel.Game: - IoCManager.Resolve().SendJoinGameToAll(); - IoCManager.Resolve().DispatchMessage(ChatChannel.Server, "Gamemode: Round started!"); + _players.SendJoinGameToAll(); + chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Round started!"); break; case ServerRunLevel.PostGame: - IoCManager.Resolve().DispatchMessage(ChatChannel.Server, "Gamemode: Round over!"); + chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Round over!"); break; } } @@ -155,7 +159,7 @@ namespace Content.Server // timer time must be > tick length Timer.Spawn(250, args.Session.JoinLobby); - IoCManager.Resolve().DispatchMessage(ChatChannel.Server, "Gamemode: Player joined server!", args.Session.Index); + chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Player joined server!", args.Session.SessionId); } break; @@ -172,22 +176,30 @@ namespace Content.Server }); } - IoCManager.Resolve().DispatchMessage(ChatChannel.Server, "Gamemode: Player joined Lobby!", args.Session.Index); + chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Player joined Lobby!", args.Session.SessionId); } break; case SessionStatus.InGame: { //TODO: Check for existing mob and re-attach - IoCManager.Resolve().SpawnPlayerMob(args.Session); - - IoCManager.Resolve().DispatchMessage(ChatChannel.Server, "Gamemode: Player joined Game!", args.Session.Index); + var session = args.Session; + if (session.Data.AttachedEntityUid.HasValue + && entityManager.TryGetEntity(session.Data.AttachedEntityUid.Value, out var entity)) + { + session.AttachToEntity(entity); + } + else + { + _players.SpawnPlayerMob(args.Session); + } + chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Player joined Game!", args.Session.SessionId); } break; case SessionStatus.Disconnected: { - IoCManager.Resolve().DispatchMessage(ChatChannel.Server, "Gamemode: Player left!", args.Session.Index); + chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Player left!", args.Session.SessionId); } break; } diff --git a/Content.Server/GameObjects/EntitySystems/Click/ExamineSystem.cs b/Content.Server/GameObjects/EntitySystems/Click/ExamineSystem.cs index 4f99ad18b8..3a671a579c 100644 --- a/Content.Server/GameObjects/EntitySystems/Click/ExamineSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/Click/ExamineSystem.cs @@ -76,7 +76,7 @@ namespace Content.Server.GameObjects.EntitySystems } //Send to client chat channel - IoCManager.Resolve().DispatchMessage(SS14.Shared.Console.ChatChannel.Visual, fullExamineText.ToString(), session.Index); + IoCManager.Resolve().DispatchMessage(SS14.Shared.Console.ChatChannel.Visual, fullExamineText.ToString(), session.SessionId); } } } diff --git a/engine b/engine index bddd355f17..d8a5a617fe 160000 --- a/engine +++ b/engine @@ -1 +1 @@ -Subproject commit bddd355f178c986f7ba691297c776d569a4909b3 +Subproject commit d8a5a617fef275ed61e0ee41e01a9cbca9cfad87