コード例 #1
0
        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;
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
 private void OnAttackConnected(WeaponHitConnection hitConnection)
 {
     AttackConnectedSignal.Dispatch(hitConnection);
 }