private PlayersMessage CreatePlayerMessage(MessageOperation operation, IPlayerID playerID) { List <PlayerInfo> list = new List <PlayerInfo>(); PlayersMessage msg = (PlayersMessage)MessageFactory.Create(MessageType.Players); msg.Operation = (byte)operation; switch (operation) { case MessageOperation.List: foreach (IPlayerID pid in _players.Values) { if (pid.GetID() != playerID.GetID()) { ServerPlayerInfo spi = pid as ServerPlayerInfo; list.Add(spi.GePlayerInfo()); } } break; case MessageOperation.Add: list.Add(((ServerPlayerInfo)playerID).GePlayerInfo()); break; case MessageOperation.Remove: list.Add(((ServerPlayerInfo)playerID).GePlayerInfo()); break; case MessageOperation.Modify: list.Add(((ServerPlayerInfo)playerID).GePlayerInfo()); break; } msg.PlayerList = list; return(msg); }
public virtual void RemovePlayer(IPlayerID playerID) { lock (((ICollection)_players).SyncRoot) { IPlayerID pid = _players[playerID.GetID()]; _players.Remove(playerID.GetID()); SendRemovePlayer(pid); } }
protected override Message CreateRemoveMessage(IPlayerID playerID) { ChatUsersMessage msg = CreateChatUserMessage(); msg.Option = (byte)MessageOperation.Remove; msg.ChatUsers.Add((ChatUser)playerID); return(msg); }
public override void AddPlayer(IPlayerID player) { base.AddPlayer(player); PlayersMessage pim = CreatePlayerMessage(MessageOperation.Modify, (ServerPlayerInfo)_players[player.GetID()]); SendMessage(pim, player.GetID()); CancelGameStart(); }
public virtual void AddPlayer(IPlayerID player) { lock (((ICollection)_players).SyncRoot) { IPlayerID playerId = TransformInitialy(player); _players.Add(playerId.GetID(), playerId); SendAddPlayer(playerId); SendListPlayer(playerId); } }
public override void RemovePlayer(IPlayerID playerID) { base.RemovePlayer(playerID); lock (((ICollection)_players).SyncRoot) { CancelGameStart(); if (RepairTeams()) { PlayersMessage msg = CreatePlayerMessage(MessageOperation.Modify, _players.GetEnumerator().Current.Value); BroadcastExcl(msg, -1); } } }
protected override Message CreateListMessage(IPlayerID playerID) { ChatUsersMessage msg = CreateChatUserMessage(); msg.Option = (byte)MessageOperation.List; lock (((ICollection)_players).SyncRoot) { foreach (IPlayerID pid in _players.Values) { if (pid.GetID() != playerID.GetID()) { msg.ChatUsers.Add((ChatUser)pid); } } } return(msg); }
protected override IPlayerID TransformInitialy(IPlayerID player) { Player p = player as Player; ServerPlayerInfo svp = new ServerPlayerInfo(p); short teamId = 1; Color baseColor = ServerPlayerInfo.StartColors[0]; if (_players.Count > 0) { lock (((ICollection)_players).SyncRoot) { teamId = GetTeamForPlayer(); baseColor = GetColorForPlayer(); } } svp.TeamID = teamId; svp.Color = baseColor; return(svp); }
protected abstract Message CreateRemoveMessage(IPlayerID playerID);
protected override IPlayerID TransformInitialy(IPlayerID player) { Player p = (Player)player; return((IPlayerID)PlayerToChatUser(p)); }
protected override Message CreateRemoveMessage(IPlayerID playerID) { return(CreatePlayerMessage(MessageOperation.Remove, playerID)); }
protected override Message CreateAddMessage(IPlayerID playerID) { return(CreatePlayerMessage(MessageOperation.Add, playerID)); }
protected override Message CreateListMessage(IPlayerID playerID) { return(CreatePlayerMessage(MessageOperation.List, playerID)); }
protected void SendRemovePlayer(IPlayerID playerID) { BroadcastExcl(CreateRemoveMessage(playerID), playerID.GetID()); }
protected abstract IPlayerID TransformInitialy(IPlayerID player);
protected void SendListPlayer(IPlayerID playerID) { SendMessage(CreateListMessage(playerID), playerID.GetID()); }
protected abstract Message CreateListMessage(IPlayerID playerID);
protected void SendAddPlayer(IPlayerID playerID) { Message msg = CreateAddMessage(playerID); BroadcastExcl(msg, playerID.GetID()); }