Example #1
0
 public PursuingCombatState(EntityCombatController context) : base(context)
 {
     StateContext.ReactionToIncomingAttack  += OnReactionToIncomingAttack;
     StateContext.CurrentTargetWithinRange  += OnCurrentTargetWithinRange;
     StateContext.CurrentTargetOutsideRange += OnCurrentTargetOutsideRange;
     StateContext.CurrentTargetUnavailable  += OnCurrentTargetUnavailable;
 }
Example #2
0
        private void RegisterEnemy(EntityCombatController enemy)
        {
            enemiesWithinSight.Add(enemy);
            EnemySpottedEvent?.Invoke(enemy);

            enabled = true;
        }
Example #3
0
        public EntityCombatController GetNearestEnemy()
        {
            ISet <EntityCombatController> enemiesToChooseFrom = engagedEnemies.Count > 0 ? engagedEnemies : enemiesWithinSight;
            EntityCombatController        chosenEnemy         = (from enemy in enemiesToChooseFrom
                                                                 orderby(enemy.transform.position - transform.position).sqrMagnitude descending
                                                                 select enemy).FirstOrDefault();

            return(chosenEnemy);
        }
Example #4
0
        private void UnregisterEnemy(EntityCombatController enemy)
        {
            enemiesWithinSight.Remove(enemy);
            engagedEnemies.Remove(enemy);
            EnemySightLostEvent?.Invoke(enemy);

            if (!AreEnemiesInVicinity)
            {
                enabled = false;
            }
        }
Example #5
0
        private bool CheckIfEnemy(GameObject checkedObject, out EntityCombatController combatController)
        {
            var otherFaction = checkedObject.GetComponent <IFaction>();

            combatController = checkedObject.GetComponent <EntityController>().Combat;

            if (otherFaction != null && faction.AttitudeTowards(otherFaction) == RelationAttitude.Enemy)
            {
                return(true);
            }

            return(false);
        }
        public AttackAction SelectAttack(EntityCombatController target, IEnumerable <AttackAction> availableAttacks)
        {
            var performedAttack = Utility.SelectRandomlyFromEnumerable(availableAttacks);

            if (performedAttack != null && Utility.SelectRandomlyFromEnumerable(target.Body.BodyElements, out var bodypartName))
            {
                var enemyBodyparts = target.Body.GetBodypart(bodypartName.Value);
                performedAttack.Target       = Utility.SelectRandomlyFromEnumerable(enemyBodyparts);
                performedAttack.SourceEntity = combatController;
            }

            return(performedAttack);
        }
Example #7
0
 public static AttackingCombatState Creator(EntityCombatController context)
 {
     return(new AttackingCombatState(context));
 }
Example #8
0
 public AttackingCombatState(EntityCombatController context) : base(context)
 {
 }
 public SimpleCombatStrategy(EntityCombatController combatController)
 {
     this.combatController = combatController;
 }
Example #10
0
 public static PursuingCombatState Creator(EntityCombatController context)
 {
     return(new PursuingCombatState(context));
 }
Example #11
0
 public static TargetingCombatState Creator(EntityCombatController context)
 {
     return(new TargetingCombatState(context));
 }
Example #12
0
 public TargetingCombatState(EntityCombatController context) : base(context)
 {
     StateContext.ReactionToIncomingAttack += OnReactionToIncomingAttack;
     StateContext.CurrentTargetUnavailable += OnCurrentTargetUnavailable;
 }
 public static DefendingCombatState Creator(EntityCombatController context)
 {
     return(new DefendingCombatState(context));
 }
 public DefendingCombatState(EntityCombatController context) : base(context)
 {
 }