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)); }
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); } }