Global Game Jam 2022
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.

152 lines
3.6 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.InputSystem;
  5. using Variables;
  6. using NaughtyAttributes;
  7. public class CharacterInputController : MonoBehaviour
  8. {
  9. [SerializeField, Header("References")]
  10. private CharacterController2D m_characterController;
  11. [SerializeField]
  12. private Reference<bool> m_playerInput;
  13. [SerializeField]
  14. private Reference<bool> m_noInputAllowed;
  15. [SerializeField]
  16. private Reference<bool> m_isPlayerDead;
  17. [SerializeField]
  18. private Reference<bool> m_isVictory;
  19. [SerializeField]
  20. private Animator m_animator;
  21. [SerializeField]
  22. private AudioClip m_DeathSound;
  23. [SerializeField]
  24. private AudioClip m_VictoryClip;
  25. [SerializeField]
  26. private AudioClip m_JumpSound;
  27. [SerializeField]
  28. private AudioClip m_LandSound;
  29. [SerializeField]
  30. private AudioClip m_SpikeSound;
  31. [SerializeField]
  32. private AudioClip m_PoisonSound;
  33. [SerializeField]
  34. private AudioClip m_MooseSound;
  35. [SerializeField, BoxGroup("Settings")]
  36. private float m_speed = 2.0f;
  37. [ShowNonSerializedField]
  38. private Vector2 m_movement;
  39. [ShowNonSerializedField]
  40. private bool m_jump;
  41. private void OnEnable()
  42. {
  43. m_isPlayerDead.OnValueChanged += OnDeath;
  44. m_isVictory.OnValueChanged += OnVictory;
  45. }
  46. private void OnDisable()
  47. {
  48. m_isPlayerDead.OnValueChanged -= OnDeath;
  49. m_isVictory.OnValueChanged -= OnVictory;
  50. }
  51. public void OnMove(InputAction.CallbackContext context)
  52. {
  53. m_movement = context.ReadValue<Vector2>();
  54. }
  55. public void OnJump(InputAction.CallbackContext context)
  56. {
  57. m_jump = context.ReadValueAsButton();
  58. }
  59. private void Update()
  60. {
  61. if (!m_noInputAllowed)
  62. {
  63. m_characterController.Move(m_movement.x * m_speed, false, m_jump);
  64. m_playerInput.Value = m_movement.magnitude != 0 || m_jump;
  65. }
  66. else
  67. {
  68. m_characterController.Move(0, false, false);
  69. m_playerInput.Value = false;
  70. }
  71. m_animator.SetBool("isMoving", m_playerInput);
  72. }
  73. public void OnLandHappened()
  74. {
  75. m_animator.SetTrigger("Land");
  76. AudioSource.PlayClipAtPoint(m_LandSound, transform.position);
  77. }
  78. public void OnJumpHappened()
  79. {
  80. m_animator.SetTrigger("Land");
  81. AudioSource.PlayClipAtPoint(m_JumpSound, transform.position);
  82. }
  83. public void OnDeath(bool value)
  84. {
  85. if (value)
  86. {
  87. m_animator.SetTrigger("Death");
  88. AudioSource.PlayClipAtPoint(m_DeathSound, transform.position);
  89. }
  90. else
  91. m_animator.SetTrigger("Respawn");
  92. }
  93. public void OnVictory(bool value)
  94. {
  95. if (value)
  96. {
  97. m_animator.SetTrigger("Victory");
  98. AudioSource.PlayClipAtPoint(m_VictoryClip, transform.position);
  99. }
  100. }
  101. private void OnTriggerEnter2D(Collider2D collision)
  102. {
  103. Debug.Log($"Collision with {collision.gameObject.name}");
  104. if (collision.CompareTag("Spikes"))
  105. {
  106. AudioSource.PlayClipAtPoint(m_SpikeSound, transform.position);
  107. }
  108. if (collision.CompareTag("Poison"))
  109. {
  110. AudioSource.PlayClipAtPoint(m_PoisonSound, transform.position);
  111. }
  112. if (collision.CompareTag("Moose"))
  113. {
  114. AudioSource.PlayClipAtPoint(m_MooseSound, transform.position);
  115. }
  116. }
  117. }