Esempio n. 1
0
        public void delCardSet()
        {
            stReqDeleteOneCardGroupUserCmd cmd = new stReqDeleteOneCardGroupUserCmd();

            cmd.index = m_cardGroupItem.m_cardGroup.index;
            UtilMsg.sendMsg(cmd);
        }
Esempio n. 2
0
        protected void onStartBtnClk(GameObject go)
        {
            m_sceneDZData.m_roundMgr.stopTimer();        // 停止定时器
            // 点击后直接隐藏按钮
            m_sceneDZData.m_placeHolderGo.m_startGO.SetActive(false);

            // 卸载可能加载的叉号资源
            string resPath = string.Format("{0}{1}", Ctx.m_instance.m_cfg.m_pathLst[(int)ResPathType.ePathModel], "ChaHao.prefab");

            Ctx.m_instance.m_modelMgr.unload(resPath, null);

            stReqFightPrepareOverUserCmd cmd = new stReqFightPrepareOverUserCmd();

            int idx = 0;

            // 设置需要交换的卡牌
            foreach (uint cardid in Ctx.m_instance.m_dataPlayer.m_dzData.m_playerArr[(int)EnDZPlayer.ePlayerSelf].m_startCardList)
            {
                if (m_sceneDZData.m_changeCardIdxList.IndexOf(idx) != -1)
                {
                    cmd.change |= (byte)(1 << idx);
                }

                ++idx;
            }

            UtilMsg.sendMsg(cmd);
        }
Esempio n. 3
0
        // 步骤 3 ,发送消息
        public void sendMsg3f()
        {
            // 测试数据
            //send.game = 10;
            //send.zone = 30;
            //zhanghao01---zhanghao09
            Ctx.m_instance.m_logSys.log(Ctx.m_instance.m_langMgr.getText(LangTypeId.eLTLog0, LangItemID.eItem4));

            stUserRequestLoginCmd cmd = new stUserRequestLoginCmd();

            //cmd.pstrName = "zhanghao01";
            //cmd.pstrPassword = "******";
            cmd.pstrName     = m_name;
            cmd.pstrPassword = m_passwd;
#if KOKSERVER_TEST
            cmd.pstrName     = "fayatudou615";
            cmd.pstrPassword = "******";
#endif
            cmd.game = 10;
#if !KOKSERVER_TEST
            cmd.zone = Ctx.m_instance.m_cfg.m_zone;
#else
            cmd.zone = 31;
#endif
            UtilMsg.sendMsg(cmd);
        }
Esempio n. 4
0
        protected void sendMsg()
        {
            stPasswdLogonUserCmd cmd = new stPasswdLogonUserCmd();

            cmd.dwUserID    = Ctx.m_instance.m_loginSys.getUserID();
            cmd.loginTempID = Ctx.m_instance.m_pTimerMsgHandle.m_loginTempID;
            UtilMsg.sendMsg(cmd);
        }
Esempio n. 5
0
        protected void testMsg()
        {
            stAddBattleCardPropertyUserCmd cmd = new stAddBattleCardPropertyUserCmd();

            //cmd.attackType = 2;
            //cmd.pAttThisID = 0;
            //cmd.pDefThisID = 0;
            UtilMsg.sendMsg(cmd);
        }
Esempio n. 6
0
        // 通知客户端上一场战斗还没有结束
        protected void psstRetNotifyUnfinishedGameUserCmd(ByteBuffer bu)
        {
            Ctx.m_instance.m_dataPlayer.m_dzData.m_bLastEnd = false;
            // 可能要请求一些数据
            stReqEnterUnfinishedGameUserCmd cmd = new stReqEnterUnfinishedGameUserCmd();

            UtilMsg.sendMsg(cmd);
            Ctx.m_instance.m_dataPlayer.m_dzData.m_bLastEnd = true;
        }
Esempio n. 7
0
        protected void onBtnSendClk()
        {
            stKokChatUserCmd cmd = new stKokChatUserCmd();

            cmd.dwType   = 2;
            cmd.pstrName = Ctx.m_instance.m_dataPlayer.m_dataMain.m_name;
            cmd.pstrChat = m_inputField.text;
            UtilMsg.sendMsg(cmd);
            m_inputField.text = "";              // 清空内容
        }
Esempio n. 8
0
        protected void onBtnClkShop(IDispatchObject dispObj)
        {
            Ctx.m_instance.m_uiMgr.loadAndShow(UIFormID.eUIShop);
            IUIShop shop = Ctx.m_instance.m_uiMgr.getForm(UIFormID.eUIShop) as IUIShop;

            UtilApi.setScale(shop.GUIWin().m_uiRoot.transform, new Vector3(1.0f, 1.0f, 1.0f));
            // 发送消息
            stReqMarketObjectInfoPropertyUserCmd cmd = new stReqMarketObjectInfoPropertyUserCmd();

            UtilMsg.sendMsg(cmd);
        }
Esempio n. 9
0
        // 返回基本角色信息
        public void psstUserInfoUserCmd(ByteBuffer bu)
        {
            // 发送选择角色登陆进入游戏
            stLoginSelectUserCmd cmd1f = new stLoginSelectUserCmd();

            cmd1f.charNo = 0;
            UtilMsg.sendMsg(cmd1f);

            stUserInfoUserCmd cmd = new stUserInfoUserCmd();

            cmd.derialize(bu);
        }
Esempio n. 10
0
        // 请求保存卡牌
        public void reqSaveCard()
        {
            stReqSaveOneCardGroupUserCmd cmd = new stReqSaveOneCardGroupUserCmd();

            cmd.index = m_curEditCardSet.m_cardGroupItem.m_cardGroup.index;
            if (m_curEditCardSet.bDiffForm(m_curCardSet))   // 如果发生改变
            {
                cmd.count = (ushort)m_curEditCardSet.m_cardGroupItem.m_cardList.Count;
                cmd.id    = m_curEditCardSet.m_cardGroupItem.m_cardList;
                UtilMsg.sendMsg(cmd);
            }
        }
Esempio n. 11
0
        protected void onQuitDZBtnClk()
        {
            stReqGiveUpOneBattleUserCmd cmd = new stReqGiveUpOneBattleUserCmd();

            UtilMsg.sendMsg(cmd);

//#if UNITY_EDITOR
//            UnityEditor.EditorApplication.isPlaying = false;
//#else
//            Application.Quit();
//#endif
        }
Esempio n. 12
0
        // 登陆网关服务器
        // 步骤 5 ,发送消息
        public void sendMsg5f()
        {
            Ctx.m_instance.m_logSys.log(Ctx.m_instance.m_langMgr.getText(LangTypeId.eLTLog0, LangItemID.eItem8));

            //stUserVerifyVerCmd cmdVerify = new stUserVerifyVerCmd();
            //UtilMsg.sendMsg(cmdVerify);

            stPasswdLogonUserCmd cmd = new stPasswdLogonUserCmd();

            cmd.dwUserID    = m_dwUserID;
            cmd.loginTempID = Ctx.m_instance.m_pTimerMsgHandle.m_loginTempID;
            UtilMsg.sendMsg(cmd);
        }
Esempio n. 13
0
        // 登陆登录服务器
        // 步骤 1 ,发送登陆消息
        public void sendMsg1f()
        {
            Ctx.m_instance.m_logSys.log(Ctx.m_instance.m_langMgr.getText(LangTypeId.eLTLog0, LangItemID.eItem2));

            stUserVerifyVerCmd cmdVerify = new stUserVerifyVerCmd();

#if KOKSERVER_TEST
            cmdVerify.version = 2015031801;
#endif
            UtilMsg.sendMsg(cmdVerify);

            stRequestClientIP cmdReqIP = new stRequestClientIP();
            UtilMsg.sendMsg(cmdReqIP);
        }
Esempio n. 14
0
        public void moveDyn2Raw()
        {
            Ctx.m_instance.m_logSys.log(string.Format("移动动态数据消息数据到原始数据队列,消息长度 {0}", m_dynBuff.size));
            UtilMsg.formatBytes2Array(m_dynBuff.buff, m_dynBuff.size);

#if MSG_ENCRIPT
            checkDES();
#endif
            // 接收到一个socket数据,就被认为是一个数据包,这个地方可能会有问题,服务器是这么发送的,只能这么处理,自己写入包的长度
            m_tmp1fData.clear();
            m_tmp1fData.writeUnsignedInt32(m_dynBuff.size);      // 填充长度
            m_rawBuffer.circularBuffer.pushBackBA(m_tmp1fData);
            // 写入包的数据
            m_rawBuffer.circularBuffer.pushBackArr(m_dynBuff.buff, 0, m_dynBuff.size);
        }
Esempio n. 15
0
        // 点击登陆处理
        protected void onBtnClkLogin()
        {
            string textStr = "";

            if (Ctx.m_instance.m_loginSys.get_LoginState() == LoginState.eLoginSuccessGateServer || Ctx.m_instance.m_loginSys.get_LoginState() == LoginState.eLoginNewCharError)    // 网关登陆成功或者建立角色错误
            {
                AuxInputField lblName = new AuxInputField(m_GUIWin.m_uiRoot, LoginComPath.PathLblName);

                if (lblName.text.Length == 0)       // 如果没有输入名字
                {
                    // 给出一个提示
                    textStr = Ctx.m_instance.m_langMgr.getText(LangTypeId.eSelectHero2, LangItemID.eItem1);
                    InfoBoxParam param = Ctx.m_instance.m_poolSys.newObject <InfoBoxParam>();
                    param.m_midDesc = textStr;
                    UIInfo.showMsg(param);
                }
                else if (Ctx.m_instance.m_wordFilterManager.IsMatch(lblName.text))       // 如果包含非法字符
                {
                    // 给出一个提示
                    textStr = Ctx.m_instance.m_langMgr.getText(LangTypeId.eSelectHero2, LangItemID.eItem2);
                    InfoBoxParam param = Ctx.m_instance.m_poolSys.newObject <InfoBoxParam>();
                    param.m_midDesc = textStr;
                    UIInfo.showMsg(param);
                }
                else
                {
                    // 判断名字长度
                    if (UtilLogic.CalcCharCount(lblName.text) <= ProtoCV.MAX_NAMESIZE)
                    {
                        stCreateSelectUserCmd cmd = new stCreateSelectUserCmd();
                        cmd.strUserName = lblName.text;
                        cmd.country     = 1;
                        UtilMsg.sendMsg(cmd);
                    }
                    else
                    {
                        // 给出一个提示
                        textStr = Ctx.m_instance.m_langMgr.getText(LangTypeId.eSelectHero2, LangItemID.eItem0);
                        InfoBoxParam param = Ctx.m_instance.m_poolSys.newObject <InfoBoxParam>();
                        param.m_midDesc = textStr;
                        UIInfo.showMsg(param);
                    }
                }
            }
        }
Esempio n. 16
0
        protected void onPackBtnClk_1(IDispatchObject dispObj)
        {
            m_cardBtnArr[(int)CardBtnEnum.ePackBtn_2].objData = Ctx.m_instance.m_dataPlayer.m_dataPack.m_objList[1];
            m_cardBtnArr[(int)CardBtnEnum.ePackBtn_2].load();

            DataItemObjectBase bojBase;

            bojBase = Ctx.m_instance.m_dataPlayer.m_dataPack.m_objList[1];

            // 发消息通知开
            stUseObjectPropertyUserCmd cmd = new stUseObjectPropertyUserCmd();

            cmd.qwThisID = bojBase.m_srvItemObject.dwThisID;
            cmd.useType  = 1;
            UtilMsg.sendMsg(cmd);

            UtilApi.SetActive(m_goArr[(int)OpenPackGo.eCardPackLayer], false);

            m_cardBtnArr[(int)CardBtnEnum.ePackBtn_2].auxDynImageStaticGoButton.show();
        }
Esempio n. 17
0
        protected void effcPlayEnd(IDispatchObject dispObj)
        {
            DataItemObjectBase bojBase;

            bojBase = Ctx.m_instance.m_dataPlayer.m_dataPack.m_objList[0];

            // 发消息通知开
            stUseObjectPropertyUserCmd cmd = new stUseObjectPropertyUserCmd();

            cmd.qwThisID = bojBase.m_srvItemObject.dwThisID;
            cmd.useType  = 1;
            UtilMsg.sendMsg(cmd);

            m_spriteAni.updateImage();
            m_openEffImg.SetActive(false);
            m_cardBtnArr[(int)CardBtnEnum.ePackBtn_2].auxDynImageStaticGoButton.hide();

            m_bEffectEnd = true;
            //show5Card();
            //m_PanelGray.SetActive(true);
        }
Esempio n. 18
0
 protected void OnBtnClk(GameObject go)
 {
     if (Ctx.m_instance.m_dataPlayer.m_dzData.bSelfSide())
     {
         stReqEndMyRoundUserCmd cmd;
         if (!m_bNeedTipsInfo)
         {
             cmd = new stReqEndMyRoundUserCmd();
             UtilMsg.sendMsg(cmd);
         }
         //else
         //{
         //    ++m_clkTipsCnt;
         //    if (m_clkTipsCnt == 1)
         //    {
         //        if (!hasLeftMagicPtCanUse())
         //        {
         //            cmd = new stReqEndMyRoundUserCmd();
         //            UtilMsg.sendMsg(cmd);
         //        }
         //        else    // 你还有可操作的随从
         //        {
         //            InfoBoxParam param = Ctx.m_instance.m_poolSys.newObject<InfoBoxParam>();
         //            param.m_midDesc = Ctx.m_instance.m_langMgr.getText(LangTypeId.eDZ4, LangItemID.eItem0);
         //            param.m_btnClkDisp = onInfoBoxBtnClk;
         //            param.m_formID = UIFormID.eUIInfo;     // 这里提示使用这个 id
         //            UIInfo.showMsg(param);
         //        }
         //    }
         //    else
         //    {
         //        m_clkTipsCnt = 0;
         //        cmd = new stReqEndMyRoundUserCmd();
         //        UtilMsg.sendMsg(cmd);
         //    }
         //}
     }
 }
Esempio n. 19
0
 // 进入普通攻击状态
 public void enterAttack()
 {
     if (this.m_card.sceneCardItem.cardArea != CardArea.CARDCELLTYPE_HAND)   // 只要点击的不是手牌
     {
         // 只有点击自己的时候,才启动攻击
         if (this.m_card.sceneCardItem.bSelfSide())   // 应该再判断是否能够继续攻击
         {
             // 技能牌进入攻击判断流程
             if ((int)CardType.CARDTYPE_SKILL == m_card.sceneCardItem.m_cardTableItem.m_type)     // 如果点击的是技能卡牌
             {
                 // 技能消耗 Mp 和攻击次数
                 if (canLaunchAtt())
                 {
                     if (m_card.sceneCardItem.m_cardTableItem.m_bNeedFaShuTarget == 0)         // 如果没有攻击目标
                     {
                         // 直接发送消息
                         stCardMoveAndAttackMagicUserCmd skillCmd = new stCardMoveAndAttackMagicUserCmd();
                         skillCmd.dwAttThisID = m_card.sceneCardItem.svrCard.qwThisID;
                         UtilMsg.sendMsg(skillCmd);
                     }
                     else        // 有攻击目标
                     {
                         m_card.m_sceneDZData.m_gameOpState.enterAttackOp(EnGameOp.eOpSkillAttackTarget, m_card);
                     }
                 }
             }
             else if ((int)CardType.CARDTYPE_ATTEND == m_card.sceneCardItem.m_cardTableItem.m_type ||
                      (int)CardType.CARDTYPE_HERO == m_card.sceneCardItem.m_cardTableItem.m_type)      // 随从卡、英雄卡
             {
                 // 有攻击力和攻击次数
                 if (canLaunchAtt())
                 {
                     this.m_card.m_sceneDZData.m_gameOpState.enterAttackOp(EnGameOp.eOpNormalAttack, this.m_card);
                 }
             }
         }
     }
 }
Esempio n. 20
0
        protected void onBtnClkBuy(IDispatchObject dispObj)
        {
            GameObject _go = EventSystem.current.currentSelectedGameObject;

            if (0 == BuyIndex)
            {
                return;
            }

            XmlMarketCfg  marketCfg  = Ctx.m_instance.m_xmlCfgMgr.getXmlCfg <XmlMarketCfg>(XmlCfgID.eXmlMarketCfg);
            XmlItemMarket itemMarket = marketCfg.getXmlItem(BuyIndex) as XmlItemMarket;

            if (Ctx.m_instance.m_dataPlayer.m_dataMain.m_gold < itemMarket.m_price)
            {
                UtilApi.SetActive(m_NoGoldTip.gameObject, true);
            }
            else
            {
                stReqBuyMobileObjectPropertyUserCmd cmd = new stReqBuyMobileObjectPropertyUserCmd();
                cmd.index = BuyIndex;
                UtilMsg.sendMsg(cmd);
            }
        }
Esempio n. 21
0
        public void onSelBtnClk()
        {
            if (JobSelectMode.eNewCardSet == Ctx.m_instance.m_auxUIHelp.m_auxJobSelectData.jobSelectMode)
            {
                if (m_jobSelectData.m_midPnl.curSelJobCard != null)       // 如果有选择
                {
                    stReqCreateOneCardGroupUserCmd cmd = new stReqCreateOneCardGroupUserCmd();
                    cmd.occupation = (uint)m_jobSelectData.m_midPnl.curSelJobCard.career;
                    UtilMsg.sendMsg(cmd);
                }

                m_jobSelectData.m_form.exit();
            }
            if (JobSelectMode.eDz == Ctx.m_instance.m_auxUIHelp.m_auxJobSelectData.jobSelectMode)
            {
                if (m_jobSelectData.m_midPnl.curSelJobCard != null)      // 如果有选中
                {
                    if (Ctx.m_instance.m_dataPlayer.m_dzData.m_canReqDZ)
                    {
                        Ctx.m_instance.m_dataPlayer.m_dzData.m_canReqDZ = false;
                        Ctx.m_instance.m_dataPlayer.m_dzData.setSelfHeroInfo(m_jobSelectData.m_midPnl.curSelJobCard.cardGroupItem);

                        stReqHeroFightMatchUserCmd cmd = new stReqHeroFightMatchUserCmd();
                        cmd.index = m_jobSelectData.m_midPnl.curSelJobCard.cardGroupItem.m_cardGroup.index;
                        UtilMsg.sendMsg(cmd);

                        //开始查找
                        m_jobSelectData.m_midPnl.startmatch();
                    }
                }
#if DEBUG_NOTNET
                // test
                m_jobSelectData.m_midPnl.startmatch();
#endif
            }
        }
Esempio n. 22
0
        protected void testSendToSelf()
        {
            stRetCardAttackFailUserCmd cmd = new stRetCardAttackFailUserCmd();

            UtilMsg.sendMsg(cmd, false);
        }
Esempio n. 23
0
        // 测试删除对方手里一张卡牌
        protected void testDelEnemyHandleCard()
        {
            stDelEnemyHandCardPropertyUserCmd cmd = new stDelEnemyHandCardPropertyUserCmd();

            UtilMsg.sendMsg(cmd, false);
        }
Esempio n. 24
0
        // 拖放结束处理
        override protected void onDragEnd()
        {
            m_isCalc = false;

            // 如果在一定小范围内
            if (bInHandArea())
            {
                // 拖动结束直接退回去
                // 开始缩放
                //m_card.trackAniControl.destScale = SceneDZCV.SMALLFACT;
                backCard2Orig();
            }
            else
            {
                m_card.trackAniControl.endDragAni();       // 结束动画

#if DEBUG_NOTNET
                m_card.m_sceneDZData.m_sceneDZAreaArr[(int)EnDZPlayer.ePlayerSelf].addCardToOutList(m_card);        // 放入输出列表
#endif
                if (m_card.sceneCardItem != null)
                {
                    if (m_card.sceneCardItem.svrCard != null)
                    {
                        // 法术攻击一次必然要消失
                        if (m_card.sceneCardItem.m_cardTableItem.m_type == (int)CardType.CARDTYPE_MAGIC) // 如果是法术牌
                        {
                            if (m_card.sceneCardItem.m_cardTableItem.m_bNeedFaShuTarget > 0)             // 如果有攻击目标
                            {
                                // 直接放下去,然后选择攻击目标
                                m_card.m_sceneDZData.m_sceneDZAreaArr[(int)EnDZPlayer.ePlayerSelf].outSceneCardList.removeWhiteCard(); // 将占位的牌移除
                                m_card.hide();                                                                                         // 隐藏起来
                                // 英雄播放攻击准备特效
                                if (m_card.sceneCardItem.m_cardTableItem.m_skillPrepareEffect > 0)
                                {
                                    m_card.m_sceneDZData.m_sceneDZAreaArr[(int)(m_card.sceneCardItem.playerSide)].centerHero.effectControl.startSkillAttPrepareEffect((int)m_card.sceneCardItem.m_cardTableItem.m_skillPrepareEffect);
                                }
                                m_card.m_sceneDZData.m_gameOpState.enterAttackOp(EnGameOp.eOpFaShu, m_card);
                            }
                            else        // 如果没有攻击目标,直接拖出去
                            {
                                // 发送法术攻击消息
                                stCardMoveAndAttackMagicUserCmd cmd = new stCardMoveAndAttackMagicUserCmd();
                                cmd.dwAttThisID = m_card.sceneCardItem.svrCard.qwThisID;
                                cmd.dwMagicType = (uint)m_card.sceneCardItem.m_cardTableItem.m_faShu;
                                UtilMsg.sendMsg(cmd);

                                m_card.m_sceneDZData.m_gameOpState.enterMoveOp(m_card);      // 进入移动操作
                            }
                        }
                        else if (m_card.sceneCardItem.m_cardTableItem.m_zhanHou > 0 && m_card.sceneCardItem.m_cardTableItem.m_bNeedZhanHouTarget > 0)           // 如果有战吼,并且需要攻击目标
                        {
                            // 直接放下去,然后选择攻击目标
                            m_card.m_sceneDZData.m_sceneDZAreaArr[(int)EnDZPlayer.ePlayerSelf].outSceneCardList.removeWhiteCard(); // 将占位的牌移除
                            m_card.m_sceneDZData.m_sceneDZAreaArr[(int)EnDZPlayer.ePlayerSelf].removeFormInList(m_card);           // 从手牌区移除卡牌
                            m_card.convOutModel();
                            m_card.m_sceneDZData.m_sceneDZAreaArr[(int)EnDZPlayer.ePlayerSelf].addCardToOutList(m_card, m_card.m_sceneDZData.curWhiteIdx);
                            m_card.m_sceneDZData.m_sceneDZAreaArr[(int)EnDZPlayer.ePlayerSelf].inSceneCardList.updateSceneCardPos();
                            m_card.m_sceneDZData.m_gameOpState.enterAttackOp(EnGameOp.eOpZhanHouAttack, m_card);
                        }
                        else        // 如果是普通移动牌,就发送移动消息
                        {
                            stCardMoveAndAttackMagicUserCmd cmd = new stCardMoveAndAttackMagicUserCmd();
                            cmd.dst = new stObjectLocation();
                            if (m_card.sceneCardItem.m_cardTableItem != null)
                            {
                                cmd.dst.dwTableID = 0;
                                cmd.dst.x         = 0;
                                cmd.dwAttThisID   = m_card.sceneCardItem.svrCard.qwThisID;

                                if (m_card.sceneCardItem.m_cardTableItem.m_type == (int)CardType.CARDTYPE_EQUIP)
                                {
                                    cmd.dst.dwLocation = (int)CardArea.CARDCELLTYPE_EQUIP;
                                    cmd.dst.y          = 0;
                                }
                                else
                                {
                                    cmd.dst.dwLocation = (int)CardArea.CARDCELLTYPE_COMMON;
                                    cmd.dst.y          = (byte)m_card.m_sceneDZData.curWhiteIdx;
                                }
                                UtilMsg.sendMsg(cmd);
                            }

                            m_card.m_sceneDZData.m_gameOpState.enterMoveOp(m_card);      // 进入移动操作
                        }
                    }
                }
            }
        }
Esempio n. 25
0
 // 英雄卡、随从卡即可以作为攻击者也可以作为被击者,法术卡、技能卡、装备卡只能作为攻击者
 override public void onCardClick(IDispatchObject dispObj)
 {
     if (!m_card.m_sceneDZData.m_gameRunState.isInState(GameRunState.INITCARD))                                                        // 如果处于初始化卡牌阶段
     {
         if (EnDZPlayer.ePlayerSelf != m_card.sceneCardItem.playerSide || CardArea.CARDCELLTYPE_HAND != m_card.sceneCardItem.cardArea) // 如果点击的不是自己的手牌
         {
             if (m_card.sceneCardItem != null)
             {
                 if (m_card.m_sceneDZData.m_gameOpState.bInOp(EnGameOp.eOpNormalAttack))     // 选择攻击目标
                 {
                     if (m_card.m_sceneDZData.m_gameOpState.canAttackOp(m_card, EnGameOp.eOpNormalAttack))
                     {
                         // 发送攻击指令
                         stCardAttackMagicUserCmd cmd = new stCardAttackMagicUserCmd();
                         cmd.dwAttThisID = m_card.m_sceneDZData.m_gameOpState.getOpCardID();
                         cmd.dwDefThisID = m_card.sceneCardItem.svrCard.qwThisID;
                         UtilMsg.sendMsg(cmd);
                     }
                     else
                     {
                         m_card.behaviorControl.enterAttack();
                     }
                 }
                 else if ((m_card.m_sceneDZData.m_gameOpState.bInOp(EnGameOp.eOpFaShu)))            // 法术攻击
                 {
                     if (m_card.m_sceneDZData.m_gameOpState.canAttackOp(m_card, EnGameOp.eOpFaShu)) // 选择攻击目标
                     {
                         // 必然是有目标的法术攻击
                         // 发送法术攻击消息
                         stCardMoveAndAttackMagicUserCmd cmd = new stCardMoveAndAttackMagicUserCmd();
                         cmd.dwAttThisID = m_card.m_sceneDZData.m_gameOpState.getOpCardID();
                         cmd.dwMagicType = (uint)m_card.m_sceneDZData.m_gameOpState.getOpCardFaShu();
                         cmd.dwDefThisID = m_card.sceneCardItem.svrCard.qwThisID;
                         //m_sceneDZData.m_gameOpState.quitAttackOp(false);
                         UtilMsg.sendMsg(cmd);
                     }
                     else
                     {
                         m_card.behaviorControl.enterAttack();
                     }
                 }
                 else if (m_card.m_sceneDZData.m_gameOpState.bInOp(EnGameOp.eOpZhanHouAttack))              // 战吼攻击
                 {
                     if (m_card.m_sceneDZData.m_gameOpState.canAttackOp(m_card, EnGameOp.eOpZhanHouAttack)) // 选择攻击目标
                     {
                         // 发送攻击指令
                         stCardMoveAndAttackMagicUserCmd cmd = new stCardMoveAndAttackMagicUserCmd();
                         cmd.dwAttThisID    = m_card.m_sceneDZData.m_gameOpState.getOpCardID();
                         cmd.dwMagicType    = (uint)m_card.m_sceneDZData.m_gameOpState.getOpCardFaShu();
                         cmd.dwDefThisID    = m_card.sceneCardItem.svrCard.qwThisID;
                         cmd.dst            = new stObjectLocation();
                         cmd.dst.dwLocation = (uint)CardArea.CARDCELLTYPE_COMMON;
                         cmd.dst.y          = (ushort)m_card.m_sceneDZData.m_gameOpState.getZhanHouCommonClientIdx();
                         UtilMsg.sendMsg(cmd);
                     }
                     else
                     {
                         m_card.behaviorControl.enterAttack();
                     }
                 }
                 else if (m_card.m_sceneDZData.m_gameOpState.bInOp(EnGameOp.eOpSkillAttackTarget))              // 技能目标攻击
                 {
                     if (m_card.m_sceneDZData.m_gameOpState.canAttackOp(m_card, EnGameOp.eOpSkillAttackTarget)) // 选择攻击目标
                     {
                         // 必然是有目标的法术攻击
                         // 发送法术攻击消息
                         stCardMoveAndAttackMagicUserCmd cmd = new stCardMoveAndAttackMagicUserCmd();
                         cmd.dwAttThisID = m_card.m_sceneDZData.m_gameOpState.getOpCardID();
                         cmd.dwMagicType = (uint)m_card.m_sceneDZData.m_gameOpState.getOpCardFaShu();
                         cmd.dwDefThisID = m_card.sceneCardItem.svrCard.qwThisID;
                         UtilMsg.sendMsg(cmd);
                     }
                 }
                 else        // 默认点击处理都走这里
                 {
                     m_card.behaviorControl.enterAttack();
                 }
             }
         }
     }
 }