Clients are allowed to vote to end the round if they have spawned at some point during the round, even if the character they controlled doesn't exist anymore (huskified or eaten). Closes #483
This commit is contained in:
@@ -29,10 +29,20 @@ namespace Barotrauma.Networking
|
||||
|
||||
public byte TeamID = 0;
|
||||
|
||||
public Character Character;
|
||||
private Character character;
|
||||
public Character Character
|
||||
{
|
||||
get { return character; }
|
||||
set
|
||||
{
|
||||
character = value;
|
||||
if (character != null) HasSpawned = true;
|
||||
}
|
||||
}
|
||||
public CharacterInfo CharacterInfo;
|
||||
public NetConnection Connection { get; set; }
|
||||
public bool InGame;
|
||||
public bool InGame;
|
||||
public bool HasSpawned; //has the client spawned as a character during the current round
|
||||
|
||||
public UInt16 LastRecvGeneralUpdate = 0;
|
||||
|
||||
|
||||
@@ -1512,6 +1512,7 @@ namespace Barotrauma.Networking
|
||||
foreach (Client client in connectedClients)
|
||||
{
|
||||
client.Character = null;
|
||||
client.HasSpawned = false;
|
||||
client.InGame = false;
|
||||
}
|
||||
}
|
||||
@@ -1631,6 +1632,7 @@ namespace Barotrauma.Networking
|
||||
}
|
||||
|
||||
client.Character = null;
|
||||
client.HasSpawned = false;
|
||||
client.InGame = false;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(msg)) msg = client.Name + " has left the server";
|
||||
|
||||
@@ -111,11 +111,11 @@ namespace Barotrauma
|
||||
#endif
|
||||
break;
|
||||
case VoteType.EndRound:
|
||||
if (sender.Character == null) return;
|
||||
if (!sender.HasSpawned) return;
|
||||
sender.SetVote(voteType, inc.ReadBoolean());
|
||||
|
||||
GameMain.NetworkMember.EndVoteCount = GameMain.Server.ConnectedClients.Count(c => c.Character != null && c.GetVote<bool>(VoteType.EndRound));
|
||||
GameMain.NetworkMember.EndVoteMax = GameMain.Server.ConnectedClients.Count(c => c.Character != null);
|
||||
GameMain.NetworkMember.EndVoteCount = GameMain.Server.ConnectedClients.Count(c => c.HasSpawned && c.GetVote<bool>(VoteType.EndRound));
|
||||
GameMain.NetworkMember.EndVoteMax = GameMain.Server.ConnectedClients.Count(c => c.HasSpawned);
|
||||
|
||||
break;
|
||||
case VoteType.Kick:
|
||||
|
||||
Reference in New Issue
Block a user