Beispiel #1
0
    /// <summary>
    /// 卡牌进入牌堆
    /// </summary>
    public void CardToCemetery(CardFighter card, CardArea area)
    {
        RemoveCard(card, area);
        deadCard.Add(card);

        Actions.Add(CardDeadAction.GetAction(ID, card.ID, area));
    }
Beispiel #2
0
    /// <summary>
    /// 卡牌进入牌堆
    /// </summary>
    public void CardToCardArea(CardFighter card, CardArea area)
    {
        RemoveCard(card, area);
        initialCard.Add(card);

        Actions.Add(CardBackAction.GetAction(ID, card.ID, area));
    }
Beispiel #3
0
 void UpdateCardTick(CardArea area)
 {
     foreach (Card card in area.m_AreaList)
     {
         card.Tick();
     }
 }
Beispiel #4
0
 void CheckSpecial(Card card, CardArea area)
 {
     if (card.m_CardName == "指挥官")
     {
         card.m_CurrentATK += area.m_AreaList.Count;
         card.m_CurrentHP  += area.m_AreaList.Count;
         card.ChangeHP(area.m_AreaList.Count);
         card.ChangeATK(area.m_AreaList.Count);
     }
     foreach (Card forcard in area.m_AreaList)
     {
         if (card.m_CardName == "冲锋" && forcard.m_CardType == Card.CardType.Character && (card.m_BattleRow == forcard.m_BattleRow || card.m_BattleColumn == forcard.m_BattleColumn))
         {
             forcard.m_CurrentATK += 2;
             forcard.ChangeATK(2);
         }
         if (card.m_CardName == "爆发" && forcard.m_CardType == Card.CardType.Character && card.m_BattleColumn == forcard.m_BattleColumn)
         {
             forcard.m_CurrentATK *= 3;
             forcard.m_CurrentHP   = 1;
             forcard.ChangeHP(1 - forcard.m_HP);
             forcard.ChangeATK(forcard.m_ATK * 2);
         }
         if (card.m_CardName == "坚守" && forcard.m_CardType == Card.CardType.Character && card.m_BattleRow == forcard.m_BattleRow)
         {
             forcard.m_CurrentHP *= 2;
             forcard.ChangeHP(forcard.m_HP);
         }
         if (card.m_CardName == "巨盾" && forcard.m_CardType == Card.CardType.Character)
         {
             forcard.m_CurrentHP += 5;
             forcard.ChangeHP(5);
         }
     }
 }
Beispiel #5
0
 CardFightAction(int ownerID, int cardID, CardArea area)
 {
     type       = ActionType.CardFight;
     sourceID   = ownerID;
     targetID   = cardID;
     sourceArea = area;
 }
Beispiel #6
0
        virtual protected void updateSceneCardPosInternal(CardArea area, bool bUpdateIdx = true)
        {
            int           idx      = 0;
            SceneCardBase cardItem = null;
            WayPtItem     pt       = null;
            PosType       posType  = PosType.eHandDown;

            if (CardArea.CARDCELLTYPE_HAND == area)
            {
                posType = PosType.eHandDown;
            }
            else if (CardArea.CARDCELLTYPE_COMMON == area)
            {
                posType = PosType.eOutDown;
            }

            getCardPos();

            while (idx < m_sceneCardList.Count())
            {
                cardItem = m_sceneCardList[idx];
                if (bUpdateIdx)
                {
                    cardItem.curIndex = (ushort)idx;
                }

                pt     = cardItem.trackAniControl.wayPtList.getAndAddPosInfo(posType);
                pt.pos = m_posList[idx];
                cardItem.trackAniControl.moveToDestPos(posType);

                ++idx;
            }
        }
Beispiel #7
0
    /// <summary>
    /// 卡牌进入等待区
    /// </summary>
    public void CardToWait(CardFighter card, CardArea area)
    {
        RemoveCard(card, area);

        waitCard.Add(card);
        Actions.Add(CardWaitAction.GetAction(ID, card.ID, area));
    }
Beispiel #8
0
 void ClearCalculationPre(CardArea area1, CardArea area2, bool isplayer = true, bool ishurta = true, int column = 3)
 {
     if (isplayer)
     {
         player.m_CurrentHurt = 0;
         enemy.m_CurrentHurt  = 0;
     }
     foreach (Card card in area1.m_AreaList)
     {
         if (column == 3 || card.m_BattleColumn == column)
         {
             card.m_CurrentHurt = 0;
             if (ishurta)
             {
                 card.m_CurrentHurtA = 0;
             }
         }
     }
     foreach (Card card in area2.m_AreaList)
     {
         if (column == 3 || card.m_BattleColumn == column)
         {
             card.m_CurrentHurt = 0;
             if (ishurta)
             {
                 card.m_CurrentHurtA = 0;
             }
         }
     }
 }
Beispiel #9
0
 void DrawCard(CardArea areadrop, CardArea areadeck, CardArea areahand)
 {
     while (iDrawCardCount < player.m_DrawCardCount)
     {
         if (areadeck.m_AreaList.Count == 0)
         {
             Shuffle(areadrop, areadeck);
         }
         if (areadeck.m_AreaList.Count >= 1)
         {
             ChangeCardArea(areahand, areadeck.m_AreaList[0]);
             areahand.m_AreaList.Add(areadeck.m_AreaList[0]);
             areadeck.m_AreaList.Remove(areadeck.m_AreaList[0]);
             iDrawCardCount++;
         }
         else
         {
             return;
         }
     }
     UpdateCardAreaListCount(areadeck);
     bDrawCard      = false;
     bPushCard      = true;
     iDrawCardCount = 0;
 }
    public bool CanPlayerDrag(Player player, CardArea area)
    {
        bool PlayersTurn = (GameManager.Instance.whoseTurn == player);
        //Debug.Log(" Area: " + area.areaType + " PlayersTurn: " + PlayersTurn);
        bool IsHand = (area.areaType == CardArea.AreaType.Hand);

        //Debug.Log("IsHand: " + IsHand + " Area: " + area.areaType + " PlayersTurn: " + PlayersTurn);
        return(PlayersTurn && IsHand);
    }
Beispiel #11
0
    // canvasエリアの用意
    private void Setting()
    {
        var c_instance = Instantiate(cardarea);
        var s_instance = Instantiate(scorearea, new Vector2(600, -50), q);

        c_instance.transform.SetParent(canvas.transform, false);
        s_instance.transform.SetParent(canvas.transform, false);
        cardArea = c_instance.GetComponent <CardArea>();
    }
Beispiel #12
0
    int BattleCalculationPre(CardArea area1, CardArea area2)
    {
        int atk2 = 0;

        for (int i = 0; i < 9; i++)
        {
            int             atk        = 0;
            Card.HurtEffect hurteffect = Card.HurtEffect.Normal;
            BattleCube      cube       = area1.transform.GetChild(i).GetComponent <BattleCube>();
            if (cube != null && cube.transform.childCount > 0)
            {
                atk       += cube.transform.GetChild(0).GetComponent <Card>().m_CurrentATK;
                hurteffect = cube.transform.GetChild(0).GetComponent <Card>().m_HurtEffect;
                if (hurteffect == Card.HurtEffect.Backstab)
                {
                    for (int j = 8; j >= 0; j--)
                    {
                        BattleCube cube2 = area2.transform.GetChild(j).GetComponent <BattleCube>();
                        if (cube2 != null && cube2.m_Column == cube.m_Column && cube2.transform.childCount > 0)
                        {
                            atk = cube2.transform.GetChild(0).GetComponent <Card>().GetHurtPre(atk);
                        }
                    }
                }
                else
                {
                    for (int j = 0; j < 9; j++)
                    {
                        BattleCube cube2 = area2.transform.GetChild(j).GetComponent <BattleCube>();
                        if (cube2 != null && cube2.m_Column == cube.m_Column && cube2.transform.childCount > 0)
                        {
                            if (hurteffect == Card.HurtEffect.Normal)
                            {
                                atk = cube2.transform.GetChild(0).GetComponent <Card>().GetHurtPre(atk);
                            }
                            //if (hurteffect == Card.HurtEffect.Puncture)
                            //{
                            //  atk = cube.transform.GetChild(0).GetComponent<Card>().GetHurtByPuncture(atk);
                            //}
                            if (hurteffect == Card.HurtEffect.Penetrate)
                            {
                                cube2.transform.GetChild(0).GetComponent <Card>().GetHurtPre(atk);
                            }
                        }
                    }
                    if (hurteffect == Card.HurtEffect.Penetrate)
                    {
                        atk = 0;
                    }
                }
                cube.transform.GetChild(0).GetComponent <Card>().GetHurtAPra(atk);
            }
            atk2 += atk;
        }
        return(atk2);
    }
Beispiel #13
0
    int BattleCalculation(CardArea atkarea, CardArea defarea, int row, int column, int currentcolumn, int currrentrow)
    {
        int atk = 0;

        Card.HurtEffect hurteffect = Card.HurtEffect.Normal;
        for (int i = 0; i < row * column; i++)
        {
            BattleCube cube = atkarea.transform.GetChild(i).GetComponent <BattleCube>();
            if (cube != null && cube.m_Column == currentcolumn && cube.m_Row == currrentrow && cube.transform.childCount > 0)
            {
                atk += cube.transform.GetChild(0).GetComponent <Card>().m_CurrentATK;
                if (cube.transform.GetChild(0).GetComponent <Card>().m_HurtEffect > hurteffect)
                {
                    hurteffect = cube.transform.GetChild(0).GetComponent <Card>().m_HurtEffect;
                }
            }
        }
        if (hurteffect == Card.HurtEffect.Backstab)
        {
            for (int i = row * column - 1; i >= 0; i--)
            {
                BattleCube cube = defarea.transform.GetChild(i).GetComponent <BattleCube>();
                if (cube != null && cube.m_Column == currentcolumn && cube.transform.childCount > 0)
                {
                    atk = cube.transform.GetChild(0).GetComponent <Card>().GetHurt(atk);
                }
            }
        }
        else
        {
            for (int i = 0; i < row * column; i++)
            {
                BattleCube cube = defarea.transform.GetChild(i).GetComponent <BattleCube>();
                if (cube != null && cube.m_Column == currentcolumn && cube.transform.childCount > 0)
                {
                    if (hurteffect == Card.HurtEffect.Normal)
                    {
                        atk = cube.transform.GetChild(0).GetComponent <Card>().GetHurt(atk);
                    }
                    if (hurteffect == Card.HurtEffect.Puncture)
                    {
                        atk = cube.transform.GetChild(0).GetComponent <Card>().GetHurtByPuncture(atk);
                    }
                    if (hurteffect == Card.HurtEffect.Penetrate)
                    {
                        cube.transform.GetChild(0).GetComponent <Card>().GetHurt(atk);
                    }
                }
            }
            if (hurteffect == Card.HurtEffect.Penetrate)
            {
                atk = 0;
            }
        }
        return(atk);
    }
Beispiel #14
0
        public SceneCardBase getSceneCardByThisID(uint thisID, ref CardArea slot)
        {
            // 出牌列表
            SceneCardBase cardBase;

            cardBase = m_outSceneCardList.getSceneCardByThisID(thisID);
            if (cardBase != null)
            {
                slot = CardArea.CARDCELLTYPE_COMMON;
                return(cardBase);
            }

            // 对手区域手牌是不检查的
            if (EnDZPlayer.ePlayerSelf == m_playerSide)
            {
                cardBase = m_inSceneCardList.getSceneCardByThisID(thisID);
                if (cardBase != null)
                {
                    slot = CardArea.CARDCELLTYPE_HAND;
                    return(cardBase);
                }
            }

            // 技能区
            if (m_sceneSkillCard != null)
            {
                if (m_sceneSkillCard.sceneCardItem.svrCard.qwThisID == thisID)
                {
                    slot = CardArea.CARDCELLTYPE_SKILL;
                    return(m_sceneSkillCard);
                }
            }

            // 装备区
            if (m_sceneEquipCard != null)
            {
                if (m_sceneEquipCard.sceneCardItem.svrCard.qwThisID == thisID)
                {
                    slot = CardArea.CARDCELLTYPE_EQUIP;
                    return(m_sceneEquipCard);
                }
            }

            // 检查英雄
            if (m_centerHero != null)
            {
                if (m_centerHero.sceneCardItem.svrCard.qwThisID == thisID)
                {
                    slot = CardArea.CARDCELLTYPE_HERO;
                    return(m_centerHero);
                }
            }

            return(null);
        }
Beispiel #15
0
 void ChangeCardArea(CardArea areanew, Card card)
 {
     if (!areanew.m_CardAreaName.Contains("Hand"))
     {
         card.transform.SetParent(this.transform.Find("Recycle"));
     }
     else
     {
         card.transform.SetParent(areanew.transform);
     }
 }
Beispiel #16
0
 void UpdateCardAreaListCount(CardArea area)
 {
     if (area.transform.Find("Text_Count"))
     {
         if (area.transform.Find("Text_Count").GetComponent <Text>())
         {
             area.m_TextCount      = area.transform.Find("Text_Count").GetComponent <Text>();
             area.m_TextCount.text = area.m_AreaList.Count.ToString();
         }
     }
 }
Beispiel #17
0
 public void copyFrom(SceneCardItem rhv)
 {
     if (m_svrCard == null)
     {
         m_svrCard = new t_Card();
     }
     m_svrCard.copyFrom(rhv.m_svrCard);
     m_cardTableItem = rhv.m_cardTableItem;
     m_playerSide = rhv.m_playerSide;
     m_cardArea = rhv.m_cardArea;
 }
Beispiel #18
0
 public void copyFrom(SceneCardItem rhv)
 {
     if (m_svrCard == null)
     {
         m_svrCard = new t_Card();
     }
     m_svrCard.copyFrom(rhv.m_svrCard);
     m_cardTableItem = rhv.m_cardTableItem;
     m_playerSide    = rhv.m_playerSide;
     m_cardArea      = rhv.m_cardArea;
 }
Beispiel #19
0
 void DropCard(CardArea areadrop, CardArea areadeck, CardArea areahand)
 {
     bPushCard = false;
     for (int i = areahand.m_AreaList.Count - 1; i >= 0; i--)
     {
         ChangeCardArea(areadrop, areahand.m_AreaList[i]);
         areadrop.m_AreaList.Add(areahand.m_AreaList[i]);
         areahand.m_AreaList.Remove(areahand.m_AreaList[i]);
     }
     UpdateCardAreaListCount(areadrop);
     bDropCard = false;
 }
Beispiel #20
0
        // 自己移动卡牌位置,需要更新能发起攻击状态特效
        override public void changeSelfSceneCardArea(uint qwThisID, CardArea dwLocation, ushort yPos)
        {
            base.changeSelfSceneCardArea(qwThisID, dwLocation, yPos);

            if (Ctx.m_instance.m_dataPlayer.m_dzData.bSelfSide())
            {
                //updateCanLaunchAttState(true);
                SceneCardBase srcCard = null;
                srcCard = m_outSceneCardList.getSceneCardByThisID(qwThisID);
                srcCard.effectControl.updateCanLaunchAttState(true);
            }
        }
Beispiel #21
0
        // 自己移动卡牌位置,需要更新能发起攻击状态特效
        override public void changeSelfSceneCardArea(uint qwThisID, CardArea dwLocation, ushort yPos)
        {
            base.changeSelfSceneCardArea(qwThisID, dwLocation, yPos);

            if (Ctx.m_instance.m_dataPlayer.m_dzData.bSelfSide())
            {
                //updateCanLaunchAttState(true);
                SceneCardBase srcCard = null;
                srcCard = m_outSceneCardList.getSceneCardByThisID(qwThisID);
                srcCard.effectControl.updateCanLaunchAttState(true);
            }
        }
Beispiel #22
0
 void InitBattleCube(CardArea area, int row = 1, int column = 1)
 {
     for (int i = 0; i < row * column; i++)
     {
         GameObject toInstantiate = (GameObject)Resources.Load("Prefabs/BattleCube");
         BattleCube cube          = Instantiate(toInstantiate, area.transform).GetComponent <BattleCube>();
         cube.m_Row    = i / column;
         cube.m_Column = i % column;
         if (area.m_CardAreaName.Contains("Player"))
         {
             cube.m_IsPlayer = true;
         }
         cube.battlemanager = this;
     }
 }
Beispiel #23
0
 void InitCardAreaList(string name)
 {
     if (this.transform.Find(name))
     {
         if (!this.transform.Find(name).GetComponent <CardArea>())
         {
             this.transform.Find(name).gameObject.AddComponent <CardArea>();
         }
         CardArea cardarea = this.transform.Find(name).GetComponent <CardArea>();
         cardarea.m_CardAreaName = name;
         cardarea.battlemanager  = this;
         UpdateCardAreaListCount(cardarea);
         cardarea.m_AreaList = new List <Card>();
         CardAreaList.Add(cardarea);
     }
 }
Beispiel #24
0
        // 攻击检查
        protected bool attackCheck(uint thisId, ref SceneCardBase card)
        {
            // 更新动画
            EnDZPlayer side = EnDZPlayer.ePlayerTotal;
            CardArea   slot = CardArea.CARDCELLTYPE_NONE;

            card = m_sceneDZData.getSceneCardByThisID(thisId, ref side, ref slot);

            if (side == EnDZPlayer.ePlayerTotal ||
                slot == CardArea.CARDCELLTYPE_NONE)
            {
                return(false);
            }

            return(true);
        }
Beispiel #25
0
    void Shuffle(CardArea areaout, CardArea areain)
    {
        int countNum = areaout.m_AreaList.Count;

        while (countNum > areain.m_AreaList.Count)
        {
            int index = Random.Range(0, areaout.m_AreaList.Count);
            if (!areain.m_AreaList.Contains(areaout.m_AreaList[index]))
            {
                ChangeCardArea(areain, areaout.m_AreaList[index]);
                areain.m_AreaList.Add(areaout.m_AreaList[index]);
                areaout.m_AreaList.Remove(areaout.m_AreaList[index]);
            }
        }
        UpdateCardAreaListCount(areaout);
        UpdateCardAreaListCount(areain);
    }
Beispiel #26
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);
                }
            }
        }
Beispiel #27
0
        /// <summary>
        /// 退卡,清除指定区域数据
        /// </summary>
        /// <param name="area">卡片区域类型:0/消费,1/停车场</param>
        /// <returns>返回发行结果tag格式:Success</returns>
        public string ClearData(int areatype)
        {
            string msg = this.isInited();

            if (!string.IsNullOrEmpty(msg))
            {
                return(msg);
            }
            CardArea area = CardArea.Eatery;

            switch (areatype)
            {
            case 0: area = CardArea.Eatery; break;

            case 1: area = CardArea.Park; break;
            }
            return(this.cmdCard.ClearData(area));
        }
Beispiel #28
0
 // 清除卡牌
 void RemoveCard(CardFighter card, CardArea area)
 {
     if (area == CardArea.WaitArea && waitCard.Contains(card))
     {
         waitCard[waitCard.IndexOf(card)] = null;
     }
     else if (area == CardArea.InitArea && initialCard.Contains(card))
     {
         initialCard[initialCard.IndexOf(card)] = null;
     }
     else if (area == CardArea.FightArea && fightCard.Contains(card))
     {
         fightCard[fightCard.IndexOf(card)] = null;
     }
     else if (area == CardArea.DeadArea && deadCard.Contains(card))
     {
         deadCard[deadCard.IndexOf(card)] = null;
     }
 }
Beispiel #29
0
 void UpdateCardAnimation(CardArea area)
 {
     if (area.m_CardAreaName.Contains("PlayerHand"))
     {
         foreach (Card card in area.m_AreaList)
         {
             if (card.m_CardType == Card.CardType.Character)
             {
                 card.animationConfig.SetAnimState(UGUISpriteAnimation.AnimState.RunBack);
             }
         }
     }
     if (area.m_CardAreaName.Contains("EnemyHand"))
     {
         foreach (Card card in area.m_AreaList)
         {
             if (card.m_CardType == Card.CardType.Character)
             {
                 card.animationConfig.SetAnimState(UGUISpriteAnimation.AnimState.RunToward);
             }
         }
     }
     if (area.m_CardAreaName.Contains("PlayerBattle"))
     {
         foreach (Card card in area.m_AreaList)
         {
             if (!card.m_IsBattleDead && card.m_CardType == Card.CardType.Character)
             {
                 card.animationConfig.SetAnimState(UGUISpriteAnimation.AnimState.RunBack);
             }
         }
     }
     if (area.m_CardAreaName.Contains("EnemyBattle"))
     {
         foreach (Card card in area.m_AreaList)
         {
             if (!card.m_IsBattleDead && card.m_CardType == Card.CardType.Character)
             {
                 card.animationConfig.SetAnimState(UGUISpriteAnimation.AnimState.RunToward);
             }
         }
     }
 }
Beispiel #30
0
        public SceneCardBase getSceneCardByThisID(uint thisID, ref EnDZPlayer side, ref CardArea slot)
        {
            SceneCardBase cardBase;

            cardBase = m_sceneDZAreaArr[(int)EnDZPlayer.ePlayerSelf].getSceneCardByThisID(thisID, ref slot);
            if (cardBase != null)
            {
                side = EnDZPlayer.ePlayerSelf;
                return(cardBase);
            }

            cardBase = m_sceneDZAreaArr[(int)EnDZPlayer.ePlayerEnemy].getSceneCardByThisID(thisID, ref slot);
            if (cardBase != null)
            {
                side = EnDZPlayer.ePlayerEnemy;
                return(cardBase);
            }

            return(null);
        }
Beispiel #31
0
        // 设置一些基本信息
        override public void setBaseInfo(EnDZPlayer m_playerSide, CardArea area, CardType cardType)
        {
            ioControl.setCenterPos(m_sceneDZData.m_placeHolderGo.m_cardCenterGOArr[(int)m_playerSide, (int)area].transform.localPosition);
            ioControl.setOutSplitZ(m_sceneDZData.m_placeHolderGo.m_cardCenterGOArr[(int)m_playerSide, (int)area].transform.localPosition.z + 0.65f);
            // 设置初始位置为发牌位置
            m_sceneCardBaseData.m_behaviorControl.moveToDestDirect(m_sceneDZData.m_placeHolderGo.m_cardCenterGOArr[(int)m_playerSide, (int)CardArea.CARDCELLTYPE_NONE].transform.localPosition); // 移动到发牌位置

            // 设置是否可以动画
            if (m_playerSide == EnDZPlayer.ePlayerEnemy)        // 如果是 enemy 的卡牌
            {
                ioControl.disableDrag();
                //if (area == CardArea.CARDCELLTYPE_SKILL || area == CardArea.CARDCELLTYPE_EQUIP)
                //{
                //    trackAniControl.destScale = SceneDZCV.SMALLFACT;
                //}
            }
            // 如果是放在技能或者装备的位置,是不允许拖放的
            else if (area == CardArea.CARDCELLTYPE_SKILL || area == CardArea.CARDCELLTYPE_EQUIP)
            {
                //trackAniControl.destScale = SceneDZCV.SMALLFACT;
                ioControl.disableDrag();
            }

            // 更新边框
            if (EnDZPlayer.ePlayerSelf == m_playerSide)
            {
                if (CardArea.CARDCELLTYPE_HAND == area)
                {
                    if (Ctx.m_instance.m_dataPlayer.m_dzData.bSelfSide())
                    {
                        updateCardOutState(true);
                    }
                    else
                    {
                        updateCardOutState(false);
                    }
                }
            }
        }
Beispiel #32
0
        // 设置一些基本信息
        override public void setBaseInfo(EnDZPlayer m_playerSide, CardArea area, CardType cardType)
        {
            ioControl.setCenterPos(m_sceneDZData.m_placeHolderGo.m_cardCenterGOArr[(int)m_playerSide, (int)area].transform.localPosition);
            ioControl.setOutSplitZ(m_sceneDZData.m_placeHolderGo.m_cardCenterGOArr[(int)m_playerSide, (int)area].transform.localPosition.z + 0.65f);
            // 设置初始位置为发牌位置
            m_sceneCardBaseData.m_behaviorControl.moveToDestDirect(m_sceneDZData.m_placeHolderGo.m_cardCenterGOArr[(int)m_playerSide, (int)CardArea.CARDCELLTYPE_NONE].transform.localPosition); // 移动到发牌位置

            // 设置是否可以动画
            if (m_playerSide == EnDZPlayer.ePlayerEnemy)        // 如果是 enemy 的卡牌
            {
                ioControl.disableDrag();
                //if (area == CardArea.CARDCELLTYPE_SKILL || area == CardArea.CARDCELLTYPE_EQUIP)
                //{
                //    trackAniControl.destScale = SceneDZCV.SMALLFACT;
                //}
            }
            // 如果是放在技能或者装备的位置,是不允许拖放的
            else if (area == CardArea.CARDCELLTYPE_SKILL || area == CardArea.CARDCELLTYPE_EQUIP)
            {
                //trackAniControl.destScale = SceneDZCV.SMALLFACT;
                ioControl.disableDrag();
            }

            // 更新边框
            if (EnDZPlayer.ePlayerSelf == m_playerSide)
            {
                if (CardArea.CARDCELLTYPE_HAND == area)
                {
                    if (Ctx.m_instance.m_dataPlayer.m_dzData.bSelfSide())
                    {
                        updateCardOutState(true);
                    }
                    else
                    {
                        updateCardOutState(false);
                    }
                }
            }
        }
Beispiel #33
0
 void BattleCalculationDead(CardArea area, int currentcolumn)
 {
     for (int i = 0; i < 3; i++)
     {
         BattleCube cube = area.transform.GetChild(currentcolumn + i * 3).GetComponent <BattleCube>();
         if (cube.transform.childCount > 0)
         {
             if (cube.transform.GetChild(0).GetComponent <Card>().m_IsBattleDead)
             {
                 //if (cube.transform.GetChild(0).GetComponent<Card>().m_DeadAnimTime < UGUISpriteAnimation.FRAMEBASE / UGUISpriteAnimation.FPS)
                 //{
                 //  cube.transform.GetChild(0).GetComponent<Card>().m_DeadAnimTime += Time.deltaTime;
                 //}
                 //else
                 //{
                 area.m_AreaList.Remove(cube.transform.GetChild(0).gameObject.GetComponent <Card>());
                 Destroy(cube.transform.GetChild(0).gameObject);
                 //}
             }
         }
     }
 }
Beispiel #34
0
 override public void setBaseInfo(EnDZPlayer m_playerSide, CardArea area, CardType cardType)
 {
     UtilApi.setPos(this.transform(), m_sceneDZData.m_placeHolderGo.m_cardCenterGOArr[(int)m_playerSide, (int)area].transform.localPosition);
 }
Beispiel #35
0
        /// <summary>
        /// ���ָ����������
        /// </summary>
        /// <param name="area">��Ƭ��������</param>
        /// <returns>���ط��н��tag��ʽ��Success</returns>
        public string ClearData(CardArea area)
        {
            if (string.IsNullOrEmpty(this.cardid))
                return "@{״̬}=�޿�����ʶ��Ŀ�,@Success=false";
            if (!this.isCardIC)
                return "@{״̬}=ID��ģʽ����д��,@Success=false";

            int st = this.stateChecking;
            this.reChecking(0);
            string[] valipwd = { "��֤����д����", "��֤����Ĭ��д����" };
            if (CardArea.Park == area)
                valipwd = new string[] { "��֤��д����", "��֤��Ĭ��д����" };

            string msg = "";
            //string msg = this.validatePwd(valipwd[0], valipwd[1]);
            string tagdata = "@�豸��ַ=" + this.addrst;
            //if ("true" == basefun.valtag(msg, "Success"))
            int blockindex = CardArea.Eatery==area ? 20 : 28;
            for (int i = 0; i < 3;i++ )
            {
                tagdata = basefun.setvaltag(tagdata, "{���ַ}", Convert.ToString(blockindex++));
                this.setCommand("��������", "���", tagdata);
                msg = this.execReliable();
            }
            this.reChecking(1);
            return msg;
        }
Beispiel #36
0
        /// <summary>
        /// 清除指定区域数据
        /// </summary>
        /// <param name="area">卡片区域类型</param>
        /// <returns>返回发行结果tag格式:Success</returns>
        public string ClearData(CardArea area)
        {
            if (string.IsNullOrEmpty(this.cardid))
                return "@{状态}=无卡或不能识别的卡,@Success=false";
            if (!this.isCardIC)
                return "@{状态}=ID卡模式不能写入,@Success=false";

            int st = this.stateChecking;
            this.reChecking(0);
            string[] valipwd = { "认证消费写密码", "认证消费默认写密码" };
            if (CardArea.Park == area)
                valipwd = new string[] { "认证大场写密码", "认证大场默认写密码" };

            string msg = "";
            //string msg = this.validatePwd(valipwd[0], valipwd[1]);
            string tagdata = "@设备地址=" + this.addrst;
            //if ("true" == basefun.valtag(msg, "Success"))
            int blockindex = CardArea.Eatery == area ? 20 : 28;
            for (int i = 0; i < 3; i++)
            {
                tagdata = basefun.setvaltag(tagdata, "{块地址}", Convert.ToString(blockindex++));
                this.setCommand("卡务中心", "写数据", tagdata);
                msg = this.execReliable();
            }
            this.reChecking(1);
            return msg;
        }
Beispiel #37
0
        public SceneCardBase getSceneCardByThisID(uint thisID, ref CardArea slot)
        {
            // 出牌列表
            SceneCardBase cardBase;
            cardBase = m_outSceneCardList.getSceneCardByThisID(thisID);
            if (cardBase != null)
            {
                slot = CardArea.CARDCELLTYPE_COMMON;
                return cardBase;
            }

            // 对手区域手牌是不检查的
            if (EnDZPlayer.ePlayerSelf == m_playerSide)
            {
                cardBase = m_inSceneCardList.getSceneCardByThisID(thisID);
                if (cardBase != null)
                {
                    slot = CardArea.CARDCELLTYPE_HAND;
                    return cardBase;
                }
            }

            // 技能区
            if (m_sceneSkillCard != null)
            {
                if (m_sceneSkillCard.sceneCardItem.svrCard.qwThisID == thisID)
                {
                    slot = CardArea.CARDCELLTYPE_SKILL;
                    return m_sceneSkillCard;
                }
            }

            // 装备区
            if (m_sceneEquipCard != null)
            {
                if (m_sceneEquipCard.sceneCardItem.svrCard.qwThisID == thisID)
                {
                    slot = CardArea.CARDCELLTYPE_EQUIP;
                    return m_sceneEquipCard;
                }
            }

            // 检查英雄
            if (m_centerHero != null)
            {
                if (m_centerHero.sceneCardItem.svrCard.qwThisID == thisID)
                {
                    slot = CardArea.CARDCELLTYPE_HERO;
                    return m_centerHero;
                }
            }

            return null;
        }
Beispiel #38
0
        // 给自己添加一张手牌
        public void addOneSelfHandCard(CardArea area)
        {

        }
Beispiel #39
0
        public SceneCardBase getSceneCardByThisID(uint thisID, ref EnDZPlayer side, ref CardArea slot)
        {
            SceneCardBase cardBase;
            cardBase = m_sceneDZAreaArr[(int)EnDZPlayer.ePlayerSelf].getSceneCardByThisID(thisID, ref slot);
            if(cardBase != null)
            {
                side = EnDZPlayer.ePlayerSelf;
                return cardBase;
            }

            cardBase = m_sceneDZAreaArr[(int)EnDZPlayer.ePlayerEnemy].getSceneCardByThisID(thisID, ref slot);
            if (cardBase != null)
            {
                side = EnDZPlayer.ePlayerEnemy;
                return cardBase;
            }

            return null;
        }
Beispiel #40
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);
                }
            }
        }
Beispiel #41
0
        public SceneCardBase createCardById(uint objid, EnDZPlayer m_playerSide, CardArea area, CardType cardType, SceneDZData sceneDZData)
        {
            SceneCardBase ret = null;

            if (SceneDZCV.WHITE_CARDID == objid)       // 白色占位卡牌
            {
                ret = new WhiteCard(sceneDZData);
            }
            else if (SceneDZCV.BLACK_CARD_ID == objid)       // 背面牌
            {
                ret = new BlackCard(sceneDZData);
            }
            else if (CardType.CARDTYPE_ATTEND == cardType)
            {
                if (EnDZPlayer.ePlayerSelf == m_playerSide)
                {
                    ret = new SelfAttendCard(sceneDZData);
                }
                else
                {
                    ret = new EnemyAttendCard(sceneDZData);
                }
            }
            else if (CardType.CARDTYPE_SECRET == cardType)
            {
                ret = new SecretCard(sceneDZData);
            }
            else if (CardType.CARDTYPE_MAGIC == cardType)
            {
                if (EnDZPlayer.ePlayerSelf == m_playerSide)
                {
                    ret = new SelfMagicCard(sceneDZData);
                }
                else
                {
                    ret = new EnemyMagicCard(sceneDZData);
                }
            }
            else if (CardType.CARDTYPE_EQUIP == cardType)
            {
                if (EnDZPlayer.ePlayerSelf == m_playerSide)
                {
                    ret = new SelfEquipCard(sceneDZData);
                }
                else
                {
                    ret = new EnemyEquipCard(sceneDZData);
                }
            }
            else if (CardType.CARDTYPE_HERO == cardType)
            {
                if (EnDZPlayer.ePlayerSelf == m_playerSide)
                {
                    ret = new SelfHeroCard(sceneDZData);
                }
                else
                {
                    ret = new EnemyHeroCard(sceneDZData);
                }
            }
            else if (CardType.CARDTYPE_SKILL == cardType)
            {
                if (EnDZPlayer.ePlayerSelf == m_playerSide)
                {
                    ret = new SelfSkillCard(sceneDZData);
                }
                else
                {
                    ret = new EnemySkillCard(sceneDZData);
                }
            }
            //else if (CardType.CARDTYPE_LUCK_COINS == cardType)
            //{
            //    return new LuckCoinCard(sceneDZData);
            //}

            ret.setIdAndPnt(objid, sceneDZData.m_placeHolderGo.m_centerGO);
            ret.init();
            ret.setBaseInfo(m_playerSide, area, cardType);

            this.addObject(ret);
            if (SceneDZCV.WHITE_CARDID != objid &&
                SceneDZCV.BLACK_CARD_ID != objid)       // 这两个没有 AI 
            {
                Ctx.m_instance.m_aiSystem.aiControllerMgr.addController(ret.aiController);       // 添加到控制器中
            }

            return ret;
        }
Beispiel #42
0
        // 这个主要方便可以从卡牌 ID 直接创建卡牌,因为可能有的时候直接动卡牌 ID 创建卡牌,服务器的数据还没有
        virtual public void setBaseInfo(EnDZPlayer m_playerSide, CardArea area, CardType cardType)
        {

        }
        virtual protected void updateSceneCardPosInternal(CardArea area, bool bUpdateIdx = true)
        {
            int idx = 0;
            SceneCardBase cardItem = null;
            WayPtItem pt = null;
            PosType posType = PosType.eHandDown;
            if (CardArea.CARDCELLTYPE_HAND == area)
            {
                posType = PosType.eHandDown;
            }
            else if (CardArea.CARDCELLTYPE_COMMON == area)
            {
                posType = PosType.eOutDown;
            }

            getCardPos();

            while (idx < m_sceneCardList.Count())
            {
                cardItem = m_sceneCardList[idx];
                if (bUpdateIdx)
                {
                    cardItem.curIndex = (ushort)idx;
                }

                pt = cardItem.trackAniControl.wayPtList.getAndAddPosInfo(posType);
                pt.pos = m_posList[idx];
                cardItem.trackAniControl.moveToDestPos(posType);

                ++idx;
            }
        }