/// <summary> /// 处理非指令卡 /// </summary> /// <param name="clientPeer"></param> /// <param name="cardDto"></param> private void processOtherCard(ClientPeer clientPeer, CardDto cardDto) { SingleExecute.Instance.processSingle(() => { if (!UserCache.Instance.IsOnline(clientPeer)) { return; } int uid = UserCache.Instance.GetId(clientPeer); FightRoom fightRoom = FightRoomCache.Instance.GetRoomByUid(uid); switch (cardDto.Race) { case RaceType.ORC: switch (cardDto.Name) { case OrcOtherCardType.Ancestor_Helmets: //先祖头盔 fightRoom.Broadcast(OpCode.FIGHT, FightCode.USE_OTHERCARD_SBOD, cardDto, clientPeer); //在服务器上移除玩家相应非指令卡 fightRoom.RemoveCard(uid, cardDto); break; case OrcOtherCardType.Totem_summon: //召唤图腾 List <CardDto> cardDtos = fightRoom.DispathCard(uid, CardType.ARMYCARD); if (cardDtos.Count > 0) { //给玩家发送发牌消息 //fightRoom.Broadcast(OpCode.FIGHT, FightCode.ADD_CARD_SRES, cardlist); clientPeer.StartSend(OpCode.FIGHT, FightCode.ADD_CARD_SRES, cardDtos); //给房间内除其他玩家发送发牌消息 fightRoom.Broadcast(OpCode.FIGHT, FightCode.ADD_CARD_SBOD, cardDtos.Count, clientPeer); } else { //牌库内没有其他中高阶单位 clientPeer.StartSend(OpCode.FIGHT, FightCode.USE_OTHERCARD_SRES, cardDto); } break; } break; } }); }
/// <summary> /// 处理攻击卡请求 /// </summary> /// <param name="clientPeer"></param> private void processAttackCard(ClientPeer clientPeer) { SingleExecute.Instance.processSingle(() => { if (!UserCache.Instance.IsOnline(clientPeer)) { return; } int uid = UserCache.Instance.GetId(clientPeer); FightRoom fightRoom = FightRoomCache.Instance.GetRoomByUid(uid); //发送攻击广播 fightRoom.Broadcast(OpCode.FIGHT, FightCode.DEAL_ATTACK_SBOD, "使用了攻击卡", clientPeer); //在服务器上移除玩家攻击手牌 fightRoom.RemoveCard(uid, CardType.ORDERCARD, OrderCardType.ATTACK); }); }
/// <summary> /// 处理修养请求 /// </summary> /// <param name="clientPeer"></param> /// <param name="active"></param> private void processDealRestAttack(ClientPeer clientPeer, MapPointDto mapPointDto) { SingleExecute.Instance.processSingle( () => { if (!UserCache.Instance.IsOnline(clientPeer)) { return; } int uid = UserCache.Instance.GetId(clientPeer); FightRoom fightRoom = FightRoomCache.Instance.GetRoomByUid(uid); fightRoom.Broadcast(OpCode.FIGHT, FightCode.DEAL_REST_SBOD, mapPointDto, clientPeer); //向房间内其他人发送修养广播 //在服务器移除修养指令卡 fightRoom.RemoveCard(uid, CardType.ORDERCARD, OrderCardType.REST); } ); }
/// <summary> /// 处理闪避请求 /// </summary> /// <param name="clientPeer"></param> /// <param name="active"></param> private void processDealDodge(ClientPeer clientPeer, bool active) { SingleExecute.Instance.processSingle( () => { if (!UserCache.Instance.IsOnline(clientPeer)) { return; } int uid = UserCache.Instance.GetId(clientPeer); FightRoom fightRoom = FightRoomCache.Instance.GetRoomByUid(uid); //向房间内其他人发送闪避广播 fightRoom.Broadcast(OpCode.FIGHT, FightCode.DEAL_DODGE_SBOD, active, clientPeer); //在服务器上移除玩家闪避手牌 fightRoom.RemoveCard(uid, CardType.ORDERCARD, OrderCardType.DODGE); } ); }
/// <summary> /// 处理出牌请求 /// </summary> /// <param name="clientPeer"></param> private void processDealCard(ClientPeer clientPeer, CardDto cardDto) { SingleExecute.Instance.processSingle( () => { if (!UserCache.Instance.IsOnline(clientPeer)) { return; } int uid = UserCache.Instance.GetId(clientPeer); FightRoom fightRoom = FightRoomCache.Instance.GetRoomByUid(uid); //在服务器上移除玩家兵种卡 fightRoom.RemoveCard(uid, cardDto); //在其他玩家客户端移除手牌 fightRoom.Broadcast(OpCode.FIGHT, FightCode.DEAL_ARMYCARD_SBOD, 1, clientPeer); } ); }