IEnumerator ShowAttackProcess() { var move = battle.GetWave().move; var combatant = battle.GetWave().Enemys[0]; moveCallout.text = move.name; //battleCrySource.clip = battle.combatants[0].CurrentPokemon.GetBattleCry(); //battleCrySource.Play(); CombatantView view = GetView(combatant); RectTransform avatar = view.avatarImage.rectTransform; Tweener tweener = avatar.ScaleTo(new Vector3(1.5f, 1.5f, 1.5f), 0.25f, EasingEquations.EaseOutCubic); while (tweener != null) { yield return(null); } tweener = avatar.ScaleTo(Vector3.one, 0.5f, EasingEquations.EaseOutBounce); while (tweener != null) { yield return(null); } yield return(new WaitForSeconds(0.5f)); moveCallout.text = ""; }
protected void Awake() { View = GetComponent <CombatantView>(); Animator = GetComponent <tk2dSpriteAnimator>(); _sprite = GetComponent <tk2dSprite>(); RunningAnimationClips[MathUtils.CardinalDirection.E] = FindClip("run east"); RunningAnimationClips[MathUtils.CardinalDirection.W] = FindClip("run east"); RunningAnimationClips[MathUtils.CardinalDirection.N] = FindClip("run north"); RunningAnimationClips[MathUtils.CardinalDirection.S] = FindClip("run south"); CombatAnimationClips[MathUtils.CardinalDirection.N] = FindClip("combat north"); CombatAnimationClips[MathUtils.CardinalDirection.S] = FindClip("combat south"); CombatAnimationClips[MathUtils.CardinalDirection.E] = FindClip("combat east"); CombatAnimationClips[MathUtils.CardinalDirection.W] = FindClip("combat east"); AttackAnimationClips[MathUtils.CardinalDirection.N] = FindClip("attack north"); AttackAnimationClips[MathUtils.CardinalDirection.S] = FindClip("attack south"); AttackAnimationClips[MathUtils.CardinalDirection.E] = FindClip("attack east"); AttackAnimationClips[MathUtils.CardinalDirection.W] = FindClip("attack east"); DodgeAnimationClips[MathUtils.CardinalDirection.N] = FindClip("dodge north"); DodgeAnimationClips[MathUtils.CardinalDirection.E] = FindClip("dodge east"); DodgeAnimationClips[MathUtils.CardinalDirection.W] = FindClip("dodge east"); DodgeAnimationClips[MathUtils.CardinalDirection.S] = FindClip("dodge south"); _idleClip = FindClip("idle"); Animator.AnimationEventTriggered = HandleHit; }
void Update() { _combatantView = AffectedObject.GetComponent <CombatantView>(); var start = _mapView.GetDimensions().GetGridPositionForWorldPosition(AffectedObject.transform.position); var distance = MathUtils.ManhattanDistance(start, Destination); var secondsPerSquare = _combatantView.SecondsPerSquare; Duration = distance * secondsPerSquare; }
public IEnumerator Animate(FightPhase phase, CombatantView initiator, CombatantView receiver, MapDimensions dimensions) { if (phase.Response == DefenderResponse.Dodge) { StartCoroutine(receiver.Dodge()); } var severity = phase.Effects.Severity; if (_specialSkills.Contains(phase.Skill)) { yield return(StartCoroutine(initiator.SpecialAttack(phase, dimensions, receiver, severity))); } else { yield return(StartCoroutine(initiator.Attack(phase.Receiver, severity))); } if (phase.ReceverDies) { receiver.Die(); } }
public override IEnumerator SpecialAttack(FightPhase phase, MapDimensions dimensions, CombatantView receiverView, WeaponHitSeverity severity) { var receiver = phase.Receiver; var shoveEffects = phase.Effects.ReceiverEffects.OfType <Shove>().ToList(); if (shoveEffects.Any()) { Action <WeaponHitConnection> hitConnectedCallback = null; hitConnectedCallback = hit => { var destination = shoveEffects.First().GetDestination(receiver); var worldDestination = dimensions.GetWorldPositionForGridPosition(destination); var theirTransform = receiverView.transform; theirTransform .DOMove(worldDestination, 0.3f) .SetEase(Ease.OutCubic) .Play(); AttackConnectedSignal.RemoveListener(hitConnectedCallback); }; AttackConnectedSignal.AddListener(hitConnectedCallback); } yield return(StartCoroutine(Attack(receiver, severity))); }
public override IEnumerator SpecialAttack(FightPhase phase, MapDimensions dimensions, CombatantView receiverView, WeaponHitSeverity severity) { var receiver = phase.Receiver; var didAdvance = phase.Effects.ReceiverEffects.OfType <Advance>().Any(); if (!didAdvance) { yield return(StartCoroutine(Attack(receiver, severity))); yield break; } var attacker = phase.Initiator; var distance = MathUtils.ManhattanDistance(attacker.Position, receiver.Position); var windupClip = distance > 1 ? _farAdvanceAnimationClips[Facing] : _windupAnimationClips[Facing]; var advanceClip = _advanceAnimationClips[Facing]; _combatantAnimator.enabled = false; yield return(StartCoroutine(PlayClip(windupClip))); var advanceClipDuration = ((1000 / advanceClip.fps) * advanceClip.frames.Length / 1000); var destination = receiverView.transform.position; transform .DOMove(destination, advanceClipDuration) .SetEase(Ease.OutCubic) .Play(); yield return(StartCoroutine(PlayClip(advanceClip))); _combatantAnimator.enabled = true; }
void Awake() { _view = GetComponent <CombatantView>(); }