return spawnableStations;
}
- private void SpawnPlayers(List<ICommonSession> readyPlayers, Dictionary<NetUserId, HumanoidCharacterProfile> profiles, bool force)
+ private void SpawnPlayers(List<ICommonSession> readyPlayers,
+ Dictionary<NetUserId, HumanoidCharacterProfile> profiles,
+ bool force)
{
// Allow game rules to spawn players by themselves if needed. (For example, nuke ops or wizard)
RaiseLocalEvent(new RulePlayerSpawningEvent(readyPlayers, profiles, force));
if (job == null)
{
var playerSession = _playerManager.GetSessionById(netUser);
- _chatManager.DispatchServerMessage(playerSession, Loc.GetString("job-not-available-wait-in-lobby"));
+ _chatManager.DispatchServerMessage(playerSession,
+ Loc.GetString("job-not-available-wait-in-lobby"));
}
else
{
RefreshLateJoinAllowed();
// Allow rules to add roles to players who have been spawned in. (For example, on-station traitors)
- RaiseLocalEvent(new RulePlayerJobsAssignedEvent(assignedJobs.Keys.Select(x => _playerManager.GetSessionById(x)).ToArray(), profiles, force));
+ RaiseLocalEvent(new RulePlayerJobsAssignedEvent(
+ assignedJobs.Keys.Select(x => _playerManager.GetSessionById(x)).ToArray(),
+ profiles,
+ force));
}
- private void SpawnPlayer(ICommonSession player, EntityUid station, string? jobId = null, bool lateJoin = true, bool silent = false)
+ private void SpawnPlayer(ICommonSession player,
+ EntityUid station,
+ string? jobId = null,
+ bool lateJoin = true,
+ bool silent = false)
{
var character = GetPlayerProfile(player);
SpawnPlayer(player, character, station, jobId, lateJoin, silent);
}
- private void SpawnPlayer(ICommonSession player, HumanoidCharacterProfile character, EntityUid station, string? jobId = null, bool lateJoin = true, bool silent = false)
+ private void SpawnPlayer(ICommonSession player,
+ HumanoidCharacterProfile character,
+ EntityUid station,
+ string? jobId = null,
+ bool lateJoin = true,
+ bool silent = false)
{
// Can't spawn players with a dummy ticker!
if (DummyTicker)
restrictedRoles.UnionWith(jobBans);
// Pick best job best on prefs.
- jobId ??= _stationJobs.PickBestAvailableJobWithPriority(station, character.JobPriorities, true,
+ jobId ??= _stationJobs.PickBestAvailableJobWithPriority(station,
+ character.JobPriorities,
+ true,
restrictedRoles);
// If no job available, stay in lobby, or if no lobby spawn as observer
if (jobId is null)
{
JoinAsObserver(player);
}
- _chatManager.DispatchServerMessage(player, Loc.GetString("game-ticker-player-no-jobs-available-when-joining"));
+
+ _chatManager.DispatchServerMessage(player,
+ Loc.GetString("game-ticker-player-no-jobs-available-when-joining"));
return;
}
_mind.SetUserId(newMind, data.UserId);
var jobPrototype = _prototypeManager.Index<JobPrototype>(jobId);
- var job = new JobComponent { Prototype = jobId };
+ var job = new JobComponent {Prototype = jobId};
_roles.MindAddRole(newMind, job, silent: silent);
var jobName = _jobs.MindTryGetJobName(newMind);
if (lateJoin && !silent)
{
_chatSystem.DispatchStationAnnouncement(station,
- Loc.GetString(
- "latejoin-arrival-announcement",
- ("character", MetaData(mob).EntityName),
- ("job", CultureInfo.CurrentCulture.TextInfo.ToTitleCase(jobName))
- ), Loc.GetString("latejoin-arrival-sender"),
+ Loc.GetString("latejoin-arrival-announcement",
+ ("character", MetaData(mob).EntityName),
+ ("job", CultureInfo.CurrentCulture.TextInfo.ToTitleCase(jobName))),
+ Loc.GetString("latejoin-arrival-sender"),
playDefaultSound: false);
}
_stationJobs.TryAssignJob(station, jobPrototype, player.UserId);
if (lateJoin)
- _adminLogger.Add(LogType.LateJoin, LogImpact.Medium, $"Player {player.Name} late joined as {character.Name:characterName} on station {Name(station):stationName} with {ToPrettyString(mob):entity} as a {jobName:jobName}.");
+ _adminLogger.Add(LogType.LateJoin,
+ LogImpact.Medium,
+ $"Player {player.Name} late joined as {character.Name:characterName} on station {Name(station):stationName} with {ToPrettyString(mob):entity} as a {jobName:jobName}.");
else
- _adminLogger.Add(LogType.RoundStartJoin, LogImpact.Medium, $"Player {player.Name} joined as {character.Name:characterName} on station {Name(station):stationName} with {ToPrettyString(mob):entity} as a {jobName:jobName}.");
+ _adminLogger.Add(LogType.RoundStartJoin,
+ LogImpact.Medium,
+ $"Player {player.Name} joined as {character.Name:characterName} on station {Name(station):stationName} with {ToPrettyString(mob):entity} as a {jobName:jobName}.");
// Make sure they're aware of extended access.
if (Comp<StationJobsComponent>(station).ExtendedAccess
- && (jobPrototype.ExtendedAccess.Count > 0
- || jobPrototype.ExtendedAccessGroups.Count > 0))
+ && (jobPrototype.ExtendedAccess.Count > 0 || jobPrototype.ExtendedAccessGroups.Count > 0))
{
_chatManager.DispatchServerMessage(player, Loc.GetString("job-greet-crew-shortages"));
}
}
else
{
- _chatManager.DispatchServerMessage(player, Loc.GetString("latejoin-arrivals-direction-time",
- ("time", $"{arrival:mm\\:ss}")));
+ _chatManager.DispatchServerMessage(player,
+ Loc.GetString("latejoin-arrivals-direction-time", ("time", $"{arrival:mm\\:ss}")));
}
}
// We raise this event directed to the mob, but also broadcast it so game rules can do something now.
PlayersJoinedRoundNormally++;
- var aev = new PlayerSpawnCompleteEvent(mob, player, jobId, lateJoin, PlayersJoinedRoundNormally, station, character);
+ var aev = new PlayerSpawnCompleteEvent(mob,
+ player,
+ jobId,
+ lateJoin,
+ PlayersJoinedRoundNormally,
+ station,
+ character);
RaiseLocalEvent(mob, aev, true);
}
/// <param name="station">The station they're spawning on</param>
/// <param name="jobId">An optional job for them to spawn as</param>
/// <param name="silent">Whether or not the player should be greeted upon joining</param>
- public void MakeJoinGame(ICommonSession player, EntityUid station, string? jobId = null, bool silent = false)
+ public void MakeJoinGame(ICommonSession player,
+ EntityUid station,
+ string? jobId = null,
+ bool silent = false)
{
if (!_playerGameStatuses.ContainsKey(player.UserId))
return;
_metaData.SetEntityName(ghost, name);
_ghost.SetCanReturnToBody(ghost, false);
_mind.TransferTo(mind.Value, ghost);
- _adminLogger.Add(LogType.LateJoin, LogImpact.Low, $"{player.Name} late joined the round as an Observer with {ToPrettyString(ghost):entity}.");
+ _adminLogger.Add(LogType.LateJoin,
+ LogImpact.Low,
+ $"{player.Name} late joined the round as an Observer with {ToPrettyString(ghost):entity}.");
}
#region Mob Spawning Helpers
+
private EntityUid SpawnObserverMob()
{
var coordinates = GetObserverSpawnPoint();
return EntityManager.SpawnEntity(ObserverPrototypeName, coordinates);
}
+
#endregion
#region Spawn Points
+
public EntityCoordinates GetObserverSpawnPoint()
{
_possiblePositions.Clear();
- foreach (var (point, transform) in EntityManager.EntityQuery<SpawnPointComponent, TransformComponent>(true))
+ foreach (var (point, transform) in EntityManager
+ .EntityQuery<SpawnPointComponent, TransformComponent>(true))
{
if (point.SpawnType != SpawnPointType.Observer)
continue;
var query = AllEntityQuery<MapGridComponent>();
while (query.MoveNext(out var uid, out var grid))
{
- if (!metaQuery.TryGetComponent(uid, out var meta) ||
- meta.EntityPaused)
+ if (!metaQuery.TryGetComponent(uid, out var meta) || meta.EntityPaused)
{
continue;
}
{
var gridXform = Transform(gridUid);
- return new EntityCoordinates(gridUid,
- gridXform.InvWorldMatrix.Transform(toMap.Position));
+ return new EntityCoordinates(gridUid, gridXform.InvWorldMatrix.Transform(toMap.Position));
}
return spawn;
{
var mapUid = _mapManager.GetMapEntityId(map);
- if (!metaQuery.TryGetComponent(mapUid, out var meta) ||
- meta.EntityPaused)
+ if (!metaQuery.TryGetComponent(mapUid, out var meta) || meta.EntityPaused)
{
continue;
}
_sawmill.Warning("Found no observer spawn points!");
return EntityCoordinates.Invalid;
}
+
#endregion
}
public bool LateJoin { get; }
public EntityUid Station { get; }
- public PlayerBeforeSpawnEvent(ICommonSession player, HumanoidCharacterProfile profile, string? jobId, bool lateJoin, EntityUid station)
+ public PlayerBeforeSpawnEvent(ICommonSession player,
+ HumanoidCharacterProfile profile,
+ string? jobId,
+ bool lateJoin,
+ EntityUid station)
{
Player = player;
Profile = profile;
// Ex. If this is the 27th person to join, this will be 27.
public int JoinOrder { get; }
- public PlayerSpawnCompleteEvent(EntityUid mob, ICommonSession player, string? jobId, bool lateJoin, int joinOrder, EntityUid station, HumanoidCharacterProfile profile)
+ public PlayerSpawnCompleteEvent(EntityUid mob,
+ ICommonSession player,
+ string? jobId,
+ bool lateJoin,
+ int joinOrder,
+ EntityUid station,
+ HumanoidCharacterProfile profile)
{
Mob = mob;
Player = player;