Example #1
0
 private void DoActions(FFS_StateController controller)
 {
     for (int i = 0; i < actions.Length; i++)
     {
         actions[i].Act(controller);
     }
 }
Example #2
0
    private void Patrol(FFS_StateController controller)
    {
        float step = controller.enemyStats.speed.GetValue() * Time.deltaTime;
        controller.transformComponent.position = Vector2.MoveTowards(controller.transformComponent.position, controller.waypointList[controller.nextWaypoint].position, step);

        float distanceToPoint = Vector2.Distance(controller.transformComponent.position, controller.waypointList[controller.nextWaypoint].position);
        if(distanceToPoint <= step)
        {
            controller.nextWaypoint = (controller.nextWaypoint + 1) % controller.waypointList.Count;
        }
    }
Example #3
0
    private void CheckTransitions(FFS_StateController controller)
    {
        for (int i = 0; i < transitions.Length; i++)
        {
            bool decisionSucceded = transitions[i].decision.Decide(controller);

            if (decisionSucceded)
            {
                controller.TransitionToState(transitions[i].trueState);
            }
            else
            {
                controller.TransitionToState(transitions[i].falseState);
            }
        }
    }
Example #4
0
    public override bool Decide(FFS_StateController controller)
    {
        int currentHp = controller.enemyStats.currentHealth;

        if (isPercent)
        {
            currentHp = Mathf.RoundToInt((currentHp / controller.enemyStats.maxHealth) * 100);
        }

        switch (requirement)
        {
        case FFS_HPRequirement.Lower:
            if (currentHp <= hpRequired)
            {
                return(true);
            }
            else
            {
                return(false);
            }

        case FFS_HPRequirement.Equal:
            if (currentHp == hpRequired)
            {
                return(true);
            }
            else
            {
                return(false);
            }

        case FFS_HPRequirement.Higher:
            if (currentHp >= hpRequired)
            {
                return(true);
            }
            else
            {
                return(false);
            }

        default:
            return(false);
        }
    }
Example #5
0
 public abstract bool Decide(FFS_StateController controller);
Example #6
0
 public void UpdateState(FFS_StateController controller)
 {
     DoActions(controller);
     CheckTransitions(controller);
 }
Example #7
0
 public abstract void Act(FFS_StateController controller);
Example #8
0
 public override void Act(FFS_StateController controller)
 {
     Patrol(controller);
 }