private void OnPlay(object obj) { // IEnumerable<PlayerInfo> temp = (IEnumerable<PlayerInfo>)PlayerList.GetEnumerator(); List <PlayerInfo> p = PlayerList.ToList(); CommonUtils.Utilities.Shuffle(ref p); int numPlayers = p.Count; PlayerList.Clear(); int i = 0; ////Create Mafia List for (i = 0; i < NumMafias && i < numPlayers; ++i) { p[i].Role = "mafia"; Mafias.Add(p[i]); PlayerList.Add(p[i]); } //Create SpecialChar List if (HasDoctor && i < numPlayers) { p[i].Role = "doctor"; Specialists.Add(p[i]); PlayerList.Add(p[i]); i++; } if (HasDetective && i < numPlayers) { p[i].Role = "detective"; Specialists.Add(p[i]); PlayerList.Add(p[i]); i++; } if (HasJoker && i < numPlayers) { p[i].Role = "joker"; Specialists.Add(p[i]); PlayerList.Add(p[i]); i++; } //Create Villager List for (; i < numPlayers; ++i) { p[i].Role = "villager"; PlayerList.Add(p[i]); } //notify roles to the players foreach (var x in PlayerList) { _serverModel.SendMessage(x.ConnectionInfo.Connection, "Role", x.Role); } }