public bool existPlayerByID (List<Player> L, byte query, out Player player) { Predicate<Player> pr = p => p.id == query; int i = L.FindIndex(pr); if (i == -1) { player = null; return false; } player = L.Find(pr); return true; }
public bool existPlayerByName (List<Player> L, string query, out Player player) { Predicate<Player> pr = p => p.name == query; int i = L.FindIndex(pr); if (i == -1) { player = null; return false; } player = L.Find(pr); return true; }
public bool existPlayerByID (List<Player> L, byte query) { Player p = new Player(); return existPlayerByID(L, query, out p); }
public ServerPlayer(Player p, NetworkConnection c) : base(p) { connection = c; }
public bool existPlayerByName (List<Player> L, string query) { Player p = new Player(); return existPlayerByName(L, query, out p); }
public Player(Player p) { id = p.id; name = p.name; }
string printPlayerName(Player p) { if(networkingInfo.isServer) return p.name + "(" + p.id + ")"; return p.name; }
// =========================================================================== // ========================= DOD CALLBACK FUNCTIONS ========================= // =========================================================================== void cbClientHandler (NetworkMessage netMsg) { switch(netMsg.msgType) { case (short)Message.ID.UserLogin: { Message.UserLogin msg = netMsg.ReadMessage<Message.UserLogin>(); myID = msg.playerID; ClientSendMessage(Message.ID.UserLogin, new Message.UserLogin(myID, networkingInfo.playerName), Channels.reliable); } break; case (short)Message.ID.KickReason: { Message.KickReason msg = netMsg.ReadMessage<Message.KickReason>(); common.printConsole(tag, "Kicked from server. Reason: " + msg.reason, true); } break; case (short)Message.ID.ConsoleBroadcast: { Message.ConsoleBroadcast msg = netMsg.ReadMessage<Message.ConsoleBroadcast>(); Player p; if ( common.existPlayerByID(connectedPlayers, msg.playerID, out p) ) { common.printConsole(NetworkingCommon.CHATTAG, p.name + ": " + msg.broadcast, true); } else if ( msg.playerID == NetworkingCommon.SERVERID ) { common.printConsole(NetworkingCommon.CHATTAG, "SERVER" + " ~ " + msg.broadcast, true); } } break; case (short)Message.ID.NameChange: { Message.NameChange msg = netMsg.ReadMessage<Message.NameChange>(); Player p; if ( common.existPlayerByID(connectedPlayers, msg.playerID, out p) ) { if( msg.playerID == myID ) // Its me, check if it failed or not { if ( msg.failed ) // Was not successful { common.printConsole(NetworkingCommon.NOTAG, "Name change failed. " + msg.newName + " is already occupied.", true); } else { common.printConsole(NetworkingCommon.NOTAG, "Your new name is " + msg.newName, true); p.name = msg.newName; } } else // Someone else changed their name { if ( !msg.failed ) { common.printConsole(NetworkingCommon.NOTAG, printPlayerName(p) + " is now known as " + msg.newName, true); p.name = msg.newName; } } } } break; case (short)Message.ID.PlayerCon: { Message.PlayerCon msg = netMsg.ReadMessage<Message.PlayerCon>(); Player p; connectedPlayers.Add(p = new Player(msg.playerID, msg.name)); if(msg.playerID != myID) { common.printConsole(NetworkingCommon.NOTAG, "Player connected: " + printPlayerName(p), true); } else { common.printConsole(NetworkingCommon.NOTAG, "Connected to " + printServerAdress() + " with ID: " + myID, true); } } break; case (short)Message.ID.PlayerDisc: { Message.PlayerDisc msg = netMsg.ReadMessage<Message.PlayerDisc>(); Player p; if ( common.existPlayerByID(connectedPlayers, msg.playerID, out p) ) { common.printConsole(NetworkingCommon.NOTAG, printPlayerName(p) + " disconnected. Reason: " + msg.reason, true); connectedPlayers.Remove(p); } } break; case (short)Message.ID.PlayerList: { Message.PlayerList msg = netMsg.ReadMessage<Message.PlayerList>(); connectedPlayers = msg.GetArrayAsList(); } break; case (short)Message.ID.HeartBeat: { // Do nothing, since this is not interresting for us } break; default: common.printConsole(tag, "Unknown message id received: " + netMsg.msgType, true); break; } }
public PlayerCon(Player p) { playerID = p.id; name = p.name; }
string printPlayerName(Player p) { return p.name + "(" + p.id + ")"; }
List<Player> getAllPlayers(List<ServerPlayer> L) { List<Player> newList = new List<Player>(); foreach(ServerPlayer sp in connectedPlayers) { Player p = new Player (sp.id, sp.name); newList.Add(p); } return newList; }