コード例 #1
0
    public void AttackSequence(int attackerIndex, int defenderIndex, MonsterVisual otherMonsterVisual)
    {
        // Delete arrows
        foreach (LineRenderer lr in arrows)
        {
            Destroy(lr);
        }

        MonsterManager attacker         = slots.Children[attackerIndex].GetComponentInChildren <MonsterManager>();
        Vector3        defenderPosition = otherMonsterVisual.slots.Children[defenderIndex].position;
        Vector3        originalPosition = slots.Children[attackerIndex].transform.position;

        if (owner == AreaPosition.Top)
        {
            defenderPosition = new Vector3(defenderPosition.x, defenderPosition.y + 2, defenderPosition.z);
        }
        else
        {
            defenderPosition = new Vector3(defenderPosition.x, defenderPosition.y - 2, defenderPosition.z);
        }

        Sequence s = DOTween.Sequence();

        s.Append(attacker.transform.DOMove(defenderPosition, 0.5f).SetEase(Ease.InQuint));
        s.OnComplete(() => Command.CommandExecutionComplete());
        s.Append(attacker.transform.DOMove(originalPosition, 0.5f));
    }
コード例 #2
0
    public override void OnEndDrag()
    {
        // determine if over a valid target
        GameObject target = DragTarget();

        // turn off user monster highlights
        PlayerArea    area          = GameStateSync.Instance.playerArea;
        MonsterVisual monsterVisual = area.monsterVisual;

        monsterVisual.turnOffAllHighlights();

        if (target != null)
        {
            // turn off hand highlights
            HandVisual handVisual = GameStateSync.Instance.playerArea.handVisual;
            handVisual.turnOffAllHighlights(GameStateSync.Instance.playerArea);

            // target monster index
            MonsterManager monsterManager = target.GetComponent <MonsterManager>();
            AvatarManager  avatarManager  = target.GetComponentInChildren <AvatarManager>();
            int            targetIndex    = monsterManager == null ? 3 : monsterManager.index;

            // find first open skill slot
            Transform openSkillSlot = monsterVisual.FindOpenSlot(targetIndex);

            transform.SetParent(openSkillSlot);
            whereIsCard.SetHandSortingOrder();
            whereIsCard.VisualState = tempState;
            transform.DOMove(openSkillSlot.position, 1f);
            whereIsCard.SendToBack();

            GameStateSync.Instance.playableRequest.playedCardIndexes.Add(savedHandSlot);

            if (GameStateSync.Instance.gameView.phase == GameStateSync.GUTS_PHASE)
            {
                // increment guts
                avatarManager.gutsText.text = (Int32.Parse(avatarManager.gutsText.text) + 1).ToString();
                // make this invisible
                Canvas canvas = GetComponentInChildren <Canvas>();
                canvas.gameObject.SetActive(false);
                BoxCollider collider = GetComponentInChildren <BoxCollider>();
                collider.enabled = false;
            }
            if (GameStateSync.Instance.gameView.phase == GameStateSync.ATTACK_PHASE)
            {
                // add to cards played
                GameStateSync.Instance.attackRequest.user = monsterManager.index;
                GameStateSync.Instance.attackRequest.cardsPlayed.Add(savedHandSlot);
                GameStateSync.Instance.playableRequest.user = monsterManager.index;
                // highlight user to attack
                area.monsterVisual.HighlightMonster(area.highlightColor, monsterManager.index, true);
            }
            if (GameStateSync.Instance.gameView.phase == GameStateSync.DEFEND_PHASE)
            {
                // add to defend request
                DefendTarget defendTarget = new DefendTarget();
                defendTarget.card = savedHandSlot;
                defendTarget.user = monsterManager.index;
                GameStateSync.Instance.defendRequest.cardAndTargets.Add(defendTarget);
            }

            // highlight other playable cards
            StartCoroutine(GameStateSync.Instance.HighlightPlayableCards());
        }
        else
        {
            // Set old sorting order
            whereIsCard.SetHandSortingOrder();
            whereIsCard.VisualState = tempState;
            // Move this card back to its slot position
            HandVisual PlayerHand = GameStateSync.Instance.playerArea.handVisual;
            Vector3    oldCardPos = PlayerHand.slots.Children[savedHandSlot].transform.position;
            transform.DOMove(oldCardPos, 1f);
        }
    }