BehaviorController.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. namespace EnemyAI
  4. {
  5. public class BehaviorController
  6. {
  7. public Blackboard blackboard;
  8. internal enum Behaviors { RechargeBehavior, ChaseBehavior }
  9. private Behaviors currentBehavior;
  10. Dictionary<Behaviors, Behavior> allBehaviors = new Dictionary<Behaviors, Behavior>();
  11. public BehaviorController()
  12. {
  13. blackboard = new Blackboard();
  14. allBehaviors.Add(Behaviors.RechargeBehavior, new RechargeBehavior());
  15. allBehaviors.Add(Behaviors.ChaseBehavior, new ChaseBehavior());
  16. currentBehavior = Behaviors.RechargeBehavior;
  17. }
  18. public void Update()
  19. {
  20. EnemyAI.Result result = allBehaviors[currentBehavior].Run(ref blackboard);
  21. if (result != Result.Running)
  22. {
  23. switch (currentBehavior)
  24. {
  25. case Behaviors.RechargeBehavior:
  26. switch (result)
  27. {
  28. case Result.Success:
  29. currentBehavior = Behaviors.ChaseBehavior;
  30. break;
  31. case Result.Failure:
  32. break;
  33. }
  34. break;
  35. case Behaviors.ChaseBehavior:
  36. switch (result)
  37. {
  38. case Result.Success:
  39. break;
  40. case Result.Failure:
  41. currentBehavior = Behaviors.RechargeBehavior;
  42. break;
  43. }
  44. break;
  45. }
  46. }
  47. }
  48. }
  49. }