CapersProject/Assets/02.Scripts/Tycoon/TycoonStatus.cs
Nam Tae Gun 57b21c004f 0.3.4.0
2024-11-15 16:28:13 +09:00

385 lines
12 KiB
C#

using System;
using System.Linq;
using Sirenix.OdinInspector;
using UnityEngine;
namespace BlueWater.Tycoons
{
public enum PassiveCard
{
None = 0,
DoubleServing = 1,
RandomChange = 2,
GoldAutoGain = 3,
MakingBonus = 4,
ServingBonus = 5,
CleaningBonus = 6
}
[Serializable]
public class TycoonStatus
{
[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();
}
}
[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;
set
{
if (CurrentLevel >= MaxLevel) return;
_currentExp = value;
}
}
[SerializeField]
private float _expMultiplier;
public float ExpMultiplier
{
get => _expMultiplier;
set => _expMultiplier = value;
}
// 보류
[SerializeField]
private int _currentGold;
public int CurrentGold
{
get => _currentGold;
set => _currentGold = value;
}
[SerializeField]
private float _goldMultiplier;
public float GoldMultiplier
{
get => _goldMultiplier;
set => _goldMultiplier = value;
}
[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);
}
}
[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);
}
}
[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);
}
}
[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);
}
}
[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);
}
}
[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);
}
}
[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);
}
}
[SerializeField]
private int _playerDashCooldownReduction;
public int PlayerDashCooldownReduction
{
get => _playerDashCooldownReduction;
set => _playerDashCooldownReduction = value;
}
[SerializeField]
private float _tipMultiplier;
public float TipMultiplier
{
get => _tipMultiplier;
set => _tipMultiplier = value;
}
[SerializeField]
private float _endGoldMultiplier;
public float EndGoldMultiplier
{
get => _endGoldMultiplier;
set => _endGoldMultiplier = value;
}
[SerializeField]
private int _customerHurryTimeIncrease;
public int CustomerHurryTimeIncrease
{
get => _customerHurryTimeIncrease;
set => _customerHurryTimeIncrease = value;
}
[SerializeField]
private int _barrelAutoIncrease;
public int BarrelAutoIncrease
{
get => _barrelAutoIncrease;
set => _barrelAutoIncrease = value;
}
[SerializeField]
private float _serverTipMultiplier;
public float ServerTipMultiplier
{
get => _serverTipMultiplier;
set => _serverTipMultiplier = value;
}
[SerializeField]
private int _cleanerCleaningReduction;
public int CleanerCleaningReduction
{
get => _cleanerCleaningReduction;
set => _cleanerCleaningReduction = value;
}
[SerializeField]
private int _bartenderMakingReduction;
public int BartenderMakingReduction
{
get => _bartenderMakingReduction;
set => _bartenderMakingReduction = value;
}
public PassiveCard _currentPassiveCard;
public PassiveCard CurrentPassiveCard
{
get => _currentPassiveCard;
set => _currentPassiveCard = value;
}
public void Initialize()
{
EventManager.OnAddedGold += AddGold;
MaxLevel = int.Parse(TycoonManager.Instance.LevelDataSo.GetData().Last().Value.Idx);
CurrentLevel = 1;
CurrentGold = 0;
CurrentExp = 0;
ExpMultiplier = 1f;
GoldMultiplier = 1f;
MaxPlayerHealth = GameManager.Instance.CurrentTycoonPlayer.PlayerHealthPoint.MaxHealthPoint;
CurrentPlayerHealth = GameManager.Instance.CurrentTycoonPlayer.PlayerHealthPoint.CurrentHealthPoint;
PlayerMoveSpeedMultiplier = GameManager.Instance.CurrentTycoonPlayer.TycoonMovement.MoveSpeedMultiplier;
PlayerDashCooldownReduction = 0;
TipMultiplier = 0f;
EndGoldMultiplier = 0.5f;
_customerHurryTimeIncrease = 0;
BarrelAutoIncrease = 0;
ServerTipMultiplier = 0f;
CleanerCleaningReduction = 0;
BartenderMakingReduction = 0;
CurrentPassiveCard = PassiveCard.None;
}
public void Dispose()
{
EventManager.OnAddedGold -= AddGold;
}
private void LevelUp()
{
// TODO : 레벨업 연출 추가 및 업그레이드 연출
var tycoonManager = TycoonManager.Instance;
var currentLevelData = tycoonManager.GetCurrentLevelData();
EventManager.InvokeLevelUp(currentLevelData);
switch (currentLevelData.OpenUpgrade)
{
case "Upgrade0":
tycoonManager.CustomerTableController.ShowCustomerTable(0);
tycoonManager.TycoonIngredientController.LiquidBarrelA.Activate();
break;
case "Upgrade1":
tycoonManager.CustomerTableController.ShowCustomerTable(1);
tycoonManager.TycoonIngredientController.LiquidBarrelB.Activate();
break;
case "Upgrade2":
tycoonManager.CustomerTableController.ShowCustomerTable(2);
tycoonManager.TycoonIngredientController.LiquidBarrelC.Activate();
break;
case "Upgrade3":
tycoonManager.CustomerTableController.ShowCustomerTable(3);
tycoonManager.TycoonIngredientController.LiquidBarrelD.Activate();
break;
case "Upgrade4":
tycoonManager.CustomerTableController.ShowCustomerTable(4);
tycoonManager.TycoonIngredientController.LiquidBarrelE.Activate();
break;
case "Upgrade5":
tycoonManager.CustomerTableController.ShowCustomerTable(5);
tycoonManager.TycoonIngredientController.GarnishBarrel1.Activate();
break;
case "Upgrade6":
tycoonManager.CustomerTableController.ShowCustomerTable(6);
tycoonManager.TycoonIngredientController.GarnishBarrel2.Activate();
break;
}
}
private void AddGold(int addedGold, bool isTip) => CurrentGold += addedGold;
}
}