Files
Gnome-s-Bounty/Assets/Scripts/Controllers/PlayerController.cs
T
2026-06-06 11:50:19 +03:00

103 lines
2.3 KiB
C#

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<TreasureType> OnPlayerTakeItem;
private InputManager _inputManager;
private PlayerState _playerState;
private HammerThrower _hammerThrower;
private void Awake()
{
_inputManager = GetComponent<InputManager>();
_playerState = GetComponent<PlayerState>();
_hammerThrower = GetComponent<HammerThrower>();
_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");
}
}
}