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.

64 lines
1.7 KiB

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