Ejemplo n.º 1
0
        /// <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;
                }
            });
        }
Ejemplo n.º 2
0
        /// <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);
            });
        }
Ejemplo n.º 3
0
        /// <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);
            }
                );
        }
Ejemplo n.º 4
0
        /// <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);
            }
                );
        }
Ejemplo n.º 5
0
        /// <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);
            }
                );
        }