using System; using UnityEngine; public class PlayerController : Character { [SerializeField] private Sprite _regularSprite; [SerializeField] private Sprite _noHammerSprite; private GameObject _hammer; private bool _isHoldingHammer = true; public event EventHandler OnPlayerTakeItem; private InputManager _inputManager; private PlayerState _playerState; private HammerThrower _hammerThrower; private void Awake() { _inputManager = GetComponent(); _playerState = GetComponent(); _hammerThrower = GetComponent(); _inputManager.OnFire += OnFireButtonPressed; } private void OnEnable() { _inputManager.OnEnable(); } private void OnDisable() { _inputManager.OnDisable(); } private void Update() { if (_hammer == null && !_isHoldingHammer) { _spriteRenderer.sprite = _regularSprite; _isHoldingHammer = true; } Vector2 move = _inputManager.Movement; MoveTo(move.x, isAllowVertical ? move.y : 0); _hammerThrower.SetFacingDirection(_facingRight); } private void OnFireButtonPressed() { if (_hammer == null) { _animator.SetTrigger("Body_ThrowHammer"); } } // Animation event public void ThrowHammerObject() { _hammerThrower.ThrowHammer(); UpdatePlayerSprite(); } private void UpdatePlayerSprite() { _spriteRenderer.sprite = _hammerThrower.HasHammer ? _regularSprite : _noHammerSprite; } protected override void SetWalkingAnimation(bool isWalking) { _bonesBack.SetActive(false); _bonesSide.SetActive(true); _animator.SetBool("Legs_Walk", isWalking); _animator.SetBool("Body_Walk", isWalking); } protected override void SetClimbingAnimation(bool isClimbing) { if (isClimbing) { _bonesBack.SetActive(true); _bonesSide.SetActive(false); } _animator.SetBool("Climb", isClimbing); } protected void OnDeath() { _playerState.Lives--; if (_playerState.Lives == 0) { Debug.Log("Game over"); } } }