Rejoin into the same body. (#96)

Depends on https://github.com/space-wizards/space-station-14/pull/659
This commit is contained in:
Pieter-Jan Briers
2018-08-20 11:47:00 +02:00
committed by GitHub
parent edb3eb5b2e
commit e8c4dc9a34
3 changed files with 26 additions and 14 deletions

View File

@@ -35,6 +35,8 @@ namespace Content.Server
{ {
private IBaseServer _server; private IBaseServer _server;
private IPlayerManager _players; private IPlayerManager _players;
private IEntityManager entityManager;
private IChatManager chatManager;
private bool _countdownStarted; private bool _countdownStarted;
@@ -45,6 +47,8 @@ namespace Content.Server
_server = IoCManager.Resolve<IBaseServer>(); _server = IoCManager.Resolve<IBaseServer>();
_players = IoCManager.Resolve<IPlayerManager>(); _players = IoCManager.Resolve<IPlayerManager>();
entityManager = IoCManager.Resolve<IEntityManager>();
chatManager = IoCManager.Resolve<IChatManager>();
_server.RunLevelChanged += HandleRunLevelChanged; _server.RunLevelChanged += HandleRunLevelChanged;
_players.PlayerStatusChanged += HandlePlayerStatusChanged; _players.PlayerStatusChanged += HandlePlayerStatusChanged;
@@ -116,7 +120,7 @@ namespace Content.Server
base.Dispose(disposing); base.Dispose(disposing);
} }
private static void HandleRunLevelChanged(object sender, RunLevelChangedEventArgs args) private void HandleRunLevelChanged(object sender, RunLevelChangedEventArgs args)
{ {
switch (args.NewLevel) switch (args.NewLevel)
{ {
@@ -128,20 +132,20 @@ namespace Content.Server
var newMap = mapMan.CreateMap(); var newMap = mapMan.CreateMap();
var grid = mapLoader.LoadBlueprint(newMap, "Maps/stationstation.yml"); var grid = mapLoader.LoadBlueprint(newMap, "Maps/stationstation.yml");
IoCManager.Resolve<IPlayerManager>().FallbackSpawnPoint = new GridLocalCoordinates(Vector2.Zero, grid); _players.FallbackSpawnPoint = new GridLocalCoordinates(Vector2.Zero, grid);
var startTime = timing.RealTime; var startTime = timing.RealTime;
var timeSpan = timing.RealTime - startTime; var timeSpan = timing.RealTime - startTime;
Logger.Info($"Loaded map in {timeSpan.TotalMilliseconds:N2}ms."); Logger.Info($"Loaded map in {timeSpan.TotalMilliseconds:N2}ms.");
IoCManager.Resolve<IChatManager>().DispatchMessage(ChatChannel.Server, "Gamemode: Round loaded!"); chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Round loaded!");
break; break;
case ServerRunLevel.Game: case ServerRunLevel.Game:
IoCManager.Resolve<IPlayerManager>().SendJoinGameToAll(); _players.SendJoinGameToAll();
IoCManager.Resolve<IChatManager>().DispatchMessage(ChatChannel.Server, "Gamemode: Round started!"); chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Round started!");
break; break;
case ServerRunLevel.PostGame: case ServerRunLevel.PostGame:
IoCManager.Resolve<IChatManager>().DispatchMessage(ChatChannel.Server, "Gamemode: Round over!"); chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Round over!");
break; break;
} }
} }
@@ -155,7 +159,7 @@ namespace Content.Server
// timer time must be > tick length // timer time must be > tick length
Timer.Spawn(250, args.Session.JoinLobby); Timer.Spawn(250, args.Session.JoinLobby);
IoCManager.Resolve<IChatManager>().DispatchMessage(ChatChannel.Server, "Gamemode: Player joined server!", args.Session.Index); chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Player joined server!", args.Session.SessionId);
} }
break; break;
@@ -172,22 +176,30 @@ namespace Content.Server
}); });
} }
IoCManager.Resolve<IChatManager>().DispatchMessage(ChatChannel.Server, "Gamemode: Player joined Lobby!", args.Session.Index); chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Player joined Lobby!", args.Session.SessionId);
} }
break; break;
case SessionStatus.InGame: case SessionStatus.InGame:
{ {
//TODO: Check for existing mob and re-attach //TODO: Check for existing mob and re-attach
IoCManager.Resolve<IPlayerManager>().SpawnPlayerMob(args.Session); var session = args.Session;
if (session.Data.AttachedEntityUid.HasValue
IoCManager.Resolve<IChatManager>().DispatchMessage(ChatChannel.Server, "Gamemode: Player joined Game!", args.Session.Index); && 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; break;
case SessionStatus.Disconnected: case SessionStatus.Disconnected:
{ {
IoCManager.Resolve<IChatManager>().DispatchMessage(ChatChannel.Server, "Gamemode: Player left!", args.Session.Index); chatManager.DispatchMessage(ChatChannel.Server, "Gamemode: Player left!", args.Session.SessionId);
} }
break; break;
} }

View File

@@ -76,7 +76,7 @@ namespace Content.Server.GameObjects.EntitySystems
} }
//Send to client chat channel //Send to client chat channel
IoCManager.Resolve<IChatManager>().DispatchMessage(SS14.Shared.Console.ChatChannel.Visual, fullExamineText.ToString(), session.Index); IoCManager.Resolve<IChatManager>().DispatchMessage(SS14.Shared.Console.ChatChannel.Visual, fullExamineText.ToString(), session.SessionId);
} }
} }
} }

2
engine

Submodule engine updated: bddd355f17...d8a5a617fe