Beispiel #1
0
 /// <summary>
 /// Used to add actions to queue. The method checks for duplicate actions and prevents them from being put to queue.
 /// </summary>
 private void AddActionToQueue(Action action)
 {
     if (!actionQueue.Contains(action))
         actionQueue.Add(action);
 }
Beispiel #2
0
        private void InitDefaultCombat()
        {
            defaultAction = new Action(Constants.ActionType.Default);
            defaultAction.AddCondition(new Condition(Constants.ConditionType.DistanceToPlayerGreaterThan, subject.Vision));
            preDeterminedActions.Add(defaultAction);

            chase = new Action(Constants.ActionType.Chase);
            chase.AddCondition(new Condition(Constants.ConditionType.DistanceToPlayerLowerThan, subject.Vision));
            chase.AddCondition(new Condition(Constants.ConditionType.DistanceToPlayerGreaterThan, subject.AttackRange));

            preDeterminedActions.Add(chase);

            stop = new Action(Constants.ActionType.Stop);
            stop.AddCondition(new Condition(Constants.ConditionType.DistanceToPlayerLowerThan, subject.AttackRange));
            stop.AddCondition(new Condition(Constants.ConditionType.VelocityOtherThan, 0f));

            preDeterminedActions.Add(stop);

            flee = new Action(Constants.ActionType.Flee, true);
            flee.AddCondition(new Condition(Constants.ConditionType.HealthLowerThan, subject.maxHealth / 4));
            flee.AddCondition(new Condition(Constants.ConditionType.DistanceToPlayerLowerThan, subject.Vision));
            flee.AddCondition(new Condition(Constants.ConditionType.Blocked, false));

            //preDeterminedActions.Add(flee);

            /*cower = new Action(Constants.ActionType.Stop, true);
            cower.AddCondition(new Condition(Constants.ConditionType.HealthLowerThan, subject.maxHealth / 4));
            cower.AddCondition(new Condition(Constants.ConditionType.DistanceToPlayerGreaterThan, subject.Vision));

            preDeterminedActions.Add(cower);*/
        }
Beispiel #3
0
        private void InitWormLatching()
        {
            latch = new Action(Constants.ActionType.Latch, true);
            latch.AddCondition(new Condition(Constants.ConditionType.CollidesWithPlayer, true));

            preDeterminedActions.Add(latch);
        }
Beispiel #4
0
        private void InitAttackAndFlee()
        {
            defaultAction = new Action(Constants.ActionType.Default);
            defaultAction.AddCondition(new Condition(Constants.ConditionType.DistanceToPlayerGreaterThan, subject.Vision));

            preDeterminedActions.Add(defaultAction);

            flee = new Action(Constants.ActionType.Default);
            flee.AddCondition(new Condition(Constants.ConditionType.AttackReady, false));

            preDeterminedActions.Add(flee);

            chase = new Action(Constants.ActionType.Chase);
            chase.AddCondition(new Condition(Constants.ConditionType.DistanceToPlayerLowerThan, subject.Vision));
            chase.AddCondition(new Condition(Constants.ConditionType.DistanceToPlayerGreaterThan, subject.AttackRange));
            chase.AddCondition(new Condition(Constants.ConditionType.AttackReady, true));

            preDeterminedActions.Add(chase);

            attack = new Action(Constants.ActionType.Attack);
            attack.AddCondition(new Condition(Constants.ConditionType.DistanceToPlayerLowerThan, subject.AttackRange));
            attack.AddCondition(new Condition(Constants.ConditionType.AttackReady, true));

            preDeterminedActions.Add(attack);
        }