Team ID assignment fixes:

- Clients are assigned to team 1 in sandbox mode (because the host is also in team 1).
- Respawning characters are always assigned to team 1 (otherwise mid-round joining clients would end up in team 0 because the team assignment is done when the round starts)
This commit is contained in:
Regalis
2017-06-03 18:08:47 +03:00
parent fe81355039
commit 2b27755b61
4 changed files with 16 additions and 8 deletions

View File

@@ -914,7 +914,7 @@ namespace Barotrauma.Networking
if (outmsg.LengthBytes > config.MaximumTransmissionUnit)
{
DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + config.MaximumTransmissionUnit);
DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + config.MaximumTransmissionUnit + ")");
}
server.SendMessage(outmsg, c.Connection, NetDeliveryMethod.Unreliable);
@@ -989,7 +989,7 @@ namespace Barotrauma.Networking
if (outmsg.LengthBytes > config.MaximumTransmissionUnit)
{
DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + config.MaximumTransmissionUnit);
DebugConsole.ThrowError("Maximum packet size exceeded (" + outmsg.LengthBytes + " > " + config.MaximumTransmissionUnit + ")");
}
server.SendMessage(outmsg, c.Connection, NetDeliveryMethod.Unreliable);
@@ -1103,15 +1103,19 @@ namespace Barotrauma.Networking
Rand.SetSyncedSeed(roundStartSeed);
int teamCount = 1;
int hostTeam = 1;
byte hostTeam = 1;
GameMain.GameSession = new GameSession(selectedSub, "", selectedMode, Mission.MissionTypes[GameMain.NetLobbyScreen.MissionTypeIndex]);
if (GameMain.GameSession.gameMode.Mission != null &&
GameMain.GameSession.gameMode.Mission.AssignTeamIDs(connectedClients,out hostTeam))
if (GameMain.GameSession.gameMode.Mission != null &&
GameMain.GameSession.gameMode.Mission.AssignTeamIDs(connectedClients, out hostTeam))
{
teamCount = 2;
}
else
{
connectedClients.ForEach(c => c.TeamID = hostTeam);
}
GameMain.GameSession.StartShift(GameMain.NetLobbyScreen.LevelSeed, teamCount > 1);

View File

@@ -392,10 +392,14 @@ namespace Barotrauma.Networking
{
var server = networkMember as GameServer;
if (server == null) return;
var clients = GetClientsToRespawn();
foreach (Client c in clients)
{
//all characters are in Team 1 in game modes/missions with only one team.
//if at some point we add a game mode with multiple teams where respawning is possible, this needs to be reworked
c.TeamID = 1;
if (c.characterInfo == null) c.characterInfo = new CharacterInfo(Character.HumanConfigFile, c.name);
}