Пример #1
0
 // 移除一张卡牌,不释放资源,这个接口仅仅是客户端自己释放资源使用
 public void removeOneCardByItem(SceneCardItem sceneItem)
 {
     if ((int)CardArea.CARDCELLTYPE_SKILL == sceneItem.svrCard.pos.dwLocation)
     {
         m_sceneSkillCard = null;
     }
     else if ((int)CardArea.CARDCELLTYPE_EQUIP == sceneItem.svrCard.pos.dwLocation)
     {
         m_sceneEquipCard = null;
     }
     else if ((int)CardArea.CARDCELLTYPE_COMMON == sceneItem.svrCard.pos.dwLocation)
     {
         m_outSceneCardList.removeCardIByItem(sceneItem);
         m_outSceneCardList.updateSceneCardPos();
     }
     else if ((int)CardArea.CARDCELLTYPE_HAND == sceneItem.svrCard.pos.dwLocation)
     {
         if (m_inSceneCardList.removeCardIByItem(sceneItem))
         {
             m_inSceneCardList.updateSceneCardPos();
         }
         else        // 可能是战吼或者法术有攻击目标的
         {
             SceneCardBase srcCard = m_outSceneCardList.removeAndRetCardByItem(sceneItem);
             // 如果是法术或者战吼有攻击目标的卡牌,虽然在出牌区,但是是客户端自己移动过去的
             if (srcCard != null && srcCard.canClientMove2OutArea())
             {
                 // 更新手牌索引
                 m_inSceneCardList.updateCardIndex();
             }
         }
     }
 }
Пример #2
0
        // 移动卡牌,从一个位置到另外一个位置,CardArea.CARDCELLTYPE_COMMON 区域增加是从这个消息过来的,目前只处理移动到 CardArea.CARDCELLTYPE_COMMON 区域
        virtual public void changeSelfSceneCardArea(uint qwThisID, CardArea dwLocation, ushort yPos)
        {
            SceneCardBase srcCard = null;

            // 移动手里的牌的位置
            srcCard = m_inSceneCardList.getSceneCardByThisID(qwThisID);
            if (srcCard != null)
            {
                m_inSceneCardList.removeCard(srcCard);
                m_inSceneCardList.updateSceneCardPos();
                srcCard.updateCardOutState(false);        // 当前卡牌可能处于绿色高亮,因此去掉
                srcCard.convOutModel();
                m_sceneDZData.m_gameOpState.quitMoveOp(); // 退出移动操作
            }
            else                                          // 如果手牌没有,可能是战吼或者法术有攻击目标的卡牌,客户端已经将卡牌移动到出牌区域
            {
                srcCard = m_outSceneCardList.getSceneCardByThisID(qwThisID);
                if (srcCard.canClientMove2OutArea())
                {
                    // 更新手牌索引
                    m_inSceneCardList.updateCardIndex();
                    m_sceneDZData.m_gameOpState.endAttackOp();    // 战吼攻击结束
                }
                else
                {
                    Ctx.m_instance.m_logSys.log("这个牌客户端已经移动到出牌区域");
                }
            }

            // 更新移动后的牌的位置
            if (CardArea.CARDCELLTYPE_EQUIP == dwLocation)        // 如果出的是装备
            {
                outEquipCard(srcCard);
            }
            else                                                         // 出的是随从
            {
                if (srcCard != null && !srcCard.canClientMove2OutArea()) // 如果不是战吼或者法术有攻击目标的牌
                {
                    m_outSceneCardList.removeWhiteCard();
                    m_outSceneCardList.addCard(srcCard, yPos);
                    m_outSceneCardList.updateSceneCardPos();
                    srcCard.effectControl.updateStateEffect();
                    m_sceneDZData.m_dragDropData.tryClearDragItem(srcCard);
                }
            }
        }
Пример #3
0
 public void removeOneCard(SceneCardBase card)
 {
     if (card is SkillCard)
     {
         m_sceneSkillCard = null;
     }
     else if (card is EquipCard)
     {
         m_sceneEquipCard = null;
     }
     else if (card is BlackCard)      // Enemy Hand 手牌卡
     {
         m_inSceneCardList.removeCard(card);
         m_inSceneCardList.updateSceneCardPos();
     }
     else if ((int)CardArea.CARDCELLTYPE_COMMON == card.sceneCardItem.svrCard.pos.dwLocation)
     {
         m_outSceneCardList.removeCard(card);
         m_outSceneCardList.updateSceneCardPos();
     }
     else if ((int)CardArea.CARDCELLTYPE_HAND == card.sceneCardItem.svrCard.pos.dwLocation)
     {
         if (m_inSceneCardList.Contains(card))
         {
             m_inSceneCardList.removeCard(card);
             m_inSceneCardList.updateSceneCardPos();
         }
         else        // 可能是战吼或者法术有攻击目标的
         {
             SceneCardBase srcCard = m_outSceneCardList.removeAndRetCardByItem(card.sceneCardItem);
             // 如果是法术或者战吼有攻击目标的卡牌,虽然在出牌区,但是是客户端自己移动过去的
             if (srcCard != null && srcCard.canClientMove2OutArea())
             {
                 // 更新手牌索引
                 m_inSceneCardList.updateCardIndex();
             }
         }
     }
 }