Exemple #1
0
        /// <summary>
        /// 接收客户端发送过来的消息
        /// </summary>
        /// <param name="clientPeer"></param>
        /// <param name="subOperationCode"></param>
        /// <param name="dataValue"></param>
        public void OnReceiveMessage(ClientPeer clientPeer, int subOperationCode, object dataValue)
        {
            GameServiceTypeCode serviceCode = (GameServiceTypeCode)Enum.Parse(typeof(GameServiceTypeCode), subOperationCode.ToString());

            string[] dataSplits     = dataValue.ToString().Split('|');
            string   serviceSubCode = dataSplits[0];
            string   data           = dataSplits[1];

            switch (serviceCode)
            {
            case GameServiceTypeCode.PasseService:
                //Todo:需要解析客户端传递过来的消息附带的数据
                //解析格式:具体的子操作码,附带的数据
            {
                this.passeServiceHandler.OnReceiveMessage(clientPeer, Convert.ToInt32(serviceSubCode), data);        //将接收到的消息发送给帕斯业务模块自己去处理
            }
            break;

            case GameServiceTypeCode.FivebombsWithSixbombsService:
                //Todo:需要解析客户端传递过来的消息附带的数据
                //解析格式:具体的子操作码,附带的数据
            {
                this.fivebombsWithSixbombsServiceHandler.OnReceiveMessage(clientPeer, Convert.ToInt32(serviceSubCode), data);        //将接收到的消息发送给五轰六炸业务模块自己去处理
            }
            break;

            case GameServiceTypeCode.MahjongService:
                //Todo:需要解析客户端传递过来的消息附带的数据
                //解析格式:具体的子操作码,附带的数据
            {
                this.mahjongServiceHandler.OnReceiveMessage(clientPeer, Convert.ToInt32(serviceSubCode), data);        //将接收到的消息发送给麻将业务模块自己去处理
            }
            break;
            }
        }
        /// <summary>
        /// 处理创建房间后的初始化卡牌数据
        /// </summary>
        /// <param name="clientPeer">创建房间的客户端对象</param>
        /// <param name="createRoomData">创建房间时附带的数据</param>
        /// <param name="newRoom">创建好的房间信息数据</param>
        private void ProcessInitCreateRoomCardData(ClientPeer clientPeer, object createRoomData, RoomInfo newRoom)
        {
            if (createRoomData != null)
            {
                GameServiceTypeCode gameServiceTypeCode = (GameServiceTypeCode)Enum.Parse(typeof(GameServiceTypeCode), createRoomData.ToString()); //转换客户端对象所创建的房间业务类别
                switch (gameServiceTypeCode)                                                                                                       //判断业务类别
                {
                case GameServiceTypeCode.PasseService:                                                                                             //帕斯业务
                {
                    LogMessage.Instance.SetLogMessage("处理帕斯游戏房间的初始化卡牌数据~");
                    newRoom.ServiceType = RoomGameServiceType.PasseService; //设置房间的业务为帕斯
                    // 这里处理帕斯游戏的初始发牌过程
                    this.passeServiceCache.InitCardsData();                 //通过帕斯业务数据缓存对象初始化卡牌数据
                    this.passeServiceCache.ResetCards();                    //通过帕斯业务数据缓存对象重置卡牌数据
                    this.passeServiceCache.AddClientPeer(clientPeer);       //将客户端连接对象存储起来
                    this.passeServiceCache.AddRoomInfo(newRoom);            //将新创建好的房间存储起来
                    this.passeServiceCache.DisplayAllCards();
                }
                break;

                case GameServiceTypeCode.FivebombsWithSixbombsService:    //五轰六炸业务
                {
                    LogMessage.Instance.SetLogMessage("处理五轰六炸游戏房间的初始化卡牌数据~");
                    newRoom.ServiceType = RoomGameServiceType.FivebombsWithSixbombsService;        //设置当前房间的业务为五轰六炸
                    // 这里处理五轰六炸游戏的初始发牌过程
                    this.fivebombsWithSixbombsServiceCache.InitCardsData();
                    this.fivebombsWithSixbombsServiceCache.ResetCards();
                    this.fivebombsWithSixbombsServiceCache.AddClientPeer(clientPeer);
                    this.fivebombsWithSixbombsServiceCache.AddRoomInfo(newRoom);
                    this.fivebombsWithSixbombsServiceCache.TouchCard(newRoom.Id);
                }
                break;

                case GameServiceTypeCode.MahjongService:    //麻将业务
                {
                    LogMessage.Instance.SetLogMessage("处理麻将游戏房间的初始化卡牌数据~");
                    newRoom.ServiceType = RoomGameServiceType.MahjongService;        //设置当前房间的业务类型为麻将
                    // 这里处理麻将游戏的初始发牌过程
                    this.mahjongServiceCache.InitCardsData();
                    this.mahjongServiceCache.ResetCards();
                }
                break;
                }
            }
        }