CapersProject/Assets/02.Scripts/Tycoon/TycoonStatus.cs

324 lines
12 KiB
C#
Raw Normal View History

2024-09-23 02:00:21 +00:00
using System;
2024-10-08 13:44:20 +00:00
using System.Linq;
2024-09-23 02:00:21 +00:00
using Sirenix.OdinInspector;
using UnityEngine;
namespace BlueWater.Tycoons
{
[Serializable]
public class TycoonStatus
{
2024-10-08 13:44:20 +00:00
[SerializeField]
private int _maxLevel;
public int MaxLevel
{
get => _maxLevel;
set => _maxLevel = value;
}
[SerializeField]
private int _currentLevel;
public int CurrentLevel
{
get => _currentLevel;
set
{
_currentLevel = value;
LevelUp();
}
}
2024-09-23 02:00:21 +00:00
[SerializeField]
private int _maxPlayerHealth;
public int MaxPlayerHealth
{
get
{
_maxPlayerHealth = GameManager.Instance.CurrentTycoonPlayer.PlayerHealthPoint.MaxHealthPoint;
return _maxPlayerHealth;
}
set
{
_maxPlayerHealth = value;
GameManager.Instance.CurrentTycoonPlayer.PlayerHealthPoint.SetMaxHealthPoint(value);
}
}
[SerializeField]
private int _currentPlayerHealth;
public int CurrentPlayerHealth
{
get
{
_currentPlayerHealth = GameManager.Instance.CurrentTycoonPlayer.PlayerHealthPoint.CurrentHealthPoint;
return _currentPlayerHealth;
}
set
{
_currentPlayerHealth = value;
GameManager.Instance.CurrentTycoonPlayer.PlayerHealthPoint.SetCurrentHealthPoint(value);
}
}
[SerializeField]
private float _playerMoveSpeedMultiplier;
public float PlayerMoveSpeedMultiplier
{
get
{
_playerMoveSpeedMultiplier = GameManager.Instance.CurrentTycoonPlayer.TycoonMovement.MoveSpeedMultiplier;
return _playerMoveSpeedMultiplier;
}
set
{
_playerMoveSpeedMultiplier = value;
GameManager.Instance.CurrentTycoonPlayer.TycoonMovement.SetMoveSpeedMultiplier(value);
}
}
// 보류
[SerializeField]
private int _currentExp;
public int CurrentExp
{
get => _currentExp;
2024-09-23 02:00:21 +00:00
set
{
2024-10-08 13:44:20 +00:00
if (_currentLevel >= _maxLevel) return;
2024-10-08 06:13:52 +00:00
var previousExp = _currentExp;
2024-10-10 08:42:20 +00:00
var addedExp = value - previousExp;
_currentExp = value;
2024-10-10 09:32:18 +00:00
EventManager.InvokeChangeExp(new ExpData(_currentLevel, previousExp, addedExp));
2024-09-23 02:00:21 +00:00
}
}
2024-10-08 06:13:52 +00:00
[SerializeField]
private float _expMultiplier;
public float ExpMultiplier
{
get => _expMultiplier;
set => _expMultiplier = value;
}
2024-09-23 02:00:21 +00:00
// 보류
[SerializeField]
private int _currentGold;
public int CurrentGold
{
get => _currentGold;
2024-10-06 23:41:09 +00:00
set
{
2024-10-10 05:44:37 +00:00
_currentGold = value;
2024-10-10 09:32:18 +00:00
EventManager.InvokeChangeGold(_currentGold);
2024-10-06 23:41:09 +00:00
}
}
2024-10-08 06:13:52 +00:00
[SerializeField]
private float _goldMultiplier;
public float GoldMultiplier
{
get => _goldMultiplier;
set => _goldMultiplier = value;
}
2024-09-23 02:00:21 +00:00
[Title("원액")]
[SerializeField]
private int _currentLiquidAmountA;
public int CurrentLiquidAmountA
{
get
{
_currentLiquidAmountA = TycoonManager.Instance.TycoonIngredientController.LiquidBarrelA.CurrentAmount;
return _currentLiquidAmountA;
}
set
{
_currentLiquidAmountA = value;
TycoonManager.Instance.TycoonIngredientController.LiquidBarrelA.SetCurrentAmount(value, true);
}
}
[SerializeField]
private int _currentLiquidAmountB;
public int CurrentLiquidAmountB
{
get
{
_currentLiquidAmountB = TycoonManager.Instance.TycoonIngredientController.LiquidBarrelB.CurrentAmount;
return _currentLiquidAmountB;
}
set
{
_currentLiquidAmountB = value;
TycoonManager.Instance.TycoonIngredientController.LiquidBarrelB.SetCurrentAmount(value, true);
}
}
[SerializeField]
private int _currentLiquidAmountC;
public int CurrentLiquidAmountC
{
get
{
_currentLiquidAmountC = TycoonManager.Instance.TycoonIngredientController.LiquidBarrelC.CurrentAmount;
return _currentLiquidAmountC;
}
set
{
_currentLiquidAmountC = value;
TycoonManager.Instance.TycoonIngredientController.LiquidBarrelC.SetCurrentAmount(value, true);
}
}
[SerializeField]
private int _currentLiquidAmountD;
public int CurrentLiquidAmountD
{
get
{
_currentLiquidAmountD = TycoonManager.Instance.TycoonIngredientController.LiquidBarrelD.CurrentAmount;
return _currentLiquidAmountD;
}
set
{
_currentLiquidAmountD = value;
TycoonManager.Instance.TycoonIngredientController.LiquidBarrelD.SetCurrentAmount(value, true);
}
}
[SerializeField]
private int _currentLiquidAmountE;
public int CurrentLiquidAmountE
{
get
{
_currentLiquidAmountE = TycoonManager.Instance.TycoonIngredientController.LiquidBarrelE.CurrentAmount;
return _currentLiquidAmountE;
}
set
{
_currentLiquidAmountE = value;
TycoonManager.Instance.TycoonIngredientController.LiquidBarrelE.SetCurrentAmount(value, true);
}
}
[Title("가니쉬")]
[SerializeField]
private int _currentGarnishAmount1;
public int CurrentGarnishAmount1
{
get
{
_currentGarnishAmount1 = TycoonManager.Instance.TycoonIngredientController.GarnishBarrel1.CurrentAmount;
return _currentGarnishAmount1;
}
set
{
_currentGarnishAmount1 = value;
TycoonManager.Instance.TycoonIngredientController.GarnishBarrel1.SetCurrentAmount(value, true);
}
}
[SerializeField]
private int _currentGarnishAmount2;
public int CurrentGarnishAmount2
{
get
{
_currentGarnishAmount2 = TycoonManager.Instance.TycoonIngredientController.GarnishBarrel2.CurrentAmount;
return _currentGarnishAmount2;
}
set
{
_currentGarnishAmount2 = value;
TycoonManager.Instance.TycoonIngredientController.GarnishBarrel2.SetCurrentAmount(value, true);
}
}
public void Initialize()
{
var ingredientController = TycoonManager.Instance.TycoonIngredientController;
ingredientController.LiquidBarrelA.OnAmountChanged += UpdateLiquidA;
ingredientController.LiquidBarrelB.OnAmountChanged += UpdateLiquidB;
ingredientController.LiquidBarrelC.OnAmountChanged += UpdateLiquidC;
ingredientController.LiquidBarrelD.OnAmountChanged += UpdateLiquidD;
ingredientController.LiquidBarrelE.OnAmountChanged += UpdateLiquidE;
2024-09-30 12:05:19 +00:00
ingredientController.GarnishBarrel1.OnAmountChanged += UpdateGarnish1;
ingredientController.GarnishBarrel2.OnAmountChanged += UpdateGarnish2;
2024-10-08 13:44:20 +00:00
MaxLevel = int.Parse(TycoonManager.Instance.LevelDataSo.GetData().Last().Value.Idx);
2024-10-06 23:41:09 +00:00
CurrentLevel = 1;
CurrentGold = 0;
CurrentExp = 0;
2024-10-08 06:13:52 +00:00
ExpMultiplier = 1;
GoldMultiplier = 1;
2024-10-06 23:41:09 +00:00
MaxPlayerHealth = GameManager.Instance.CurrentTycoonPlayer.PlayerHealthPoint.MaxHealthPoint;
CurrentPlayerHealth = GameManager.Instance.CurrentTycoonPlayer.PlayerHealthPoint.CurrentHealthPoint;
PlayerMoveSpeedMultiplier = GameManager.Instance.CurrentTycoonPlayer.TycoonMovement.MoveSpeedMultiplier;
2024-09-23 02:00:21 +00:00
}
private void OnDestroy()
{
var ingredientController = TycoonManager.Instance.TycoonIngredientController;
if (ingredientController != null)
{
ingredientController.LiquidBarrelA.OnAmountChanged -= UpdateLiquidA;
ingredientController.LiquidBarrelB.OnAmountChanged -= UpdateLiquidB;
ingredientController.LiquidBarrelC.OnAmountChanged -= UpdateLiquidC;
ingredientController.LiquidBarrelD.OnAmountChanged -= UpdateLiquidD;
ingredientController.LiquidBarrelE.OnAmountChanged -= UpdateLiquidE;
2024-09-30 12:05:19 +00:00
ingredientController.GarnishBarrel1.OnAmountChanged -= UpdateGarnish1;
ingredientController.GarnishBarrel2.OnAmountChanged -= UpdateGarnish2;
2024-09-23 02:00:21 +00:00
}
}
2024-10-06 23:41:09 +00:00
private void UpdateLiquidA(int amount) => CurrentLiquidAmountA += amount;
private void UpdateLiquidB(int amount) => CurrentLiquidAmountB += amount;
private void UpdateLiquidC(int amount) => CurrentLiquidAmountC += amount;
private void UpdateLiquidD(int amount) => CurrentLiquidAmountD += amount;
private void UpdateLiquidE(int amount) => CurrentLiquidAmountE += amount;
private void UpdateGarnish1(int amount) => CurrentGarnishAmount1 += amount;
private void UpdateGarnish2(int amount) => CurrentGarnishAmount2 += amount;
private void LevelUp()
{
// TODO : 레벨업 연출 추가 및 업그레이드 연출
var tycoonManager = TycoonManager.Instance;
var currentLevelData = tycoonManager.GetCurrentLevelData();
switch (currentLevelData.OpenUpgrade)
{
case "Upgrade0":
tycoonManager.CustomerTableController.ShowCustomerTable(0);
2024-09-30 12:05:19 +00:00
tycoonManager.TycoonIngredientController.LiquidBarrelA.Activate();
break;
case "Upgrade1":
tycoonManager.CustomerTableController.ShowCustomerTable(1);
2024-09-30 12:05:19 +00:00
tycoonManager.TycoonIngredientController.LiquidBarrelB.Activate();
break;
case "Upgrade2":
tycoonManager.CustomerTableController.ShowCustomerTable(2);
2024-09-30 12:05:19 +00:00
tycoonManager.TycoonIngredientController.LiquidBarrelC.Activate();
break;
case "Upgrade3":
tycoonManager.CustomerTableController.ShowCustomerTable(3);
2024-09-30 12:05:19 +00:00
tycoonManager.TycoonIngredientController.LiquidBarrelD.Activate();
break;
case "Upgrade4":
tycoonManager.CustomerTableController.ShowCustomerTable(4);
2024-09-30 12:05:19 +00:00
tycoonManager.TycoonIngredientController.LiquidBarrelE.Activate();
break;
case "Upgrade5":
tycoonManager.CustomerTableController.ShowCustomerTable(5);
2024-09-30 12:05:19 +00:00
tycoonManager.TycoonIngredientController.GarnishBarrel1.Activate();
break;
case "Upgrade6":
tycoonManager.CustomerTableController.ShowCustomerTable(6);
2024-09-30 12:05:19 +00:00
tycoonManager.TycoonIngredientController.GarnishBarrel2.Activate();
break;
}
2024-10-08 06:45:46 +00:00
2024-10-10 09:32:18 +00:00
EventManager.InvokeLevelUp(currentLevelData);
}
2024-09-23 02:00:21 +00:00
}
}