public IEnumerator Attack(ICombatant receiver, WeaponHitSeverity severity) { var attackComplete = false; var onComplete = new Action(() => { attackComplete = true; }); _animator.AttackConnectedSignal.AddOnce(() => { var connection = new WeaponHitConnection(severity, receiver); AttackConnectedSignal.Dispatch(connection); }); _animator.AttackCompleteSignal.AddOnce(onComplete); State = CombatantState.Attacking; while (!attackComplete) { yield return(new WaitForEndOfFrame()); } State = CombatantState.CombatReady; }
private void OnAttackConnected(WeaponHitConnection connection) { var dimensions = Model.Dimensions; var position = dimensions.GetWorldPositionForGridPosition(connection.Combatant.Position); switch (connection.Severity) { case WeaponHitSeverity.Normal: View.ShowHit(position); break; case WeaponHitSeverity.Crit: View.ShowCrit(position); break; case WeaponHitSeverity.Glance: View.ShowGlance(position); break; case WeaponHitSeverity.Miss: View.ShowMiss(); break; } }
private void OnAttackConnected(WeaponHitConnection hitConnection) { AttackConnectedSignal.Dispatch(hitConnection); }