Rejoin into the same body. (#96)
Depends on https://github.com/space-wizards/space-station-14/pull/659
This commit is contained in:
committed by
GitHub
parent
edb3eb5b2e
commit
e8c4dc9a34
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
2
engine
Submodule engine updated: bddd355f17...d8a5a617fe
Reference in New Issue
Block a user