by igli1 » October 8th, 2014, 9:40 pm
by hangar » October 23rd, 2014, 4:58 am
public class PlayerData {
public Player player;
public int score = 0;
public PlayerData(Player player)
{
this.player = player;
}
}
private Dictionary<string, PlayerData> playerDataLookup = new Dictionary<string, PlayerData>();
public override void UserJoined(Player player)
{
PlayerData playerData;
// have we seen this player before?
if (playerDataLookup.TryGetValue(player.ConnectUserId, out playerData) {
// disconnect duplicate player if still around
if (playerData.player != null) {
playerData.player.Disconnect();
}
playerData.player = player;
Broadcast("UserReconnected", player.ConnectUserId);
}
else {
// brand new user
playerData = new PlayerData(player);
playerDataLookup.Add(player.ConnectUserId, playerData);
Broadcast("UserJoined", player.ConnectUserId);
}
}
public override void UserLeft(Player player)
{
// probably hit an exception joining; ignore
if (!playerDataLookup.ContainsKey(player.ConnectUserId)) {
return;
}
PlayerData playerData = playerDataLookup[player.ConnectUserId];
// another player is forcing us out; we've already been cleaned up
if (playerData.player != player) {
return;
}
playerData.player = null;
Broadcast("UserLeft", player.ConnectUserId);
}