CapersProject/Assets/02.Scripts/Character/Player/Tycoon/TycoonPlayer.cs

179 lines
5.9 KiB
C#
Raw Normal View History

2024-09-10 10:25:05 +00:00
using BlueWater.Interfaces;
using BlueWater.Uis;
using Sirenix.OdinInspector;
using Spine.Unity;
using UnityEngine;
using UnityEngine.InputSystem;
namespace BlueWater.Players.Tycoons
{
public static class TycoonPlayerSpineAnimation
{
public const string Idle = "Idle";
public const string IdleSide = "IdleSide";
public const string IdleServingDown = "ServingIdleDown";
public const string IdleServingUpside = "ServingIdleUpside";
public const string RunDown = "Tycoon/RunDown";
public const string RunSide = "Tycoon/RunUpSide";
public const string ServingDown = "Tycoon/ServingDown";
public const string ServingSide = "Tycoon/ServingUpSide";
}
[DefaultExecutionOrder(-1)]
public class TycoonPlayer : MonoBehaviour
{
// Variables
#region Variables
// Components
[field: SerializeField]
public Rigidbody Rigidbody { get; private set; }
[field: SerializeField]
public CapsuleCollider CharacterCollider { get; private set; }
[field: SerializeField]
public PlayerInput PlayerInput { get; private set; }
[field: SerializeField]
public Transform VisualLook { get; private set; }
[field: SerializeField]
public SkeletonAnimation SkeletonAnimation { get; private set; }
[field: SerializeField]
2024-09-26 11:50:39 +00:00
public InteractionCanvas InteractionCanvas { get; private set; }
2024-09-23 02:00:21 +00:00
[field: SerializeField]
public PlayerHealthPoint PlayerHealthPoint { get; private set; }
[field: SerializeField]
public TycoonInput TycoonInput { get; private set; }
[field: SerializeField]
public TycoonMovement TycoonMovement { get; private set; }
[field: SerializeField]
2024-09-10 10:52:32 +00:00
public TycoonPickupHandler TycoonPickupHandler { get; private set; }
#endregion
// Unity events
#region Unity events
private void Awake()
{
InitializeComponents();
InitializeChileComponents();
if (!GameManager.Instance.CurrentTycoonPlayer)
{
GameManager.Instance.SetCurrentTycoonPlayer(this);
}
}
private void Start()
{
SubscribeEvents();
}
private void OnDestroy()
{
UnSubscribeEvents();
}
#endregion
// Initialize methods
#region Initialize methods
[Button("컴포넌트 초기화")]
private void InitializeComponents()
{
Rigidbody = GetComponent<Rigidbody>();
CharacterCollider = GetComponent<CapsuleCollider>();
PlayerInput = GetComponent<PlayerInput>();
VisualLook = transform.Find("VisualLook");
SkeletonAnimation = VisualLook.GetComponent<SkeletonAnimation>();
2024-09-26 11:50:39 +00:00
InteractionCanvas = transform.GetComponentInChildren<InteractionCanvas>();
2024-09-23 02:00:21 +00:00
PlayerHealthPoint = GetComponent<PlayerHealthPoint>();
TycoonInput = GetComponent<TycoonInput>();
TycoonMovement = GetComponent<TycoonMovement>();
2024-09-10 10:52:32 +00:00
TycoonPickupHandler = GetComponent<TycoonPickupHandler>();
2024-09-26 11:50:39 +00:00
var renderer = VisualLook.GetComponent<Renderer>();
renderer.sortingLayerName = "Default";
renderer.sortingOrder = 5;
}
private void InitializeChileComponents()
{
TycoonMovement.InitializeComponents(Rigidbody, VisualLook);
}
#endregion
// Methods
#region Methods
private void SubscribeEvents()
{
// Input
TycoonInput.OnMoveInputReceived += TycoonMovement.HandleInputMovement;
2024-09-23 02:00:21 +00:00
2024-09-26 11:50:39 +00:00
var balloonUi = InteractionCanvas.BalloonUi;
EventManager.OnLiquidRegionEntered += balloonUi.EnterLiquidRegion;
EventManager.OnLiquidRegionExited += balloonUi.ExitLiquidRegion;
EventManager.OnCocktailStarted += balloonUi.PickupUnfinishedCocktail;
EventManager.OnCocktailCompleted += balloonUi.SetItemImage;
EventManager.OnCocktailDiscarded += balloonUi.DiscardItem;
}
private void UnSubscribeEvents()
{
// Input
TycoonInput.OnMoveInputReceived -= TycoonMovement.HandleInputMovement;
2024-09-23 02:00:21 +00:00
2024-09-26 11:50:39 +00:00
var balloonUi = InteractionCanvas.BalloonUi;
EventManager.OnLiquidRegionEntered -= balloonUi.EnterLiquidRegion;
EventManager.OnLiquidRegionExited -= balloonUi.ExitLiquidRegion;
EventManager.OnCocktailStarted -= balloonUi.PickupUnfinishedCocktail;
EventManager.OnCocktailCompleted -= balloonUi.SetItemImage;
EventManager.OnCocktailDiscarded -= balloonUi.DiscardItem;
}
// Wrapping
public void GetMoney(int money) => DataManager.Instance.GetMoney(money);
2024-09-23 02:00:21 +00:00
// public bool IsPickedUpItem() => TycoonPickupHandler.IsPickedUpItem();
2024-09-10 10:25:05 +00:00
// public void CarryItem(IPickup item)
// {
// TycoonCarryHandler.CarryItem(item);
// // if (!isUsingSprite)
// // {
// // FoodBalloonUi.SetFoodImage(GetCurrentItemData().Idx);
// // FoodBalloonUi.ShowUi();
// // }
// }
public void GiveItem()
{
2024-09-10 10:52:32 +00:00
TycoonPickupHandler.GiveItem();
2024-09-26 11:50:39 +00:00
var balloonUi = InteractionCanvas.BalloonUi;
balloonUi.HideUi();
balloonUi.SetItemImage(null);
}
2024-09-10 10:25:05 +00:00
// public void DiscardItem()
// {
// TycoonCarryHandler.DiscardItem();
// BalloonUi.HideUi();
// BalloonUi.SetItemImage(null);
// }
2024-09-10 10:52:32 +00:00
public IPickup GetCurrentItemData() => TycoonPickupHandler.GetCurrentPickupItem();
#endregion
}
}