private void RemovePlayer(String name)
{
bool gameChange = false;
bool removeFetch = false;
lock (fKnownPlayers) {
if (fKnownPlayers.ContainsKey(name)) {
// Keep around for MODEL_TIMEOUT minutes, in case player rejoins
PlayerModel m = fKnownPlayers[name];
m.ResetRound();
m.LastSeenTimestamp = DateTime.Now;
m.FirstSeenTimestamp = DateTime.MinValue;
removeFetch = true;
}
}
if (removeFetch) RemovePlayerFetch(name);
lock (fAllPlayers) {
if (fAllPlayers.Contains(name)) fAllPlayers.Remove(name);
if (fAllPlayers.Count < 4) {
if (fGameState != GameState.Warmup) {
fGameState = GameState.Warmup;
gameChange = true;
}
}
}
if (gameChange) {
DebugWrite("RemovePlayer: ^b^3Game state = " + fGameState, 6);
}
}