예제 #1
0
    /// <summary>移除卡牌</summary>
    /// <param name="cdItm"></param>
    public void RemoveCard(FightPanel_CardItem cdItm)
    {
        if (mTeamCards.IndexOf(cdItm) > -1)
        {
            mTeamCards.Remove(cdItm);
        }

        if (mTeamCardsFreeQueque.IndexOf(cdItm) == -1)
        {
            mTeamCardsFreeQueque.Add(cdItm);
        }

        cdItm.gameObject.SetActive(false);
    }
예제 #2
0
    private void OnDrop_ExpItem(GameObject obj, GameObject dragObj)
    {
        if (PVPManager.IsMyTurn || Define.TestMsg)
        {
            FightPanel_CardItem cdItm = UICardDrag.DragObject.GetComponent <FightPanel_CardItem>();
            if (null != cdItm && cdItm.SerData != null && cdItm.SerData.pid > 0)
            {
                FightPanel_CardItem toItm = exp_cardItem[obj.transform];

                if (toItm != cdItm)
                {
                    FightProxy.Instance.SendUseCard(cdItm.SerData.index, UseType.ExpType, toItm.SerData.index);
                }
            }
        }
    }
예제 #3
0
    private void OnDrog_Card(GameObject obj, GameObject go)
    {
        if (!PVPManager.IsMyTurn || Define.TestMsg)
        {
            Debug.Log("Not My Turn");
            return;
        }

        FightPanel_CardItem mouseItm = DragObject.GetComponent <FightPanel_CardItem>();
        FightPanel_CardItem toItm    = obj.GetComponent <FightPanel_CardItem>();

        if (null != mouseItm)
        {
            if (toItm != null && mouseItm.SerData != null && toItm.SerData != null)
            {
                FightProxy.Instance.SendUseCard(mouseItm.SerData.index, UseType.CardType, toItm.SerData.index);
            }
        }
        else
        {
            Debug.Log("No Card SerData!!!");
        }
    }
예제 #4
0
    //拖拽Updata
    private void GameObjectDragAndDrog()
    {
        if (mDoMoveTimer > 0)
        {
            mDoMoveTimer -= Time.deltaTime;
            if (mDoMoveTimer < 0)
            {
                mDoMoveTimer = 0;
            }
        }

        if (Input.GetMouseButtonDown(0) && target == null)
        {
            RaycastHit hitInfo;
            target = ReturnGameObjectDrag(out hitInfo);
            if (target != null)
            {
                mMouseDownTargetPos = target.transform.position;
                isMouseDrag         = true;

                screenPosition = EventCamera.WorldToScreenPoint(target.transform.position);
                offset         = target.transform.position - EventCamera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z));

                //Vector3 pt = target.transform.position.Clone();
                //pt.y += 1.4f;
                //Vector3 screenPt = PVPManager.Instance.AvatarCamera.WorldToScreenPoint(pt);
                //Vector3 worldPt = PVPManager.Instance.FightCamera.ScreenToWorldPoint(screenPt);
                Vector3 worldPt = PVPManager.Instance.FightCamera.ScreenToWorldPoint(Input.mousePosition);
                worldPt.z = target.transform.position.z;
                PVPManager.SetArrowOrgPoint(worldPt);
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            PVPManager.HideArrow();

            RaycastHit hitInfo;

            if (UICardDrag.DragObject != null)
            {
                PureMVC.Patterns.Facade.Instance.SendNotification(NotificationID.Fight_ShowExpPan, false);

                GameObject          totarget = ReturnGameObjectDrag(out hitInfo);
                FightPanel_CardItem cdItm    = UICardDrag.DragObject.GetComponent <FightPanel_CardItem>();

                TD_Card cdCfg      = null;
                bool    haveTarget = false;

                if (cdItm.SerData != null)
                {
                    cdCfg = CardConfig.GetItem(cdItm.SerData.cardId);
                    FightCommonUtil.CheckCardSkillHaveTarget(cdCfg, cdItm.SerData.exp);
                }

                Vector3 pos = Main.CameraUI.ScreenToWorldPoint(Input.mousePosition);
                if (
                    (PVPManager.IsMyTurn || Define.TestMsg) &&
                    pos.y > -0.25f &&
                    !haveTarget)
                {
                    UICardDrag.DragObject = null;
                    FightProxy.Instance.SendUseCard(cdItm.SerData.index, NetProtocal.UseType.CardType, 0);
                }
                else if (null != totarget)
                {
                    CardRole cdRole = PVPManager.Instance.GetCardRoleByTransform(totarget.transform);
                    CardRole mdRole = PVPManager.Instance.GetCardRoleByTransform(target.transform);

                    if (PVPManager.IsMyTurn || Define.TestMsg)
                    {
                        if (null != cdItm.SerData && cdItm.SerData.pid != 0)
                        {
                            if (haveTarget)
                            {
                                FightProxy.Instance.SendUseCard(cdItm.SerData.index, NetProtocal.UseType.MoveType, cdRole.SerData.pos);
                            }
                        }
                        else
                        {
                            Debug.Log("Card_To_Hero No Server Data!!!");
                        }
                    }
                    else
                    {
                    }


                    UICardDrag.DragObject = null;
                }
            }
            else if (Input.GetMouseButtonUp(0) && null != target && mDoMoveTimer == 0)
            {
                GameObject oldtarget = target;
                isMouseDrag  = false;
                mDoMoveTimer = 0.5f;

                GameObject totarget = ReturnGameObjectDrag(out hitInfo);
                CardRole   oldCd    = PVPManager.Instance.GetCardRoleByTransform(oldtarget.transform);

                canDrag = false;
                if (null != totarget && oldtarget != totarget)
                {
                    CardRole toCd = PVPManager.Instance.GetCardRoleByTransform(totarget.transform);

                    if (Define.VSTest)
                    {
                        PVPManager.Instance.ChangeSlotPostion(oldCd, toCd);

                        oldtarget.transform.DOMove(toCd.transform.position, 1f);

                        totarget.transform.DOMove(oldCd.transform.position, 1f).OnComplete(delegate()
                        {
                            canDrag = true;
                        });
                    }
                    else
                    {
                        int moveAdd = toCd.SerData.pos - oldCd.SerData.pos;
                        if (Mathf.Abs(moveAdd) == 1)
                        {
                            FightProxy.Instance.SendMove(oldCd.SerData.index, moveAdd);
                        }
                    }
                }
                else
                {
                    oldtarget.transform.DOMove(oldCd.transform.position, 1f).OnComplete(delegate()
                    {
                        canDrag = true;
                    });
                }
            }

            target = null;
        }

        if (isMouseDrag && target != null)
        {
            Vector3 currentScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
            Vector3 currentScreenPt    = EventCamera.ScreenToWorldPoint(currentScreenSpace);
            Vector3 currentPosition    = currentScreenPt + offset;

            Vector3 oldPosition = target.transform.localPosition;
            if (!AllowXMove)
            {
                currentPosition.x = oldPosition.x;
            }

            if (!AllowYMove)
            {
                currentPosition.y = oldPosition.y;
            }

            if (!AllowZMove)
            {
                currentPosition.z = oldPosition.z;
            }

            //target.transform.localPosition = currentPosition;
        }
    }
예제 #5
0
    private void DoEffect(EffectVO vo)
    {
        int cnt;
        FightPanel_CardItem cdItm;

        if (vo.Type == TargetType.Role)
        {
            if (vo.RoleProp == RolePropType.GameOver)
            {
                string warn = vo.Value == PlayerProxy.Instance.Info.pid ? "我方胜利" : "敌方胜利";
                m_Panel.overLab.text = warn;
                m_Panel.overLab.gameObject.SetActive(true);
            }

            //获取额外卡牌
            if (vo.RoleProp == RolePropType.ExtractCard && vo.CardItem != null)
            {
                if (vo.IsMe || Define.VSTest)
                {
                    FightPanel_CardItem cdItm0 = GetCardItem(vo.IsMe);
                    if (cdItm0 != null)
                    {
                        AddCard(cdItm0);

                        cdItm0.SerData = vo.CardItem;

                        Vector3 pos = cdItm0.transform.position.Clone();
                        pos.x = 1.3f;
                        cdItm0.transform.position = pos;

                        if (Define.NoAni)
                        {
                            cdItm0.transform.position = mTeamAInitPosition[cdItm0.NoShowIndex];
                            PVPManager.Instance.On_DoMoveNextEffect(true);
                        }
                        else
                        {
                            cdItm0.transform.DOMove(mTeamAInitPosition[cdItm0.NoShowIndex], 0.5f).OnComplete(() =>
                            {
                                PVPManager.Instance.On_DoMoveNextEffect(true);
                            });
                        }
                    }
                }
                else
                {
                    FightPanel_CardItem cdItm0 = GetCardItem(vo.IsMe);
                    if (cdItm0 != null)
                    {
                        cdItm0.SerData = vo.CardItem;
                        cdItm0.gameObject.SetActive(true);
                        cdItm0.transform.position = mTeamBInitPosition[cdItm0.NoShowIndex];
                    }

                    UpdateCardBPostion();
                    PVPManager.Instance.On_DoMoveNextEffect(true);
                }
            }
            else if (vo.IsMe && vo.RoleProp == RolePropType.CreateCard)
            {
                cdItm = mTeamCardsFreeQueque[0];

                AddCard(cdItm);

                Vector3 pos = cdItm.transform.position.Clone();
                pos.x = 1.2f;
                cdItm.transform.position = pos;

                UpdateCardAPostion();
                PVPManager.Instance.On_DoNextEffect(true);
            }
            else if (!vo.IsMe && vo.RoleProp == RolePropType.CreateCard)
            {
                cdItm = GetCardItem(vo.IsMe);

                if (cdItm != null)
                {
                    cdItm.SerData = vo.CardItem;
                    cdItm.gameObject.SetActive(true);

                    cdItm.transform.position = mTeamBInitPosition[cdItm.NoShowIndex];
                    UpdateCardBPostion();
                    PVPManager.Instance.On_DoNextEffect(true);
                }
            }
            else if (vo.IsMe && vo.RoleProp == RolePropType.RemoveCard)
            {
                cnt   = mTeamCards.Count;
                cdItm = GetCardItem(vo.IsMe, vo.Value);
                Debug.LogError("Remove MyCard:" + vo.Value);

                if (null != cdItm)
                {
                    RemoveCard(cdItm);

                    UpdateCardAPostion();
                    PVPManager.Instance.On_DoNextEffect(true);
                }
            }
            else if (!vo.IsMe && vo.RoleProp == RolePropType.RemoveCard)
            {
                cnt   = mTeamCards.Count;
                cdItm = GetCardItem(vo.IsMe, vo.Value);

                if (null != cdItm)
                {
                    cdItm.gameObject.SetActive(false);

                    UpdateCardBPostion();
                    PVPManager.Instance.On_DoNextEffect(true);
                }
            }
            else
            {
                PVPManager.Instance.On_DoNextEffect(true);
            }
        }
        else if (vo.Type == TargetType.Card)
        {
            if (vo.IsMe)
            {
                int ct = 0;
                ct = mTeamCards.Count;
                FightPanel_CardItem cdItm0 = GetCardItem(vo.IsMe, vo.Target.Target);

                if (null != cdItm0)
                {
                    if (vo.CardProp == CardPropType.Exp)
                    {
                        cdItm0.SerData.exp = vo.Value;

                        AddCard(cdItm0);

                        cdItm0.UpdateDisplay();

                        UpdateCardAPostion();
                        PVPManager.Instance.On_DoNextEffect(true);
                    }
                }
            }
            else
            {
                int ct = 0;
                ct = mTeamBCards.Count;

                FightPanel_CardItem cdItm1 = GetCardItem(vo.IsMe, vo.Target.Target);

                if (null != cdItm1)
                {
                    if (vo.CardProp == CardPropType.Exp)
                    {
                        cdItm1.SerData.exp = vo.Value;
                        cdItm1.gameObject.SetActive(true);
                        cdItm1.UpdateDisplay();

                        UpdateCardBPostion();
                        PVPManager.Instance.On_DoNextEffect(true);
                    }
                }
            }
        }
    }
예제 #6
0
    protected override void OnShow(INotification notification)
    {
        Instance = this;
        m_Panel.overLab.gameObject.SetActive(false);
        m_Panel.panAddPower.gameObject.SetActive(false);

        UIEventListener.Get(m_Panel.backBtn.gameObject).onClick = OnClick_BackBtn;

        List <Transform> exps = new List <Transform> {
            m_Panel.addExpItem0,
            m_Panel.addExpItem1,
            m_Panel.addExpItem2,
            m_Panel.addExpItem3,
            m_Panel.addExpItem4,
            m_Panel.addExpItem5
        };

        int len = exps.Count;

        for (int n = 0; n < len; n++)
        {
            UIEventListener.Get(exps[n].gameObject).onDrop  = OnDrop_ExpItem;
            UIEventListener.Get(exps[n].gameObject).onHover = OnHover_ExpItem;
        }

        List <Transform> cards = new List <Transform> {
            m_Panel.Card0,
            m_Panel.Card1,
            m_Panel.Card2,
            m_Panel.Card3,
            m_Panel.Card4,
            m_Panel.Card5,
            m_Panel.CardOp0,
            m_Panel.CardOp1,
            m_Panel.CardOp2,
            m_Panel.CardOp3,
            m_Panel.CardOp4,
            m_Panel.CardOp5
        };

        int cnt = cards.Count;

        bool haveData = null != FightProxy.Instance.RoomInfo;

        int  fLen = 0;
        int  sLen = 0;
        bool isMe = true;
        List <FightCardMsg> teamACardMsg = null;
        List <FightCardMsg> teamBCardMsg = null;

        mExp         = new List <Transform>();
        exp_cardItem = new Dictionary <Transform, FightPanel_CardItem>();

        if (haveData)
        {
            isMe = FightProxy.Instance.RoomInfo.frole.pid == PlayerProxy.Instance.Info.pid;

            m_Panel.mynameLab.text = FightProxy.Instance.RoomInfo.frole.name;
            m_Panel.opnameLab.text = FightProxy.Instance.RoomInfo.srole.name;

            if (isMe)
            {
                teamACardMsg = FightProxy.Instance.RoomInfo.frole.cards.card;
                teamBCardMsg = FightProxy.Instance.RoomInfo.srole.cards.card;
            }
            else
            {
                teamACardMsg = FightProxy.Instance.RoomInfo.srole.cards.card;
                teamBCardMsg = FightProxy.Instance.RoomInfo.frole.cards.card;
            }

            fLen = teamACardMsg.Count;
            sLen = teamBCardMsg.Count;
        }

        mTeamCards  = new List <FightPanel_CardItem>();
        mTeamBCards = new List <FightPanel_CardItem>();

        mInitTeamCards  = new List <FightPanel_CardItem>();
        mInitTeamBCards = new List <FightPanel_CardItem>();

        mTeamCardsFreeQueque = new List <FightPanel_CardItem>();
        mTeamAInitPosition   = new List <Vector3>();
        mTeamBInitPosition   = new List <Vector3>();

        for (int i = 0; i < cnt; i++)
        {
            FightPanel_CardItem cardItem = ScriptHelper.BindField(cards[i], "FightPanel_CardItem") as FightPanel_CardItem;
            int index = i % 6;

            if (Define.VSTest)
            {
                FightCardMsg tmsg = new FightCardMsg();
                tmsg.index       = index;
                cardItem.SerData = tmsg;
            }

            if (i < 6)
            {
                if (haveData && index < fLen)
                {
                    mTeamCards.Add(cardItem);
                }

                if (!haveData)
                {
                    mTeamCards.Add(cardItem);
                }

                mInitTeamCards.Add(cardItem);
                mTeamAInitPosition.Add(cardItem.transform.position);

                cardItem.ExpItem = exps[i].transform;
                mExp.Add(exps[i].transform);
                exp_cardItem[exps[i].transform] = cardItem;

                if (haveData && index >= fLen)
                {
                    exps[i].gameObject.SetActive(false);
                }
            }

            if (index < fLen && i < 6)
            {
                if (haveData)
                {
                    cardItem.SerData = teamACardMsg[i];
                }
            }
            else if (index >= fLen && i < 6)
            {
                if (haveData)
                {
                    mTeamCardsFreeQueque.Add(cardItem);
                }
            }
            else if (i >= 6)
            {
                UICardDrag dragItm = cardItem.GetComponent <UICardDrag>();
                dragItm.IsCustomDrag  = false;
                dragItm.CanClickTween = false;

                mTeamBInitPosition.Add(cardItem.transform.position);
                mInitTeamBCards.Add(cardItem);

                if (haveData && index < sLen)
                {
                    mTeamBCards.Add(cardItem);
                    cardItem.SerData = teamBCardMsg[index];
                }

                if (!haveData)
                {
                    mTeamBCards.Add(cardItem);
                }
            }

            if (haveData)
            {
                cardItem.UpdateDisplay();
            }
        }

        AddExpPan_InitPosition = m_Panel.panAddPower.position;
        OpPan_InitPosition     = m_Panel.panOpCard.position;

        if (Define.VSTest)
        {
            m_Panel.myTurnWarnPan.gameObject.SetActive(false);
            m_Panel.opTurnWarnPan.gameObject.SetActive(false);
        }
        else
        {
            m_Panel.myTurnWarnPan.gameObject.SetActive(InitIsMyAtk == -1);
            m_Panel.opTurnWarnPan.gameObject.SetActive(InitIsMyAtk == 1);

            mCountTimer = 90;
            string warstr = InitIsMyAtk == -1 ? "FightMyTurn" : "FightOpTurn";
            m_Panel.turnLab.text  = TextManager.GetUIString(warstr);
            m_Panel.countLab.text = mCountTimer.ToString();

            m_Panel.btnTurn.gameObject.SetActive(InitIsMyAtk == -1);

            if (InitIsMyAtk == -1)
            {
                Tween_MyTrunWarn();
            }
            else
            {
                Tween_OpTrunWarn();
            }
        }

        UpdateArcane();

        if (null != mOpenEffectList)
        {
            int eftLen = mOpenEffectList.Count;
            for (int ei = 0; ei < eftLen; ei++)
            {
                DoEffect(mOpenEffectList[ei]);
            }
        }

        TimerManager.AddTimerRepeat(mTimer_CountDown, 1f, OnTimer_CountDown);
    }