380 lines
12 KiB
C#
380 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,
|
|
PassiveMakingBonus = 4,
|
|
PassiveServingBonus = 5,
|
|
PassiveCleaningBonus = 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;
|
|
EventManager.InvokeChangeGold(_currentGold);
|
|
}
|
|
}
|
|
|
|
[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()
|
|
{
|
|
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 = 1f;
|
|
_customerHurryTimeIncrease = 0;
|
|
BarrelAutoIncrease = 0;
|
|
ServerTipMultiplier = 0f;
|
|
CleanerCleaningReduction = 0;
|
|
BartenderMakingReduction = 0;
|
|
CurrentPassiveCard = PassiveCard.None;
|
|
}
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
} |