BehaviorController.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  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. blackboard.SetWeaponActive(true);
  31. break;
  32. case Result.Failure:
  33. break;
  34. }
  35. break;
  36. case Behaviors.ChaseBehavior:
  37. switch (result)
  38. {
  39. case Result.Success:
  40. break;
  41. case Result.Failure:
  42. currentBehavior = Behaviors.RechargeBehavior;
  43. blackboard.SetWeaponActive(false);
  44. break;
  45. }
  46. break;
  47. }
  48. }
  49. }
  50. }
  51. }