PlayerInput_PC.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. using UnityEngine;
  2. namespace HQFPSWeapons
  3. {
  4. /// <summary>
  5. /// Handles the player input, and feeds it to the other components.
  6. /// </summary>
  7. public class PlayerInput_PC : PlayerComponent
  8. {
  9. private bool m_EquipmentCanBeUsed;
  10. private float m_NextTimeUseAutomatically;
  11. private void Update()
  12. {
  13. if (!Player.Pause.Active && Player.ViewLocked.Is(false))
  14. {
  15. // Movement.
  16. Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
  17. Player.MoveInput.Set(moveInput);
  18. // Look.
  19. Player.LookInput.Set(new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y")));
  20. Player.WantsToInteract.Set(Input.GetButton("Interact"));
  21. // Jump.
  22. if (Input.GetButtonDown("Jump"))
  23. Player.Jump.TryStart();
  24. if (Input.GetButtonDown("Drop") && !Player.EquippedItem.Is(null) && !Player.Reload.Active && !Player.Healing.Active)
  25. {
  26. var item = Player.EquippedItem.Get();
  27. Player.Inventory.TryDropItem(item, true);
  28. }
  29. // Run.
  30. bool sprintButtonHeld = Input.GetButton("Run");
  31. bool canStartSprinting = Player.IsGrounded.Get() && Player.MoveInput.Get().y > 0f;
  32. if (!Player.Run.Active && sprintButtonHeld && canStartSprinting)
  33. Player.Run.TryStart();
  34. if (Player.Run.Active && !sprintButtonHeld)
  35. Player.Run.ForceStop();
  36. if (Input.GetButtonDown("Crouch"))
  37. {
  38. if (!Player.Crouch.Active)
  39. Player.Crouch.TryStart();
  40. else
  41. Player.Crouch.TryStop();
  42. }
  43. if (m_NextTimeUseAutomatically < Time.time)
  44. m_EquipmentCanBeUsed = false;
  45. // Change fire mode
  46. if (Input.GetButtonDown("ChangeFireMode"))
  47. Player.ChangeFireMode.Try();
  48. // Use item
  49. if (Input.GetButtonDown("UseEquipment") || m_EquipmentCanBeUsed)
  50. {
  51. bool usedSuccesfully = Player.UseOnce.Try();
  52. //Click Buffer
  53. if (Player.ActiveEquipmentItem.Val != null)
  54. {
  55. if (!usedSuccesfully && Player.ActiveEquipmentItem.Get().CurrentAmmoInfo.Val.CurrentInMagazine > 0 && Player.ActiveEquipmentItem.Get().UseClickBuffer)
  56. {
  57. m_EquipmentCanBeUsed = true;
  58. if (Input.GetButtonDown("UseEquipment"))
  59. m_NextTimeUseAutomatically = Time.time + 0.1f;
  60. }
  61. }
  62. }
  63. else if (Input.GetButton("UseEquipment"))
  64. {
  65. Player.UseContinuously.Try();
  66. }
  67. if (Input.GetButtonDown("ReloadEquipment"))
  68. Player.Reload.TryStart();
  69. // Aim
  70. var aimButtonPressed = Input.GetButton("Aim");
  71. if(!Player.Aim.Active && aimButtonPressed)
  72. Player.Aim.TryStart();
  73. else if(Player.Aim.Active && !aimButtonPressed)
  74. Player.Aim.ForceStop();
  75. //Heal
  76. if (Input.GetButton("Heal") && !aimButtonPressed)
  77. Player.Healing.TryStart();
  78. //Change Arms (Used for testing)
  79. if (Input.GetButtonDown("ChangeArms"))
  80. Player.ChangeArms.Try();
  81. //Suicide (Used for testing)
  82. if (Input.GetKeyDown(KeyCode.K))
  83. {
  84. HealthEventData damage = new HealthEventData(-1000f);
  85. Player.ChangeHealth.Try(damage);
  86. }
  87. }
  88. else
  89. {
  90. // Movement.
  91. Player.MoveInput.Set(Vector2.zero);
  92. // Look.
  93. Player.LookInput.Set(Vector2.zero);
  94. }
  95. var scrollWheelValue = Input.GetAxisRaw("Mouse ScrollWheel");
  96. Player.ScrollValue.Set(scrollWheelValue);
  97. }
  98. }
  99. }