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

399 lines
13 KiB
C#
Raw Normal View History

2024-09-23 02:00:21 +00:00
using System;
2024-11-29 08:34:20 +00:00
using System.Collections.Generic;
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
{
2024-11-07 09:13:54 +00:00
public enum PassiveCard
{
None = 0,
DoubleServing = 1,
RandomChange = 2,
GoldAutoGain = 3,
2024-11-11 02:02:24 +00:00
MakingBonus = 4,
ServingBonus = 5,
CleaningBonus = 6
2024-11-07 09:13:54 +00:00
}
2024-09-23 02:00:21 +00:00
[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-20 17:21:39 +00:00
if (CurrentLevel >= MaxLevel) return;
2024-10-08 13:44:20 +00:00
2024-10-10 08:42:20 +00:00
_currentExp = value;
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-11-15 07:28:13 +00:00
set => _currentGold = value;
}
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;
2024-11-04 12:22:07 +00:00
TycoonManager.Instance.TycoonIngredientController.LiquidBarrelA.SetCurrentAmount(value);
2024-09-23 02:00:21 +00:00
}
}
[SerializeField]
private int _currentLiquidAmountB;
public int CurrentLiquidAmountB
{
get
{
_currentLiquidAmountB = TycoonManager.Instance.TycoonIngredientController.LiquidBarrelB.CurrentAmount;
return _currentLiquidAmountB;
}
set
{
_currentLiquidAmountB = value;
2024-11-04 12:22:07 +00:00
TycoonManager.Instance.TycoonIngredientController.LiquidBarrelB.SetCurrentAmount(value);
2024-09-23 02:00:21 +00:00
}
}
[SerializeField]
private int _currentLiquidAmountC;
public int CurrentLiquidAmountC
{
get
{
_currentLiquidAmountC = TycoonManager.Instance.TycoonIngredientController.LiquidBarrelC.CurrentAmount;
return _currentLiquidAmountC;
}
set
{
_currentLiquidAmountC = value;
2024-11-04 12:22:07 +00:00
TycoonManager.Instance.TycoonIngredientController.LiquidBarrelC.SetCurrentAmount(value);
2024-09-23 02:00:21 +00:00
}
}
[SerializeField]
private int _currentLiquidAmountD;
public int CurrentLiquidAmountD
{
get
{
_currentLiquidAmountD = TycoonManager.Instance.TycoonIngredientController.LiquidBarrelD.CurrentAmount;
return _currentLiquidAmountD;
}
set
{
_currentLiquidAmountD = value;
2024-11-04 12:22:07 +00:00
TycoonManager.Instance.TycoonIngredientController.LiquidBarrelD.SetCurrentAmount(value);
2024-09-23 02:00:21 +00:00
}
}
[SerializeField]
private int _currentLiquidAmountE;
public int CurrentLiquidAmountE
{
get
{
_currentLiquidAmountE = TycoonManager.Instance.TycoonIngredientController.LiquidBarrelE.CurrentAmount;
return _currentLiquidAmountE;
}
set
{
_currentLiquidAmountE = value;
2024-11-04 12:22:07 +00:00
TycoonManager.Instance.TycoonIngredientController.LiquidBarrelE.SetCurrentAmount(value);
2024-09-23 02:00:21 +00:00
}
}
[Title("가니쉬")]
[SerializeField]
private int _currentGarnishAmount1;
public int CurrentGarnishAmount1
{
get
{
_currentGarnishAmount1 = TycoonManager.Instance.TycoonIngredientController.GarnishBarrel1.CurrentAmount;
return _currentGarnishAmount1;
}
set
{
_currentGarnishAmount1 = value;
2024-11-04 12:22:07 +00:00
TycoonManager.Instance.TycoonIngredientController.GarnishBarrel1.SetCurrentAmount(value);
2024-09-23 02:00:21 +00:00
}
}
[SerializeField]
private int _currentGarnishAmount2;
public int CurrentGarnishAmount2
{
get
{
_currentGarnishAmount2 = TycoonManager.Instance.TycoonIngredientController.GarnishBarrel2.CurrentAmount;
return _currentGarnishAmount2;
}
set
{
_currentGarnishAmount2 = value;
2024-11-04 12:22:07 +00:00
TycoonManager.Instance.TycoonIngredientController.GarnishBarrel2.SetCurrentAmount(value);
2024-09-23 02:00:21 +00:00
}
}
2024-11-05 12:27:46 +00:00
[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;
}
2024-11-07 09:13:54 +00:00
2024-11-29 08:34:20 +00:00
[field: ShowInInspector]
public HashSet<PassiveCard> CurrentPassiveCard { get; } = new(6);
2024-11-05 12:27:46 +00:00
2024-09-23 02:00:21 +00:00
public void Initialize()
{
2024-11-15 07:28:13 +00:00
EventManager.OnAddedGold += AddGold;
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-11-05 12:27:46 +00:00
ExpMultiplier = 1f;
GoldMultiplier = 1f;
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-11-05 12:27:46 +00:00
PlayerDashCooldownReduction = 0;
2024-11-07 09:13:54 +00:00
TipMultiplier = 0f;
2024-11-15 07:28:13 +00:00
EndGoldMultiplier = 0.5f;
2024-11-05 12:27:46 +00:00
_customerHurryTimeIncrease = 0;
BarrelAutoIncrease = 0;
2024-11-07 09:13:54 +00:00
ServerTipMultiplier = 0f;
2024-11-05 12:27:46 +00:00
CleanerCleaningReduction = 0;
BartenderMakingReduction = 0;
2024-09-23 02:00:21 +00:00
}
2024-11-15 07:28:13 +00:00
public void Dispose()
{
EventManager.OnAddedGold -= AddGold;
}
private void LevelUp()
{
// TODO : 레벨업 연출 추가 및 업그레이드 연출
var tycoonManager = TycoonManager.Instance;
var currentLevelData = tycoonManager.GetCurrentLevelData();
2024-10-28 09:27:48 +00:00
EventManager.InvokeLevelUp(currentLevelData);
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-12-02 11:43:08 +00:00
case "Upgrade7":
tycoonManager.CustomerTableController.ShowCustomerTable(7);
break;
}
}
2024-11-15 07:28:13 +00:00
private void AddGold(int addedGold, bool isTip) => CurrentGold += addedGold;
2024-11-29 08:34:20 +00:00
public void AddPassiveCard(PassiveCard card)
{
CurrentPassiveCard.Add(card);
}
public void RemovePassiveCard(PassiveCard card)
{
if (CurrentPassiveCard.Contains(card))
{
CurrentPassiveCard.Remove(card);
}
}
public bool ContainsPassiveCard(PassiveCard card) => CurrentPassiveCard.Contains(card);
2024-09-23 02:00:21 +00:00
}
}