예제 #1
0
        /// <summary>
        /// 用户准备
        /// </summary>
        /// <param name="client"></param>
        private void Ready(ClientPeer client, string username, string password)
        {
            color++;//将颜色赋予参加房间游戏的玩家 TODO 多线程时需注意color的状态锁
            if (color > 4)
            {
                color = 1;
            }

            roomCache.EnterRoom(client, username, password);

            //将已准备的人员数量广播到房间其他人
            roomDto.userList = roomCache.GetRoomByClient(client).userList;
            roomDto.color    = color;

            Console.WriteLine(roomDto.userList[0].username);

            roomCache.BroadcastMessageToAll(client, OpCode.User, UserCode.READY_SRES, roomDto);
            //如果是创建人或者第一个准备的人作为房主 开放房主按钮进行使用
            roomCache.GetRoomByClient(client).userDic.Keys.First().Send(OpCode.User, UserCode.HOUSEOWNER, 0);
        }
예제 #2
0
 /// <summary>
 /// 游戏开始
 /// </summary>
 /// <param name="client"></param>
 private void GameStart(ClientPeer client)
 {
     //游戏开始之后将当前房间设置为进行状态 防止其他人加入游戏又没有房主
     roomCache.GetRoomByClient(client).isPlay = true;
     roomCache.BroadcastMessageToAll(client, OpCode.Game, GameCode.GAMESTART_SRES, null);
 }