private void DoActions(FFS_StateController controller) { for (int i = 0; i < actions.Length; i++) { actions[i].Act(controller); } }
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; } }
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); } } }
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); } }
public abstract bool Decide(FFS_StateController controller);
public void UpdateState(FFS_StateController controller) { DoActions(controller); CheckTransitions(controller); }
public abstract void Act(FFS_StateController controller);
public override void Act(FFS_StateController controller) { Patrol(controller); }