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);
            }
        }