using BlueWater.Interfaces; using BlueWater.Items; 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] public BalloonUi BalloonUi { get; private set; } [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] 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(); CharacterCollider = GetComponent(); PlayerInput = GetComponent(); VisualLook = transform.Find("VisualLook"); SkeletonAnimation = VisualLook.GetComponent(); BalloonUi = transform.Find("Canvas/BalloonUi").GetComponent(); PlayerHealthPoint = GetComponent(); TycoonInput = GetComponent(); TycoonMovement = GetComponent(); TycoonPickupHandler = GetComponent(); } private void InitializeChileComponents() { TycoonMovement.InitializeComponents(Rigidbody, VisualLook); } #endregion // Methods #region Methods private void SubscribeEvents() { // Input TycoonInput.OnMoveInputReceived += TycoonMovement.HandleInputMovement; 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; 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); // public bool IsPickedUpItem() => TycoonPickupHandler.IsPickedUpItem(); // public void CarryItem(IPickup item) // { // TycoonCarryHandler.CarryItem(item); // // if (!isUsingSprite) // // { // // FoodBalloonUi.SetFoodImage(GetCurrentItemData().Idx); // // FoodBalloonUi.ShowUi(); // // } // } public void GiveItem() { TycoonPickupHandler.GiveItem(); BalloonUi.HideUi(); BalloonUi.SetItemImage(null); } // public void DiscardItem() // { // TycoonCarryHandler.DiscardItem(); // BalloonUi.HideUi(); // BalloonUi.SetItemImage(null); // } public IPickup GetCurrentItemData() => TycoonPickupHandler.GetCurrentPickupItem(); #endregion } }