// 移除一张卡牌,不释放资源,这个接口仅仅是客户端自己释放资源使用 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(); } } } }
// 移动卡牌,从一个位置到另外一个位置,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); } } }
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(); } } } }