You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.6 KiB

  1. using UnityEngine;
  2. using UnityEngine.Events;
  3. public class GameModeEvents : MonoBehaviour
  4. {
  5. [Header("Reference")]
  6. [SerializeField]
  7. private GameModeReference Reference;
  8. [Header("Events")]
  9. public UnityEvent OnGameStart = new UnityEvent();
  10. public UnityEvent OnInputStart = new UnityEvent();
  11. public UnityEvent OnRoundStart = new UnityEvent();
  12. public UnityEvent OnPlayersMoved = new UnityEvent();
  13. public UnityEvent OnRoundEnd = new UnityEvent();
  14. public UnityEvent OnGameOver = new UnityEvent();
  15. private void OnEnable()
  16. {
  17. Reference.Value.GameStartEvent += GameStart;
  18. Reference.Value.InputStartEvent += (() => OnInputStart.Invoke());
  19. Reference.Value.RoundStartEvent += RoundStart;
  20. Reference.Value.AllPlayersMovedEvent += PlayersMoved;
  21. Reference.Value.RoundEndEvent += RoundEnd;
  22. Reference.Value.OnGameOverEvent += GameOver;
  23. }
  24. private void OnDisable()
  25. {
  26. Reference.Value.GameStartEvent -= GameStart;
  27. Reference.Value.InputStartEvent -= (() => OnInputStart.Invoke());
  28. Reference.Value.RoundStartEvent -= RoundStart;
  29. Reference.Value.AllPlayersMovedEvent -= PlayersMoved;
  30. Reference.Value.RoundEndEvent -= RoundEnd;
  31. Reference.Value.OnGameOverEvent -= GameOver;
  32. }
  33. private void GameStart()
  34. {
  35. OnGameStart.Invoke();
  36. }
  37. private void RoundStart()
  38. {
  39. OnRoundStart.Invoke();
  40. }
  41. private void PlayersMoved()
  42. {
  43. OnPlayersMoved.Invoke();
  44. }
  45. private void RoundEnd()
  46. {
  47. OnRoundEnd.Invoke();
  48. }
  49. private void GameOver()
  50. {
  51. OnGameOver.Invoke();
  52. }
  53. }