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