From 396d0d67d85ff68a3f556f417670bae6fd7f65d1 Mon Sep 17 00:00:00 2001 From: NTG_Lenovo Date: Tue, 5 Nov 2024 21:27:46 +0900 Subject: [PATCH] =?UTF-8?q?0.3.3.5=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/01.Scenes/01.Tycoon.unity | 8 + .../Npc/Crew/Bartender/BartenderCrew.cs | 8 +- .../Character/Npc/Customer/Customer.cs | 14 +- .../Character/Player/Tycoon/TycoonMovement.cs | 6 +- .../Character/Player/Tycoon/TycoonPlayer.cs | 3 +- Assets/02.Scripts/Editor/JsonHelperEditor.cs | 10 +- Assets/02.Scripts/EventManager.cs | 7 + Assets/02.Scripts/Prop/Tycoon/Barrel.cs | 44 ++- Assets/02.Scripts/Prop/Tycoon/TableSeat.cs | 19 +- Assets/02.Scripts/Prop/Tycoon/Vomiting.cs | 19 +- .../ScriptableObject/CardDataTable.asset | 306 ++++++++++++++---- .../ScriptableObject/LevelDataTable.asset | 210 ++++++++++++ Assets/02.Scripts/Tycoon/CardData.cs | 29 +- Assets/02.Scripts/Tycoon/CardDataSo.cs | 7 +- Assets/02.Scripts/Tycoon/LevelData.cs | 27 +- Assets/02.Scripts/Tycoon/TycoonStatus.cs | 76 ++++- .../02.Scripts/Ui/Tycoon/TycoonSelectCard.cs | 143 +++++--- Assets/05.Prefabs/Uis/Tycoons/Card.prefab | 2 +- Assets/Resources/Excel/CardDataTable.xlsx | Bin 9684 -> 10874 bytes Assets/Resources/Excel/LevelDataTable.xlsx | Bin 10207 -> 10899 bytes Assets/Resources/JSON/CardDataTable.json | 269 ++++++++++++--- Assets/Resources/JSON/LevelDataTable.json | 290 ++++++++++++++--- 22 files changed, 1246 insertions(+), 251 deletions(-) diff --git a/Assets/01.Scenes/01.Tycoon.unity b/Assets/01.Scenes/01.Tycoon.unity index 2e77ade9f..bbc60866d 100644 --- a/Assets/01.Scenes/01.Tycoon.unity +++ b/Assets/01.Scenes/01.Tycoon.unity @@ -21791,6 +21791,14 @@ MonoBehaviour: _currentLiquidAmountE: 0 _currentGarnishAmount1: 0 _currentGarnishAmount2: 0 + _playerDashCooldownReduction: 0 + _tipMultiplier: 0 + _endGoldMultiplier: 0 + _customerHurryTimeIncrease: 0 + _barrelAutoIncrease: 0 + _serverTipMultiplier: 0 + _cleanerCleaningReduction: 0 + _bartenderMakingReduction: 0 k__BackingField: {fileID: 11400000, guid: 702b1ed0ce71d1b4aa1ddbce67e475a1, type: 2} k__BackingField: {fileID: 11400000, guid: 4607b374e49ab734da548949f9e10fed, type: 2} --- !u!114 &1665075870 diff --git a/Assets/02.Scripts/Character/Npc/Crew/Bartender/BartenderCrew.cs b/Assets/02.Scripts/Character/Npc/Crew/Bartender/BartenderCrew.cs index f5bfa6ef2..28aa54f94 100644 --- a/Assets/02.Scripts/Character/Npc/Crew/Bartender/BartenderCrew.cs +++ b/Assets/02.Scripts/Character/Npc/Crew/Bartender/BartenderCrew.cs @@ -2,11 +2,15 @@ using BlueWater.Interfaces; using BlueWater.Items; using BlueWater.Npcs.Customers; using BlueWater.Tycoons; +using UnityEngine; namespace BlueWater.Npcs.Crews.Bartender { public class BartenderCrew : Crew { + [SerializeField] + private int _makingCocktailTime = 15; + public BartenderTable MyBartenderTable { get; private set; } public Customer OrderedCustomer { get; set; } public bool IsMakingCocktail { get; private set; } @@ -64,7 +68,9 @@ namespace BlueWater.Npcs.Crews.Bartender { OrderedCustomer.CurrentBill.BartenderMakingCocktail(); } - BalloonUi.OrderItem(_makingCocktailData.Idx, 0, 15); + + var makingTime = _makingCocktailTime - TycoonManager.Instance.TycoonStatus.BartenderMakingReduction; + BalloonUi.OrderItem(_makingCocktailData.Idx, 0, makingTime); IsMakingCocktail = true; } diff --git a/Assets/02.Scripts/Character/Npc/Customer/Customer.cs b/Assets/02.Scripts/Character/Npc/Customer/Customer.cs index 080e391ad..bc8312cb0 100644 --- a/Assets/02.Scripts/Character/Npc/Customer/Customer.cs +++ b/Assets/02.Scripts/Character/Npc/Customer/Customer.cs @@ -116,6 +116,8 @@ namespace BlueWater.Npcs.Customers [field: SerializeField] public bool IsOrderedSucceed { get; private set; } + [field: SerializeField] + public bool IsServedPlayer { get; private set; } [SerializeField] private CustomerInteractionType _customerInteractionType; @@ -281,6 +283,8 @@ namespace BlueWater.Npcs.Customers { StateMachineController.TransitionToState(UpsetState, this); } + EventManager.InvokeCocktailServedToCustomer(cocktailData, IsServedPlayer); + EventManager.InvokeOrderResult(this, IsOrderedSucceed); } public void Interaction() @@ -294,9 +298,8 @@ namespace BlueWater.Npcs.Customers var servedCocktailData = ItemManager.Instance.CocktailDataSo.GetDataByIdx(currentPickupItem.Idx); IsOrderedSucceed = currentPickupItem.Idx == OrderedCocktailData.Idx; IsReceivedItem = true; + IsServedPlayer = true; ServedItem(servedCocktailData); - EventManager.InvokeCocktailServedToCustomer(servedCocktailData, true); - EventManager.InvokeOrderResult(this, IsOrderedSucceed); break; default: throw new ArgumentOutOfRangeException(); @@ -326,11 +329,10 @@ namespace BlueWater.Npcs.Customers var servedCocktailData = ItemManager.Instance.CocktailDataSo.GetDataByIdx(currentPickupItem.Idx); IsOrderedSucceed = currentPickupItem.Idx == OrderedCocktailData.Idx; IsReceivedItem = true; + IsServedPlayer = false; ServedItem(servedCocktailData); - EventManager.InvokeCocktailServedToCustomer(servedCocktailData, false); serverCrew.BalloonUi.DiscardItem(); serverCrew.ResetMission(); - EventManager.InvokeOrderResult(this, IsOrderedSucceed); } public void CancelInteractionCrew() @@ -407,6 +409,7 @@ namespace BlueWater.Npcs.Customers var exp = (int)(CurrentLevelData.Exp * TycoonManager.Instance.TycoonStatus.ExpMultiplier); var gold = (int)(CurrentLevelData.Gold * TycoonManager.Instance.TycoonStatus.GoldMultiplier); + var tip = (int)(CurrentLevelData.Gold * TycoonManager.Instance.TycoonStatus.GoldMultiplier); PayMoneyParticle.Play(); PayMoneyUi.PayMoney(gold); @@ -443,7 +446,8 @@ namespace BlueWater.Npcs.Customers IsOrderedSucceed = false; InteractionMessage = "칵테일 전달"; OrderedCocktailData = TycoonManager.Instance.TycoonIngredientController.GetRandomCocktailData(); - BalloonUi.OrderItem(OrderedCocktailData.Idx, CurrentLevelData.WaitTime, CurrentLevelData.HurryTime); + var hurryTime = CurrentLevelData.HurryTime + TycoonManager.Instance.TycoonStatus.CustomerHurryTimeIncrease; + BalloonUi.OrderItem(OrderedCocktailData.Idx, CurrentLevelData.WaitTime, hurryTime); _customerInteractionType = CustomerInteractionType.ServedCocktail; RegisterPlayerInteraction(); diff --git a/Assets/02.Scripts/Character/Player/Tycoon/TycoonMovement.cs b/Assets/02.Scripts/Character/Player/Tycoon/TycoonMovement.cs index 376a8e8f6..8afdcc29e 100644 --- a/Assets/02.Scripts/Character/Player/Tycoon/TycoonMovement.cs +++ b/Assets/02.Scripts/Character/Player/Tycoon/TycoonMovement.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using BlueWater.Interfaces; +using BlueWater.Tycoons; using BlueWater.Utility; using Sirenix.OdinInspector; using UnityEngine; @@ -197,8 +198,9 @@ namespace BlueWater.Players.Tycoons elapsedTime += Time.fixedDeltaTime; yield return new WaitForFixedUpdate(); } - - EndDash(DashCooldown); + + var newDashCooldown = DashCooldown - TycoonManager.Instance.TycoonStatus.PlayerDashCooldownReduction; + EndDash(newDashCooldown); } public void EndDash(float dashCooldown = float.PositiveInfinity) diff --git a/Assets/02.Scripts/Character/Player/Tycoon/TycoonPlayer.cs b/Assets/02.Scripts/Character/Player/Tycoon/TycoonPlayer.cs index 864dcf231..3f7a290f4 100644 --- a/Assets/02.Scripts/Character/Player/Tycoon/TycoonPlayer.cs +++ b/Assets/02.Scripts/Character/Player/Tycoon/TycoonPlayer.cs @@ -162,7 +162,8 @@ namespace BlueWater.Players.Tycoons private void Die() { - var saveGold = TycoonManager.Instance.TycoonStatus.CurrentGold / 2; + var percent = 0.5f + TycoonManager.Instance.TycoonStatus.EndGoldMultiplier; + var saveGold = (int)(TycoonManager.Instance.TycoonStatus.CurrentGold * percent); ES3.Save("Gold", saveGold); } diff --git a/Assets/02.Scripts/Editor/JsonHelperEditor.cs b/Assets/02.Scripts/Editor/JsonHelperEditor.cs index 66c8541dd..248aca272 100644 --- a/Assets/02.Scripts/Editor/JsonHelperEditor.cs +++ b/Assets/02.Scripts/Editor/JsonHelperEditor.cs @@ -230,11 +230,15 @@ namespace BlueWater.Editors // 값이 없으면 덮어쓰지 않음 if (newValue == null) return false; - // 값 타입일 경우 기본값이 아닌지 확인 + // Enum 타입의 경우, 값을 비교하여 덮어쓸지 결정 + if (property.PropertyType.IsEnum) + { + return !newValue.Equals(existingValue); // 기존 enum 값과 다를 경우에만 덮어씀 + } + if (property.PropertyType.IsValueType) { - var defaultValue = Activator.CreateInstance(property.PropertyType); - return !newValue.Equals(defaultValue); // 기본값이 아니면 덮어씀 + return !newValue.Equals(existingValue); // 기존 값과 다를 경우 덮어씀 } // 참조 타입인 경우 diff --git a/Assets/02.Scripts/EventManager.cs b/Assets/02.Scripts/EventManager.cs index 9922eaee5..670b57072 100644 --- a/Assets/02.Scripts/EventManager.cs +++ b/Assets/02.Scripts/EventManager.cs @@ -234,6 +234,13 @@ namespace BlueWater { OnAddBarrels?.Invoke(addedValue); } + + // 배럴의 자동화 + public static Action OnAutoSupplyBarrels; + public static void InvokeAutoSupplyBarrels() + { + OnAutoSupplyBarrels?.Invoke(); + } #endregion } diff --git a/Assets/02.Scripts/Prop/Tycoon/Barrel.cs b/Assets/02.Scripts/Prop/Tycoon/Barrel.cs index 1c7d2d16c..7297913c4 100644 --- a/Assets/02.Scripts/Prop/Tycoon/Barrel.cs +++ b/Assets/02.Scripts/Prop/Tycoon/Barrel.cs @@ -25,20 +25,14 @@ namespace BlueWater.Tycoons [field: SerializeField] public int CurrentAmount { get; private set; } - [SerializeField] - private bool _isActivated; - public bool IsActivated - { - get => _isActivated; - private set - { - _isActivated = value; - - _liquidImage.sprite = _isActivated ? _liquidData.Sprite : DataManager.Instance.SpriteDataSo.Lock; - } - } + [field: SerializeField] + public bool IsActivated { get; private set; } + + [field: SerializeField] + public bool IsAutoSupply { get; private set; } private Material _instanceMaterial; + private float _elapsedTime; public static event Action OnBarrelInteracted; public static event Action OnBarrelCancelInteracted; @@ -62,15 +56,31 @@ namespace BlueWater.Tycoons base.Start(); EventManager.OnAddBarrels += AddCurrentAmount; + EventManager.OnAutoSupplyBarrels += AutoSupply; - _liquidImage.sprite = _isActivated ? _liquidData.Sprite : DataManager.Instance.SpriteDataSo.Lock; + _liquidImage.sprite = IsActivated ? _liquidData.Sprite : DataManager.Instance.SpriteDataSo.Lock; InteractionMessage = $"{_liquidData.Name} 따르기"; _instanceMaterial.SetColor(LiquidColorHash, _liquidData.Color * _colorIntensity); } + private void Update() + { + if (!IsAutoSupply) return; + + if (_elapsedTime >= 1f) + { + AddCurrentAmount(TycoonManager.Instance.TycoonStatus.BarrelAutoIncrease); + + _elapsedTime -= 1f; + } + + _elapsedTime += Time.deltaTime; + } + private void OnDestroy() { EventManager.OnAddBarrels -= AddCurrentAmount; + EventManager.OnAutoSupplyBarrels -= AutoSupply; } public override void Interaction() @@ -134,12 +144,18 @@ namespace BlueWater.Tycoons public void Activate() { IsActivated = true; + _liquidImage.sprite = IsActivated ? _liquidData.Sprite : DataManager.Instance.SpriteDataSo.Lock; SetCurrentAmount(_liquidData.GetMaxAmount()); } + public void AutoSupply() + { + IsAutoSupply = true; + } + public void AddCurrentAmount(int addedValue) { - if (!_isActivated) return; + if (!IsActivated) return; SetCurrentAmount(CurrentAmount + addedValue); } diff --git a/Assets/02.Scripts/Prop/Tycoon/TableSeat.cs b/Assets/02.Scripts/Prop/Tycoon/TableSeat.cs index 2bd64d765..8f651997b 100644 --- a/Assets/02.Scripts/Prop/Tycoon/TableSeat.cs +++ b/Assets/02.Scripts/Prop/Tycoon/TableSeat.cs @@ -32,7 +32,10 @@ namespace BlueWater.Tycoons public int TableNumber; [SerializeField] - private float _interactionHoldingTime = 3f; + private float _playerHoldingTime = 3f; + + [SerializeField] + private float _crewHoldingTime = 9f; private Sprite _fullBeerGlass; private Sprite _emptyBeerGlass; @@ -69,19 +72,13 @@ namespace BlueWater.Tycoons } if (IsCleaned) return; - - var holdingGauge = 0f; - if (HoldingElapsedTime > 0f) - { - holdingGauge = Mathf.Clamp(HoldingElapsedTime / _interactionHoldingTime, 0f, 1f); - } if (IsShowing) { - EventManager.InvokeHoldInteracting(holdingGauge); + EventManager.InvokeHoldInteracting(HoldingElapsedTime); } - if (HoldingElapsedTime > _interactionHoldingTime) + if (HoldingElapsedTime >= 1f) { if (_isCrewInteracting) { @@ -94,11 +91,11 @@ namespace BlueWater.Tycoons if (_isPlayerInteracting) { - HoldingElapsedTime += Time.deltaTime; + HoldingElapsedTime += Time.deltaTime / _playerHoldingTime; } if (_isCrewInteracting) { - HoldingElapsedTime += Time.deltaTime; + HoldingElapsedTime += Time.deltaTime / (_crewHoldingTime - TycoonManager.Instance.TycoonStatus.CleanerCleaningReduction); } if (!_isPlayerInteracting && !_isCrewInteracting) diff --git a/Assets/02.Scripts/Prop/Tycoon/Vomiting.cs b/Assets/02.Scripts/Prop/Tycoon/Vomiting.cs index d4941dd8d..f7d3565b9 100644 --- a/Assets/02.Scripts/Prop/Tycoon/Vomiting.cs +++ b/Assets/02.Scripts/Prop/Tycoon/Vomiting.cs @@ -11,7 +11,10 @@ namespace BlueWater.Tycoons public class Vomiting : InteractionFurniture, ICrewInteraction { [SerializeField] - private float _interactionHoldingTime = 3f; + private float _playerHoldingTime = 3f; + + [SerializeField] + private float _crewHoldingTime = 9f; private Sprite vomitingImage; private Coroutine _findCleanerCrewInstance; @@ -43,29 +46,23 @@ namespace BlueWater.Tycoons Destroy(); } - var holdingGauge = 0f; - if (HoldingElapsedTime > 0f) - { - holdingGauge = Mathf.Clamp(HoldingElapsedTime / _interactionHoldingTime, 0f, 1f); - } - if (IsShowing) { - EventManager.InvokeHoldInteracting(holdingGauge); + EventManager.InvokeHoldInteracting(HoldingElapsedTime); } - if (HoldingElapsedTime > _interactionHoldingTime) + if (HoldingElapsedTime >= 1f) { Destroy(); } if (_isPlayerInteracting) { - HoldingElapsedTime += Time.deltaTime; + HoldingElapsedTime += Time.deltaTime / _playerHoldingTime; } if (_isCrewInteracting) { - HoldingElapsedTime += Time.deltaTime; + HoldingElapsedTime += Time.deltaTime / (_crewHoldingTime - TycoonManager.Instance.TycoonStatus.CleanerCleaningReduction); } if (!_isPlayerInteracting && !_isCrewInteracting) diff --git a/Assets/02.Scripts/ScriptableObject/CardDataTable.asset b/Assets/02.Scripts/ScriptableObject/CardDataTable.asset index 26e523c13..7efad46dd 100644 --- a/Assets/02.Scripts/ScriptableObject/CardDataTable.asset +++ b/Assets/02.Scripts/ScriptableObject/CardDataTable.asset @@ -13,149 +13,347 @@ MonoBehaviour: m_Name: CardDataTable m_EditorClassIdentifier: _serializedDataList: - - k__BackingField: HeartPlus + - k__BackingField: HeartSlotPlus k__BackingField: - k__BackingField: HeartPlus - k__BackingField: HeartPlusImg + k__BackingField: HeartSlotPlus k__BackingField: "\uD558\uD2B8 \uD55C\uCE78 \uCD94\uAC00" - k__BackingField: 3 - k__BackingField: 10 + k__BackingField: 5 + k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 700 k__BackingField: {fileID: 21300000, guid: d0b6eba4ac33ece44bccd11e57e415e8, type: 3} - - k__BackingField: HeartHeal + - k__BackingField: HeartRecovery k__BackingField: - k__BackingField: HeartHeal - k__BackingField: HeartHealImg + k__BackingField: HeartRecovery k__BackingField: "\uD558\uD2B8 \uD55C\uCE78 \uD68C\uBCF5" k__BackingField: 10 k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 k__BackingField: {fileID: 21300000, guid: 466393baecf741d449a05f3b63317368, type: 3} - - k__BackingField: HeartAllHeal + - k__BackingField: FullHeartRecovery k__BackingField: - k__BackingField: HeartAllHeal - k__BackingField: HeartAllHealImg + k__BackingField: FullHeartRecovery k__BackingField: "\uD558\uD2B8 \uC804\uCCB4 \uD68C\uBCF5" k__BackingField: 0 k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 k__BackingField: {fileID: 21300000, guid: 7579ee4fd1c5ed34d939eeef18c625be, type: 3} - k__BackingField: AddLiquidB k__BackingField: k__BackingField: AddLiquidB - k__BackingField: LiquidBImg k__BackingField: "B \uC220\uC744 4000ml \uCD94\uAC00" k__BackingField: 0 - k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 k__BackingField: {fileID: 21300000, guid: b1b88ceef90370a4295ed9f58140349a, type: 3} - k__BackingField: AddLiquidC k__BackingField: k__BackingField: AddLiquidC - k__BackingField: LiquidCImg k__BackingField: "C \uC220\uC744 4000ml \uCD94\uAC00" k__BackingField: 0 - k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 k__BackingField: {fileID: 21300000, guid: d9dbcf5d304083541a40ff4b3cb9048f, type: 3} - k__BackingField: AddLiquidD k__BackingField: k__BackingField: AddLiquidD - k__BackingField: LiquidDImg k__BackingField: "D \uC220\uC744 4000ml \uCD94\uAC00" k__BackingField: 0 - k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 k__BackingField: {fileID: 21300000, guid: 45e4676179dde7e42bb09b8d94935f34, type: 3} - k__BackingField: AddLiquidE k__BackingField: k__BackingField: AddLiquidE - k__BackingField: LiquidEImg k__BackingField: "E \uC220\uC744 4000ml \uCD94\uAC00" k__BackingField: 0 - k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 k__BackingField: {fileID: 21300000, guid: 58964556f1712324b9d9ac4515f965aa, type: 3} - k__BackingField: AddGarnish1 k__BackingField: k__BackingField: AddGarnish1 - k__BackingField: Garnish1Img k__BackingField: "1\uBC88 \uAC00\uB2C8\uC26C\uB97C 4000ml \uCD94\uAC00" k__BackingField: 0 - k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 k__BackingField: {fileID: 21300000, guid: 4708f67b3712d4743af7cb6092edf3c7, type: 3} - k__BackingField: AddGarnish2 k__BackingField: k__BackingField: AddGarnish2 - k__BackingField: Garnish2Img k__BackingField: "2\uBC88 \uAC00\uB2C8\uC26C\uB97C 4000ml \uCD94\uAC00" k__BackingField: 0 - k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 k__BackingField: {fileID: 21300000, guid: 70238c4151e9085429d18be7f6f8a2ae, type: 3} - - k__BackingField: AddAllLiquid + - k__BackingField: AllLiquidAdd k__BackingField: - k__BackingField: AddAllLiquid - k__BackingField: LiquidAllHealImg + k__BackingField: AllLiquidAdd k__BackingField: "\uC804\uCCB4 \uC7AC\uB8CC 1000ml \uCD94\uAC00" k__BackingField: 0 - k__BackingField: 10 + k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 k__BackingField: {fileID: 21300000, guid: 284734c4624b35b499152e028f90e6f6, type: 3} - - k__BackingField: ServerNpc + - k__BackingField: ServerNpcAdd k__BackingField: - k__BackingField: ServerNpc - k__BackingField: ServerNpcImg + k__BackingField: ServerNpcAdd k__BackingField: "\uC11C\uBE59 \uC885\uC5C5\uC6D0 \uCD94\uAC00" k__BackingField: 5 k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 1000 k__BackingField: {fileID: 21300000, guid: 21ac4e0eced0c8c4894e7e26f5d13779, type: 3} - - k__BackingField: CleanerNpc + - k__BackingField: CleanerNpcAdd k__BackingField: - k__BackingField: CleanerNpc - k__BackingField: CleanerNpcImg + k__BackingField: CleanerNpcAdd k__BackingField: "\uCCAD\uC18C \uC885\uC5C5\uC6D0 \uCD94\uAC00" k__BackingField: 5 k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 1000 k__BackingField: {fileID: 21300000, guid: 4d0b5b10aaf1d26438a2f013882ad1f6, type: 3} - - k__BackingField: ChefNpc + - k__BackingField: BartenderNpcAdd k__BackingField: - k__BackingField: ChefNpc - k__BackingField: ChefNpcImg + k__BackingField: BartenderNpcAdd k__BackingField: "\uBC14\uD150\uD130 \uC885\uC5C5\uC6D0 \uCD94\uAC00" k__BackingField: 5 k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 1000 k__BackingField: {fileID: 21300000, guid: 02ff51bea8718c447bea8470257b6782, type: 3} - - k__BackingField: SpeedUp + - k__BackingField: SpeedBoost k__BackingField: - k__BackingField: SpeedUp - k__BackingField: SpeedUpImg + k__BackingField: SpeedBoost k__BackingField: "\uD50C\uB808\uC774\uC5B4 \uC774\uB3D9 \uC18D\uB3C4 - 5% \uC99D\uAC00" + 10% \uC99D\uAC00" k__BackingField: 10 k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 500 k__BackingField: {fileID: 21300000, guid: 8de251475e5862f4b96ba45c2de88bd5, type: 3} - - k__BackingField: ExpGetUp + - k__BackingField: ExpBoost k__BackingField: - k__BackingField: ExpGetUp - k__BackingField: ExpGetUpImg + k__BackingField: ExpBoost k__BackingField: "\uACBD\uD5D8\uCE58 \uD68D\uB4DD 20% \uC99D\uAC00" k__BackingField: 10 - k__BackingField: 5 + k__BackingField: 4 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 500 k__BackingField: {fileID: 21300000, guid: 400a47b8bcd0a1e4b823160ce9f40232, type: 3} - - k__BackingField: GoldGetUp + - k__BackingField: GoldBoost k__BackingField: - k__BackingField: GoldGetUp - k__BackingField: GoldGetUpImg + k__BackingField: GoldBoost k__BackingField: "\uACE8\uB4DC \uD68D\uB4DD 20% \uC99D\uAC00" k__BackingField: 10 - k__BackingField: 5 + k__BackingField: 4 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 500 k__BackingField: {fileID: 21300000, guid: 121ed7da4e55d2a43ba798a00f95a474, type: 3} - - k__BackingField: CleanUp + - k__BackingField: AllCleanUp k__BackingField: - k__BackingField: CleanUp - k__BackingField: CleanUpImgImg + k__BackingField: AllCleanUp k__BackingField: "\uB808\uC2A4\uD1A0\uB791 \uD55C\uBC88\uC5D0 \uCCAD\uC18C" k__BackingField: 0 - k__BackingField: 5 + k__BackingField: 4 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 k__BackingField: {fileID: 21300000, guid: 1acb09a93fb040241a17107a288d6f54, type: 3} - k__BackingField: GaugeReset k__BackingField: k__BackingField: GaugeReset - k__BackingField: GaugeResetImg k__BackingField: "\uBAA8\uB4E0 \uC190\uB2D8\uB4E4\uC758 \uAE30\uB2E4\uB9BC \uCD08\uAE30\uD654" k__BackingField: 0 - k__BackingField: 10 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 k__BackingField: {fileID: 21300000, guid: 1d6e6fd96eb499f42b79f04f3510af87, type: 3} + - k__BackingField: DashCooldownReduction + k__BackingField: + k__BackingField: DashCooldownReduction + k__BackingField: "\uB300\uC2DC \uCFE8\uD0C0\uC784 \uAC10\uC18C" + k__BackingField: 5 + k__BackingField: 4 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 500 + k__BackingField: {fileID: 0} + - k__BackingField: TipBoost + k__BackingField: + k__BackingField: TipBoost + k__BackingField: "\uD301 \uD68D\uB4DD\uB7C9 20% \uC99D\uAC00" + k__BackingField: 5 + k__BackingField: 4 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 600 + k__BackingField: {fileID: 0} + - k__BackingField: EndGoldBoost + k__BackingField: + k__BackingField: EndGoldBoost + k__BackingField: "\uAC8C\uC784 \uC624\uBC84 \uD6C4 \uD68D\uB4DD + \uACE8\uB4DC 10% \uC99D\uAC00" + k__BackingField: 10 + k__BackingField: 4 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: {fileID: 0} + - k__BackingField: AllCustomerPurification + k__BackingField: + k__BackingField: AllCustomerPurification + k__BackingField: "\uC190\uB2D8\uB4E4 \uC804\uBD80 \uC815\uD654" + k__BackingField: 0 + k__BackingField: 4 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: 0 + k__BackingField: {fileID: 0} + - k__BackingField: GaugeTimeUp + k__BackingField: + k__BackingField: GaugeTimeUp + k__BackingField: "\uC190\uB2D8\uB4E4\uC758 \uAE30\uB2E4\uB9BC \uC2DC\uAC04 + 3\uCD08 \uC99D\uAC00" + k__BackingField: 5 + k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 1000 + k__BackingField: {fileID: 0} + - k__BackingField: ServerNpcUpgrade + k__BackingField: + k__BackingField: ServerNpcUpgrade + k__BackingField: "\uC11C\uBE59 \uC885\uC5C5\uC6D0 \uC5C5\uADF8\uB808\uC774\uB4DC + (\uD301 \uD68D\uB4DD \uBE44\uC728 \uC99D\uAC00)" + k__BackingField: 5 + k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 300 + k__BackingField: {fileID: 0} + - k__BackingField: CleanerNpcUpgrade + k__BackingField: + k__BackingField: CleanerNpcUpgrade + k__BackingField: "\uCCAD\uC18C \uC885\uC5C5\uC6D0 \uC5C5\uADF8\uB808\uC774\uB4DC + (\uCCAD\uC18C \uC18D\uB3C4 \uC99D\uAC00)" + k__BackingField: 5 + k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 300 + k__BackingField: {fileID: 0} + - k__BackingField: BartenderNpcUpgrade + k__BackingField: + k__BackingField: BartenderNpcUpgrade + k__BackingField: "\uBC14\uD150\uD130 \uC885\uC5C5\uC6D0 \uC5C5\uADF8\uB808\uC774\uB4DC + (\uC220 \uC81C\uC870 \uC18D\uB3C4 \uC99D\uAC00)" + k__BackingField: 5 + k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 300 + k__BackingField: {fileID: 0} + - k__BackingField: DoubleServing + k__BackingField: + k__BackingField: DoubleServing + k__BackingField: "\uD50C\uB808\uC774\uC5B4\uAC00 \uC591\uC190\uC5D0 + \uC11C\uBE59 \uAC00\uB2A5" + k__BackingField: 1 + k__BackingField: 2 + k__BackingField: 1 + k__BackingField: 1 + k__BackingField: 1000 + k__BackingField: {fileID: 0} + - k__BackingField: RandomChange + k__BackingField: + k__BackingField: RandomChange + k__BackingField: "\uD734\uC9C0\uD1B5\uC744 \uB79C\uB364 \uC81C\uC870\uD1B5\uC73C\uB85C + \uBCC0\uACBD" + k__BackingField: 1 + k__BackingField: 2 + k__BackingField: 1 + k__BackingField: 1 + k__BackingField: 1000 + k__BackingField: {fileID: 0} + - k__BackingField: PassiveMakingBonus + k__BackingField: + k__BackingField: PassiveMakingBonus + k__BackingField: "\uC220 \uC81C\uC870 \uC131\uACF5 \uC2DC \uACE8\uB4DC + \uCD94\uAC00 \uD68D\uB4DD" + k__BackingField: 1 + k__BackingField: 2 + k__BackingField: 1 + k__BackingField: 1 + k__BackingField: 800 + k__BackingField: {fileID: 0} + - k__BackingField: PassiveServingBonus + k__BackingField: + k__BackingField: PassiveServingBonus + k__BackingField: "\uC11C\uBE59 3\uBC88 \uC131\uACF5 \uC2DC \uD558\uD2B8 + \uBC18\uAC1C \uD68C\uBCF5" + k__BackingField: 1 + k__BackingField: 2 + k__BackingField: 1 + k__BackingField: 1 + k__BackingField: 800 + k__BackingField: {fileID: 0} + - k__BackingField: PassiveCleaningBonus + k__BackingField: + k__BackingField: PassiveCleaningBonus + k__BackingField: "\uCCAD\uC18C 5\uBC88 \uC131\uACF5 \uC2DC \uBC14\uD150\uB354 + \uC81C\uC870 \uC18D\uB3C4 \uC99D\uAC00" + k__BackingField: 1 + k__BackingField: 2 + k__BackingField: 1 + k__BackingField: 1 + k__BackingField: 800 + k__BackingField: {fileID: 0} + - k__BackingField: BarrelAutoSupply + k__BackingField: + k__BackingField: BarrelAutoSupply + k__BackingField: "\uBAA8\uB4E0 \uC220 \uC7AC\uB8CC \uC790\uB3D9 + \uCDA9\uCC9C (1\uCD08\uC5D0 N\uB9AC\uD130)" + k__BackingField: 10 + k__BackingField: 5 + k__BackingField: 0 + k__BackingField: 1 + k__BackingField: 1500 + k__BackingField: {fileID: 0} + - k__BackingField: GoldAutoGain + k__BackingField: + k__BackingField: GoldAutoGain + k__BackingField: "\uC790\uB3D9\uC73C\uB85C 60\uCD08\uB9C8\uB2E4 + \uB3C8\uD1B5\uC758 \uACE8\uB4DC \uD68C\uC218" + k__BackingField: 1 + k__BackingField: 2 + k__BackingField: 1 + k__BackingField: 1 + k__BackingField: 900 + k__BackingField: {fileID: 0} diff --git a/Assets/02.Scripts/ScriptableObject/LevelDataTable.asset b/Assets/02.Scripts/ScriptableObject/LevelDataTable.asset index 3141f5e05..851354018 100644 --- a/Assets/02.Scripts/ScriptableObject/LevelDataTable.asset +++ b/Assets/02.Scripts/ScriptableObject/LevelDataTable.asset @@ -24,6 +24,8 @@ MonoBehaviour: k__BackingField: 20 k__BackingField: 10 k__BackingField: Upgrade0 + k__BackingField: 0 + k__BackingField: 50 - k__BackingField: 2 k__BackingField: k__BackingField: 2 @@ -35,6 +37,8 @@ MonoBehaviour: k__BackingField: 20 k__BackingField: 10 k__BackingField: + k__BackingField: 0 + k__BackingField: 100 - k__BackingField: 3 k__BackingField: k__BackingField: 3 @@ -46,6 +50,8 @@ MonoBehaviour: k__BackingField: 20 k__BackingField: 10 k__BackingField: + k__BackingField: 0 + k__BackingField: 150 - k__BackingField: 4 k__BackingField: k__BackingField: 4 @@ -57,6 +63,8 @@ MonoBehaviour: k__BackingField: 20 k__BackingField: 10 k__BackingField: + k__BackingField: 0 + k__BackingField: 200 - k__BackingField: 5 k__BackingField: k__BackingField: 5 @@ -68,6 +76,8 @@ MonoBehaviour: k__BackingField: 20 k__BackingField: 10 k__BackingField: Upgrade1 + k__BackingField: 1 + k__BackingField: 500 - k__BackingField: 6 k__BackingField: k__BackingField: 6 @@ -79,6 +89,8 @@ MonoBehaviour: k__BackingField: 18 k__BackingField: 10 k__BackingField: + k__BackingField: 0 + k__BackingField: 250 - k__BackingField: 7 k__BackingField: k__BackingField: 7 @@ -90,6 +102,8 @@ MonoBehaviour: k__BackingField: 18 k__BackingField: 10 k__BackingField: + k__BackingField: 0 + k__BackingField: 300 - k__BackingField: 8 k__BackingField: k__BackingField: 8 @@ -101,6 +115,8 @@ MonoBehaviour: k__BackingField: 18 k__BackingField: 10 k__BackingField: + k__BackingField: 0 + k__BackingField: 350 - k__BackingField: 9 k__BackingField: k__BackingField: 9 @@ -112,6 +128,8 @@ MonoBehaviour: k__BackingField: 18 k__BackingField: 10 k__BackingField: + k__BackingField: 0 + k__BackingField: 400 - k__BackingField: 10 k__BackingField: k__BackingField: 10 @@ -123,6 +141,8 @@ MonoBehaviour: k__BackingField: 18 k__BackingField: 10 k__BackingField: Upgrade2 + k__BackingField: 1 + k__BackingField: 1000 - k__BackingField: 11 k__BackingField: k__BackingField: 11 @@ -134,6 +154,8 @@ MonoBehaviour: k__BackingField: 16 k__BackingField: 8 k__BackingField: + k__BackingField: 0 + k__BackingField: 450 - k__BackingField: 12 k__BackingField: k__BackingField: 12 @@ -145,6 +167,8 @@ MonoBehaviour: k__BackingField: 16 k__BackingField: 8 k__BackingField: + k__BackingField: 0 + k__BackingField: 500 - k__BackingField: 13 k__BackingField: k__BackingField: 13 @@ -156,6 +180,8 @@ MonoBehaviour: k__BackingField: 16 k__BackingField: 8 k__BackingField: + k__BackingField: 0 + k__BackingField: 550 - k__BackingField: 14 k__BackingField: k__BackingField: 14 @@ -167,6 +193,8 @@ MonoBehaviour: k__BackingField: 16 k__BackingField: 8 k__BackingField: + k__BackingField: 0 + k__BackingField: 600 - k__BackingField: 15 k__BackingField: k__BackingField: 15 @@ -178,6 +206,8 @@ MonoBehaviour: k__BackingField: 16 k__BackingField: 8 k__BackingField: Upgrade3 + k__BackingField: 1 + k__BackingField: 1500 - k__BackingField: 16 k__BackingField: k__BackingField: 16 @@ -189,6 +219,8 @@ MonoBehaviour: k__BackingField: 14 k__BackingField: 8 k__BackingField: + k__BackingField: 0 + k__BackingField: 650 - k__BackingField: 17 k__BackingField: k__BackingField: 17 @@ -200,6 +232,8 @@ MonoBehaviour: k__BackingField: 14 k__BackingField: 8 k__BackingField: + k__BackingField: 0 + k__BackingField: 700 - k__BackingField: 18 k__BackingField: k__BackingField: 18 @@ -211,6 +245,8 @@ MonoBehaviour: k__BackingField: 14 k__BackingField: 8 k__BackingField: + k__BackingField: 0 + k__BackingField: 750 - k__BackingField: 19 k__BackingField: k__BackingField: 19 @@ -222,6 +258,8 @@ MonoBehaviour: k__BackingField: 14 k__BackingField: 8 k__BackingField: + k__BackingField: 0 + k__BackingField: 800 - k__BackingField: 20 k__BackingField: k__BackingField: 20 @@ -233,6 +271,8 @@ MonoBehaviour: k__BackingField: 14 k__BackingField: 8 k__BackingField: Upgrade4 + k__BackingField: 1 + k__BackingField: 2000 - k__BackingField: 21 k__BackingField: k__BackingField: 21 @@ -244,6 +284,8 @@ MonoBehaviour: k__BackingField: 12 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 850 - k__BackingField: 22 k__BackingField: k__BackingField: 22 @@ -255,6 +297,8 @@ MonoBehaviour: k__BackingField: 12 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 900 - k__BackingField: 23 k__BackingField: k__BackingField: 23 @@ -266,6 +310,8 @@ MonoBehaviour: k__BackingField: 12 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 950 - k__BackingField: 24 k__BackingField: k__BackingField: 24 @@ -277,6 +323,8 @@ MonoBehaviour: k__BackingField: 12 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 1000 - k__BackingField: 25 k__BackingField: k__BackingField: 25 @@ -288,6 +336,8 @@ MonoBehaviour: k__BackingField: 12 k__BackingField: 6 k__BackingField: Upgrade5 + k__BackingField: 1 + k__BackingField: 3000 - k__BackingField: 26 k__BackingField: k__BackingField: 26 @@ -299,6 +349,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 1100 - k__BackingField: 27 k__BackingField: k__BackingField: 27 @@ -310,6 +362,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 1200 - k__BackingField: 28 k__BackingField: k__BackingField: 28 @@ -321,6 +375,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 1300 - k__BackingField: 29 k__BackingField: k__BackingField: 29 @@ -332,6 +388,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 1400 - k__BackingField: 30 k__BackingField: k__BackingField: 30 @@ -343,6 +401,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: Upgrade6 + k__BackingField: 1 + k__BackingField: 4000 - k__BackingField: 31 k__BackingField: k__BackingField: 31 @@ -354,6 +414,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 1500 - k__BackingField: 32 k__BackingField: k__BackingField: 32 @@ -365,6 +427,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 1600 - k__BackingField: 33 k__BackingField: k__BackingField: 33 @@ -376,6 +440,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 1700 - k__BackingField: 34 k__BackingField: k__BackingField: 34 @@ -387,6 +453,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 1800 - k__BackingField: 35 k__BackingField: k__BackingField: 35 @@ -398,6 +466,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 1 + k__BackingField: 5000 - k__BackingField: 36 k__BackingField: k__BackingField: 36 @@ -409,6 +479,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 1900 - k__BackingField: 37 k__BackingField: k__BackingField: 37 @@ -420,6 +492,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 2000 - k__BackingField: 38 k__BackingField: k__BackingField: 38 @@ -431,6 +505,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 2100 - k__BackingField: 39 k__BackingField: k__BackingField: 39 @@ -442,6 +518,8 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 0 + k__BackingField: 2200 - k__BackingField: 40 k__BackingField: k__BackingField: 40 @@ -453,3 +531,135 @@ MonoBehaviour: k__BackingField: 10 k__BackingField: 6 k__BackingField: + k__BackingField: 1 + k__BackingField: 2300 + - k__BackingField: 41 + k__BackingField: + k__BackingField: 41 + k__BackingField: 2 + k__BackingField: 100 + k__BackingField: 100 + k__BackingField: 900 + k__BackingField: 10 + k__BackingField: 10 + k__BackingField: 6 + k__BackingField: + k__BackingField: 0 + k__BackingField: 2400 + - k__BackingField: 42 + k__BackingField: + k__BackingField: 42 + k__BackingField: 2 + k__BackingField: 100 + k__BackingField: 100 + k__BackingField: 900 + k__BackingField: 10 + k__BackingField: 10 + k__BackingField: 6 + k__BackingField: + k__BackingField: 0 + k__BackingField: 2500 + - k__BackingField: 43 + k__BackingField: + k__BackingField: 43 + k__BackingField: 2 + k__BackingField: 100 + k__BackingField: 100 + k__BackingField: 900 + k__BackingField: 10 + k__BackingField: 10 + k__BackingField: 6 + k__BackingField: + k__BackingField: 0 + k__BackingField: 2600 + - k__BackingField: 44 + k__BackingField: + k__BackingField: 44 + k__BackingField: 2 + k__BackingField: 100 + k__BackingField: 100 + k__BackingField: 900 + k__BackingField: 10 + k__BackingField: 10 + k__BackingField: 6 + k__BackingField: + k__BackingField: 0 + k__BackingField: 2700 + - k__BackingField: 45 + k__BackingField: + k__BackingField: 45 + k__BackingField: 2 + k__BackingField: 100 + k__BackingField: 100 + k__BackingField: 900 + k__BackingField: 10 + k__BackingField: 10 + k__BackingField: 6 + k__BackingField: + k__BackingField: 1 + k__BackingField: 6000 + - k__BackingField: 46 + k__BackingField: + k__BackingField: 46 + k__BackingField: 2 + k__BackingField: 100 + k__BackingField: 100 + k__BackingField: 900 + k__BackingField: 10 + k__BackingField: 10 + k__BackingField: 6 + k__BackingField: + k__BackingField: 0 + k__BackingField: 2800 + - k__BackingField: 47 + k__BackingField: + k__BackingField: 47 + k__BackingField: 2 + k__BackingField: 100 + k__BackingField: 100 + k__BackingField: 900 + k__BackingField: 10 + k__BackingField: 10 + k__BackingField: 6 + k__BackingField: + k__BackingField: 0 + k__BackingField: 2900 + - k__BackingField: 48 + k__BackingField: + k__BackingField: 48 + k__BackingField: 2 + k__BackingField: 100 + k__BackingField: 100 + k__BackingField: 900 + k__BackingField: 10 + k__BackingField: 10 + k__BackingField: 6 + k__BackingField: + k__BackingField: 0 + k__BackingField: 3000 + - k__BackingField: 49 + k__BackingField: + k__BackingField: 49 + k__BackingField: 2 + k__BackingField: 100 + k__BackingField: 100 + k__BackingField: 900 + k__BackingField: 10 + k__BackingField: 10 + k__BackingField: 6 + k__BackingField: + k__BackingField: 0 + k__BackingField: 4000 + - k__BackingField: 50 + k__BackingField: + k__BackingField: 50 + k__BackingField: 2 + k__BackingField: 100 + k__BackingField: 100 + k__BackingField: 900 + k__BackingField: 10 + k__BackingField: 10 + k__BackingField: 6 + k__BackingField: + k__BackingField: 1 + k__BackingField: 7000 diff --git a/Assets/02.Scripts/Tycoon/CardData.cs b/Assets/02.Scripts/Tycoon/CardData.cs index aaa8ac81c..dd94ad0c3 100644 --- a/Assets/02.Scripts/Tycoon/CardData.cs +++ b/Assets/02.Scripts/Tycoon/CardData.cs @@ -1,12 +1,22 @@ using System; using BlueWater.Interfaces; -using Newtonsoft.Json; using Sirenix.OdinInspector; using UnityEngine; namespace BlueWater -{ - +{ + public enum CardType + { + Normal = 0, + Passive = 1 + } + + public enum ShopType + { + None = 0, + Active = 1 + } + [Serializable] public class CardData : IIdx { @@ -14,9 +24,6 @@ namespace BlueWater [field: SerializeField, Tooltip("Idx"), BoxGroup("Json 데이터 영역")] public string Idx { get; set; } - [field: SerializeField, Tooltip("이미지"), BoxGroup("Json 데이터 영역")] - public string Img { get; set; } - [field: SerializeField, Tooltip("Text"), BoxGroup("Json 데이터 영역")] public string ScriptText { get; set; } @@ -26,9 +33,17 @@ namespace BlueWater [field: SerializeField, Tooltip("비율(%)"), BoxGroup("Json 데이터 영역")] public int Ratio { get; set; } + [field: SerializeField, Tooltip("카드 종류"), BoxGroup("Json 데이터 영역")] + public CardType Type { get; set; } + + [field: SerializeField, Tooltip("상점에서 나오는 여부"), BoxGroup("Json 데이터 영역")] + public ShopType Shop { get; set; } + + [field: SerializeField, Tooltip("상점에서의 가격"), BoxGroup("Json 데이터 영역")] + public int Price { get; set; } + [BoxGroup("직접 추가하는 영역")] [field: SerializeField, BoxGroup("직접 추가하는 영역")] public Sprite Sprite { get; set; } - } } \ No newline at end of file diff --git a/Assets/02.Scripts/Tycoon/CardDataSo.cs b/Assets/02.Scripts/Tycoon/CardDataSo.cs index df0124447..1a401b713 100644 --- a/Assets/02.Scripts/Tycoon/CardDataSo.cs +++ b/Assets/02.Scripts/Tycoon/CardDataSo.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Generic; using BlueWater.Items; -using BlueWater.Tycoons; -using UnityEditor.Rendering; using UnityEngine; using Random = UnityEngine.Random; @@ -86,5 +84,10 @@ namespace BlueWater return _selectedCard.TryGetValue(cardData.Idx, out var value) && cardData.Max != 0 && value >= cardData.Max; } + // 카드가 처음 선택되었는지 확인할 때 - 0값이면 true를 리턴 + public bool CardFirstCheck(string idx) + { + return _datas.ContainsKey(idx) && !_selectedCard.ContainsKey(idx); + } } } \ No newline at end of file diff --git a/Assets/02.Scripts/Tycoon/LevelData.cs b/Assets/02.Scripts/Tycoon/LevelData.cs index 4d79969a7..0e9525fbc 100644 --- a/Assets/02.Scripts/Tycoon/LevelData.cs +++ b/Assets/02.Scripts/Tycoon/LevelData.cs @@ -1,11 +1,15 @@ using System; using BlueWater.Interfaces; -using Newtonsoft.Json; using Sirenix.OdinInspector; using UnityEngine; namespace BlueWater { + public enum RewardBoxType + { + Normal = 0, + Rare = 1 + } [Serializable] public class LevelData : IIdx @@ -14,29 +18,34 @@ namespace BlueWater [field: SerializeField, Tooltip("레벨"), BoxGroup("Json 데이터 영역")] public string Idx { get; set; } - [field: SerializeField, Tooltip("이름"), BoxGroup("Json 데이터 영역")] + [field: SerializeField, Tooltip("손님 재입장 시간"), BoxGroup("Json 데이터 영역")] public int CustomerRespawn { get; set; } - [field: SerializeField, Tooltip("아이템 종류"), BoxGroup("Json 데이터 영역")] + [field: SerializeField, Tooltip("기본 골드량"), BoxGroup("Json 데이터 영역")] public int Gold { get; set; } - [field: SerializeField, Tooltip("재료 종류"), BoxGroup("Json 데이터 영역")] + [field: SerializeField, Tooltip("기본 경험치량"), BoxGroup("Json 데이터 영역")] public int Exp { get; set; } - [field: SerializeField, Tooltip("아이템 품질"), BoxGroup("Json 데이터 영역")] + [field: SerializeField, Tooltip("레벨업 요구 경험치량"), BoxGroup("Json 데이터 영역")] public int RequiredExp { get; set; } - [field: SerializeField, Tooltip("가격"), BoxGroup("Json 데이터 영역")] + [field: SerializeField, Tooltip("얌전히 기다리는 시간"), BoxGroup("Json 데이터 영역")] public int WaitTime { get; set; } - [field: SerializeField, Tooltip("무게"), BoxGroup("Json 데이터 영역")] + [field: SerializeField, Tooltip("재촉하는 시간 (게이지 활성화)"), BoxGroup("Json 데이터 영역")] public int HurryTime { get; set; } - [field: SerializeField, Tooltip("설명"), BoxGroup("Json 데이터 영역")] + [field: SerializeField, Tooltip("먹는 시간"), BoxGroup("Json 데이터 영역")] public int EatingTime { get; set; } - [field: SerializeField, Tooltip("설명"), BoxGroup("Json 데이터 영역")] + [field: SerializeField, Tooltip("업그레이드 목록"), BoxGroup("Json 데이터 영역")] public string OpenUpgrade { get; set; } + [field: SerializeField, Tooltip("보물상자 종류"), BoxGroup("Json 데이터 영역")] + public RewardBoxType RewardBoxType { get; set; } + + [field: SerializeField, Tooltip("보물상자 가격"), BoxGroup("Json 데이터 영역")] + public int RewardBoxPrice { get; set; } } } \ No newline at end of file diff --git a/Assets/02.Scripts/Tycoon/TycoonStatus.cs b/Assets/02.Scripts/Tycoon/TycoonStatus.cs index 8730d628c..d2e126daf 100644 --- a/Assets/02.Scripts/Tycoon/TycoonStatus.cs +++ b/Assets/02.Scripts/Tycoon/TycoonStatus.cs @@ -233,17 +233,89 @@ namespace BlueWater.Tycoons } } + [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 void Initialize() { MaxLevel = int.Parse(TycoonManager.Instance.LevelDataSo.GetData().Last().Value.Idx); CurrentLevel = 1; CurrentGold = 0; CurrentExp = 0; - ExpMultiplier = 1; - GoldMultiplier = 1; + 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 = 1f; + EndGoldMultiplier = 1f; + _customerHurryTimeIncrease = 0; + BarrelAutoIncrease = 0; + ServerTipMultiplier = 1f; + CleanerCleaningReduction = 0; + BartenderMakingReduction = 0; } private void LevelUp() diff --git a/Assets/02.Scripts/Ui/Tycoon/TycoonSelectCard.cs b/Assets/02.Scripts/Ui/Tycoon/TycoonSelectCard.cs index e4a76a73b..7037e3311 100644 --- a/Assets/02.Scripts/Ui/Tycoon/TycoonSelectCard.cs +++ b/Assets/02.Scripts/Ui/Tycoon/TycoonSelectCard.cs @@ -27,7 +27,8 @@ namespace BlueWater.Uis private TycoonCard _tycoonCard03Componet; private LevelData _lvData; - + private TycoonManager _tycoonManager; + private TycoonStatus _tycoonStatus; [field: SerializeField, CLabel("업그레이드_스크립트")] private GameObject _upgradePopup; @@ -44,6 +45,8 @@ namespace BlueWater.Uis void Start() { uiCamera = TycoonCameraManager.Instance.UiCamera; + _tycoonManager = TycoonManager.Instance; + _tycoonStatus = _tycoonManager.TycoonStatus; } private void OnDestroy() @@ -117,15 +120,15 @@ namespace BlueWater.Uis var card01Key = "NULL VAL"; do { - card = TycoonManager.Instance.CardDataSo.GetRandCardData(); - card = TycoonManager.Instance.CardDataSo.SubstitutionLiquid(card, _lvData); + card = _tycoonManager.CardDataSo.GetRandCardData(); + card = _tycoonManager.CardDataSo.SubstitutionLiquid(card, _lvData); if (card != null) { card01Key = card.Idx; } - } while (card == null || TycoonManager.Instance.CardDataSo.CardMaxCheck(card)); + } while (card == null || _tycoonManager.CardDataSo.CardMaxCheck(card)); _tycoonCard01Componet.SetCard(card01Key); @@ -133,29 +136,29 @@ namespace BlueWater.Uis var card02Key = "NULL VAL"; do { - card = TycoonManager.Instance.CardDataSo.GetRandCardData(); - card = TycoonManager.Instance.CardDataSo.SubstitutionLiquid(card, _lvData); + card = _tycoonManager.CardDataSo.GetRandCardData(); + card = _tycoonManager.CardDataSo.SubstitutionLiquid(card, _lvData); if (card != null) { card02Key = card.Idx; } - } while (card == null || TycoonManager.Instance.CardDataSo.CardMaxCheck(card) || card02Key.Equals(card01Key)); + } while (card == null || _tycoonManager.CardDataSo.CardMaxCheck(card) || card02Key.Equals(card01Key)); _tycoonCard02Componet.SetCard(card02Key); var card03Key = "NULL VAL"; do { - card = TycoonManager.Instance.CardDataSo.GetRandCardData(); - card = TycoonManager.Instance.CardDataSo.SubstitutionLiquid(card, _lvData); + card = _tycoonManager.CardDataSo.GetRandCardData(); + card = _tycoonManager.CardDataSo.SubstitutionLiquid(card, _lvData); if (card != null) { card03Key = card.Idx; } - } while (card == null || TycoonManager.Instance.CardDataSo.CardMaxCheck(card) || card03Key.Equals(card01Key) || card03Key.Equals(card02Key)); + } while (card == null || _tycoonManager.CardDataSo.CardMaxCheck(card) || card03Key.Equals(card01Key) || card03Key.Equals(card02Key)); _tycoonCard03Componet.SetCard(card03Key); //------------- @@ -177,42 +180,104 @@ namespace BlueWater.Uis { switch (currTycoonCard.CardDataForIdx.Idx) //탐색 후 행동... { - case "HeartPlus": - TycoonManager.Instance.TycoonStatus.MaxPlayerHealth += 2; break; - case "HeartHeal": - TycoonManager.Instance.TycoonStatus.CurrentPlayerHealth += 2; break; - case "HeartAllHeal": - TycoonManager.Instance.TycoonStatus.CurrentPlayerHealth = TycoonManager.Instance.TycoonStatus.MaxPlayerHealth; break; + case "HeartSlotPlus": + _tycoonStatus.MaxPlayerHealth += 2; + break; + case "HeartRecovery": + _tycoonStatus.CurrentPlayerHealth += 2; + break; + case "FullHeartRecovery": + _tycoonStatus.CurrentPlayerHealth = _tycoonStatus.MaxPlayerHealth; + break; case "AddLiquidB": - TycoonManager.Instance.TycoonStatus.CurrentLiquidAmountB += 4000; break; + _tycoonStatus.CurrentLiquidAmountB += 4000; + break; case "AddLiquidC": - TycoonManager.Instance.TycoonStatus.CurrentLiquidAmountC += 4000; break; + _tycoonStatus.CurrentLiquidAmountC += 4000; + break; case "AddLiquidD": - TycoonManager.Instance.TycoonStatus.CurrentLiquidAmountD += 4000; break; + _tycoonStatus.CurrentLiquidAmountD += 4000; + break; case "AddLiquidE": - TycoonManager.Instance.TycoonStatus.CurrentLiquidAmountE += 4000; break; + _tycoonStatus.CurrentLiquidAmountE += 4000; + break; case "AddGarnish1": - TycoonManager.Instance.TycoonStatus.CurrentGarnishAmount1 += 4000; break; + _tycoonStatus.CurrentGarnishAmount1 += 4000; + break; case "AddGarnish2": - TycoonManager.Instance.TycoonStatus.CurrentGarnishAmount2 += 4000; break; - case "AddAllLiquid": - EventManager.InvokeAddBarrels(1000); break; - case "ServerNpc": - EventManager.InvokeCreateServerCrew(); break; - case "CleanerNpc": - EventManager.InvokeCreateCleanerCrew(); break; - case "ChefNpc": - EventManager.InvokeCreateBartenderCrew(); break; - case "SpeedUp": - TycoonManager.Instance.TycoonStatus.PlayerMoveSpeedMultiplier += 0.05f; break; - case "ExpGetUp": - TycoonManager.Instance.TycoonStatus.ExpMultiplier += 0.2f; break; - case "GoldGetUp": - TycoonManager.Instance.TycoonStatus.GoldMultiplier += 0.2f; break; - case "CleanUp": - EventManager.InvokeCleaningAll(); break; + _tycoonStatus.CurrentGarnishAmount2 += 4000; + break; + case "AllLiquidAdd": + EventManager.InvokeAddBarrels(1000); + break; + case "ServerNpcAdd": + EventManager.InvokeCreateServerCrew(); + break; + case "CleanerNpcAdd": + EventManager.InvokeCreateCleanerCrew(); + break; + case "BartenderNpcAdd": + EventManager.InvokeCreateBartenderCrew(); + break; + case "SpeedBoost": + _tycoonStatus.PlayerMoveSpeedMultiplier += 0.1f; + break; + case "ExpBoost": + _tycoonStatus.ExpMultiplier += 0.2f; + break; + case "GoldBoost": + _tycoonStatus.GoldMultiplier += 0.2f; + break; + case "AllCleanUp": + EventManager.InvokeCleaningAll(); + break; case "GaugeReset": - EventManager.InvokeGaugeResetCustomers(); break; + EventManager.InvokeGaugeResetCustomers(); + break; + case "DashCooldownReduction": + _tycoonStatus.PlayerDashCooldownReduction += 1; + break; + case "TipBoost": + // TODO : 서빙, 청소 팁 계산 및 연출 + _tycoonStatus.TipMultiplier += 0.2f; + break; + case "EndGoldBoost": + _tycoonStatus.EndGoldMultiplier += 0.1f; + break; + case "AllCustomerPurification": + break; + case "GaugeTimeUp": + _tycoonStatus.CustomerHurryTimeIncrease += 3; + break; + case "BarrelAutoSupply": + if (_tycoonManager.CardDataSo.CardFirstCheck("BarrelAutoSupply")) + { + EventManager.InvokeAutoSupplyBarrels(); + } + _tycoonStatus.BarrelAutoIncrease += 5; + break; + case "ServerNpcUpgrade": + // TODO : 서빙 팁 계산 및 연출 + _tycoonStatus.ServerTipMultiplier += 0.1f; + break; + case "CleanerNpcUpgrade": + _tycoonStatus.CleanerCleaningReduction += 1; + break; + case "BartenderNpcUpgrade": + _tycoonStatus.BartenderMakingReduction += 1; + break; + case "DoubleServing": + break; + case "RandomChange": + break; + case "GoldAutoGain": + break; + case "PassiveMakingBonus": + break; + case "PassiveServingBonus": + break; + case "PassiveCleaningBonus": + break; default: Debug.Log("Not Found Card : IDX" + currTycoonCard.CardDataForIdx.Idx); return; } diff --git a/Assets/05.Prefabs/Uis/Tycoons/Card.prefab b/Assets/05.Prefabs/Uis/Tycoons/Card.prefab index c38ef53ea..889800d40 100644 --- a/Assets/05.Prefabs/Uis/Tycoons/Card.prefab +++ b/Assets/05.Prefabs/Uis/Tycoons/Card.prefab @@ -297,7 +297,7 @@ MonoBehaviour: m_lineSpacingMax: 0 m_paragraphSpacing: 0 m_charWidthMaxAdj: 0 - m_TextWrappingMode: 0 + m_TextWrappingMode: 1 m_wordWrappingRatios: 0.4 m_overflowMode: 0 m_linkedTextComponent: {fileID: 0} diff --git a/Assets/Resources/Excel/CardDataTable.xlsx b/Assets/Resources/Excel/CardDataTable.xlsx index 513686fd589de0a1e5821aa5a0de01f2a2a43f66..a0acca1ad58871c0a61d555183c4d96351fa095e 100644 GIT binary patch delta 5238 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 G_3%HB@_0J{ delta 3769 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 diff --git a/Assets/Resources/JSON/CardDataTable.json b/Assets/Resources/JSON/CardDataTable.json index 58872484a..2804d0ee6 100644 --- a/Assets/Resources/JSON/CardDataTable.json +++ b/Assets/Resources/JSON/CardDataTable.json @@ -1,128 +1,299 @@ [ { - "Idx": "HeartPlus", - "Img": "HeartPlusImg", + "Idx": "HeartSlotPlus", "ScriptText": "하트 한칸 추가", - "Max": 3, - "Ratio": 10 + "Max": 5, + "Ratio": 5, + "Type": 0, + "Shop": 1, + "Price": 700 }, { - "Idx": "HeartHeal", - "Img": "HeartHealImg", + "Idx": "HeartRecovery", "ScriptText": "하트 한칸 회복", "Max": 10, - "Ratio": 0 + "Ratio": 0, + "Type": 0, + "Shop": 0, + "Price": 0 }, { - "Idx": "HeartAllHeal", - "Img": "HeartAllHealImg", + "Idx": "FullHeartRecovery", "ScriptText": "하트 전체 회복", "Max": 0, - "Ratio": 5 + "Ratio": 5, + "Type": 0, + "Shop": 0, + "Price": 0 }, { "Idx": "AddLiquidB", - "Img": "LiquidBImg", "ScriptText": "B 술을 4000ml 추가", "Max": 0, - "Ratio": 5 + "Ratio": 0, + "Type": 0, + "Shop": 0, + "Price": 0 }, { "Idx": "AddLiquidC", - "Img": "LiquidCImg", "ScriptText": "C 술을 4000ml 추가", "Max": 0, - "Ratio": 5 + "Ratio": 0, + "Type": 0, + "Shop": 0, + "Price": 0 }, { "Idx": "AddLiquidD", - "Img": "LiquidDImg", "ScriptText": "D 술을 4000ml 추가", "Max": 0, - "Ratio": 5 + "Ratio": 0, + "Type": 0, + "Shop": 0, + "Price": 0 }, { "Idx": "AddLiquidE", - "Img": "LiquidEImg", "ScriptText": "E 술을 4000ml 추가", "Max": 0, - "Ratio": 5 + "Ratio": 0, + "Type": 0, + "Shop": 0, + "Price": 0 }, { "Idx": "AddGarnish1", - "Img": "Garnish1Img", "ScriptText": "1번 가니쉬를 4000ml 추가", "Max": 0, - "Ratio": 5 + "Ratio": 0, + "Type": 0, + "Shop": 0, + "Price": 0 }, { "Idx": "AddGarnish2", - "Img": "Garnish2Img", "ScriptText": "2번 가니쉬를 4000ml 추가", "Max": 0, - "Ratio": 5 + "Ratio": 0, + "Type": 0, + "Shop": 0, + "Price": 0 }, { - "Idx": "AddAllLiquid", - "Img": "LiquidAllHealImg", + "Idx": "AllLiquidAdd", "ScriptText": "전체 재료 1000ml 추가", "Max": 0, - "Ratio": 10 + "Ratio": 5, + "Type": 0, + "Shop": 0, + "Price": 0 }, { - "Idx": "ServerNpc", - "Img": "ServerNpcImg", + "Idx": "ServerNpcAdd", "ScriptText": "서빙 종업원 추가", "Max": 5, - "Ratio": 5 + "Ratio": 5, + "Type": 0, + "Shop": 1, + "Price": 1000 }, { - "Idx": "CleanerNpc", - "Img": "CleanerNpcImg", + "Idx": "CleanerNpcAdd", "ScriptText": "청소 종업원 추가", "Max": 5, - "Ratio": 5 + "Ratio": 5, + "Type": 0, + "Shop": 1, + "Price": 1000 }, { - "Idx": "ChefNpc", - "Img": "ChefNpcImg", + "Idx": "BartenderNpcAdd", "ScriptText": "바텐터 종업원 추가", "Max": 5, - "Ratio": 5 + "Ratio": 5, + "Type": 0, + "Shop": 1, + "Price": 1000 }, { - "Idx": "SpeedUp", - "Img": "SpeedUpImg", - "ScriptText": "플레이어 이동 속도 5% 증가", + "Idx": "SpeedBoost", + "ScriptText": "플레이어 이동 속도 10% 증가", "Max": 10, - "Ratio": 5 + "Ratio": 5, + "Type": 0, + "Shop": 1, + "Price": 500 }, { - "Idx": "ExpGetUp", - "Img": "ExpGetUpImg", + "Idx": "ExpBoost", "ScriptText": "경험치 획득 20% 증가", "Max": 10, - "Ratio": 5 + "Ratio": 4, + "Type": 0, + "Shop": 1, + "Price": 500 }, { - "Idx": "GoldGetUp", - "Img": "GoldGetUpImg", + "Idx": "GoldBoost", "ScriptText": "골드 획득 20% 증가", "Max": 10, - "Ratio": 5 + "Ratio": 4, + "Type": 0, + "Shop": 1, + "Price": 500 }, { - "Idx": "CleanUp", - "Img": "CleanUpImgImg", + "Idx": "AllCleanUp", "ScriptText": "레스토랑 한번에 청소", "Max": 0, - "Ratio": 5 + "Ratio": 4, + "Type": 0, + "Shop": 0, + "Price": 0 }, { "Idx": "GaugeReset", - "Img": "GaugeResetImg", "ScriptText": "모든 손님들의 기다림 초기화", "Max": 0, - "Ratio": 10 + "Ratio": 0, + "Type": 0, + "Shop": 0, + "Price": 0 + }, + { + "Idx": "DashCooldownReduction", + "ScriptText": "대시 쿨타임 감소", + "Max": 5, + "Ratio": 4, + "Type": 0, + "Shop": 1, + "Price": 500 + }, + { + "Idx": "TipBoost", + "ScriptText": "팁 획득량 20% 증가", + "Max": 5, + "Ratio": 4, + "Type": 0, + "Shop": 1, + "Price": 600 + }, + { + "Idx": "EndGoldBoost", + "ScriptText": "게임 오버 후 획득 골드 10% 증가", + "Max": 10, + "Ratio": 4, + "Type": 0, + "Shop": 0, + "Price": 0 + }, + { + "Idx": "AllCustomerPurification", + "ScriptText": "손님들 전부 정화", + "Max": 0, + "Ratio": 4, + "Type": 0, + "Shop": 0, + "Price": 0 + }, + { + "Idx": "GaugeTimeUp", + "ScriptText": "손님들의 기다림 시간 3초 증가", + "Max": 5, + "Ratio": 5, + "Type": 0, + "Shop": 1, + "Price": 1000 + }, + { + "Idx": "BarrelAutoSupply", + "ScriptText": "모든 술 재료 자동 충천 (1초에 N리터)", + "Max": 10, + "Ratio": 5, + "Type": 0, + "Shop": 1, + "Price": 1500 + }, + { + "Idx": "ServerNpcUpgrade", + "ScriptText": "서빙 종업원 업그레이드 (팁 획득 비율 증가)", + "Max": 5, + "Ratio": 5, + "Type": 0, + "Shop": 1, + "Price": 300 + }, + { + "Idx": "CleanerNpcUpgrade", + "ScriptText": "청소 종업원 업그레이드 (청소 속도 증가)", + "Max": 5, + "Ratio": 5, + "Type": 0, + "Shop": 1, + "Price": 300 + }, + { + "Idx": "BartenderNpcUpgrade", + "ScriptText": "바텐터 종업원 업그레이드 (술 제조 속도 증가)", + "Max": 5, + "Ratio": 5, + "Type": 0, + "Shop": 1, + "Price": 300 + }, + { + "Idx": "DoubleServing", + "ScriptText": "플레이어가 양손에 서빙 가능", + "Max": 1, + "Ratio": 2, + "Type": 1, + "Shop": 1, + "Price": 1000 + }, + { + "Idx": "RandomChange", + "ScriptText": "휴지통을 랜덤 제조통으로 변경", + "Max": 1, + "Ratio": 2, + "Type": 1, + "Shop": 1, + "Price": 1000 + }, + { + "Idx": "GoldAutoGain", + "ScriptText": "자동으로 60초마다 돈통의 골드 회수", + "Max": 1, + "Ratio": 2, + "Type": 1, + "Shop": 1, + "Price": 900 + }, + { + "Idx": "PassiveMakingBonus", + "ScriptText": "술 제조 성공 시 골드 추가 획득", + "Max": 1, + "Ratio": 2, + "Type": 1, + "Shop": 1, + "Price": 800 + }, + { + "Idx": "PassiveServingBonus", + "ScriptText": "서빙 3번 성공 시 하트 반개 회복", + "Max": 1, + "Ratio": 2, + "Type": 1, + "Shop": 1, + "Price": 800 + }, + { + "Idx": "PassiveCleaningBonus", + "ScriptText": "청소 5번 성공 시 바텐더 제조 속도 증가", + "Max": 1, + "Ratio": 2, + "Type": 1, + "Shop": 1, + "Price": 800 } ] \ No newline at end of file diff --git a/Assets/Resources/JSON/LevelDataTable.json b/Assets/Resources/JSON/LevelDataTable.json index 4c33bdf3a..7d75f817a 100644 --- a/Assets/Resources/JSON/LevelDataTable.json +++ b/Assets/Resources/JSON/LevelDataTable.json @@ -8,7 +8,9 @@ "WaitTime": 20, "HurryTime": 20, "EatingTime": 10, - "OpenUpgrade": "Upgrade0" + "OpenUpgrade": "Upgrade0", + "RewardBoxType": 0, + "RewardBoxPrice": 50 }, { "Idx": 2, @@ -19,7 +21,9 @@ "WaitTime": 20, "HurryTime": 20, "EatingTime": 10, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 100 }, { "Idx": 3, @@ -30,7 +34,9 @@ "WaitTime": 20, "HurryTime": 20, "EatingTime": 10, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 150 }, { "Idx": 4, @@ -41,7 +47,9 @@ "WaitTime": 20, "HurryTime": 20, "EatingTime": 10, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 200 }, { "Idx": 5, @@ -52,7 +60,9 @@ "WaitTime": 20, "HurryTime": 20, "EatingTime": 10, - "OpenUpgrade": "Upgrade1" + "OpenUpgrade": "Upgrade1", + "RewardBoxType": 1, + "RewardBoxPrice": 500 }, { "Idx": 6, @@ -63,7 +73,9 @@ "WaitTime": 18, "HurryTime": 18, "EatingTime": 10, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 250 }, { "Idx": 7, @@ -74,7 +86,9 @@ "WaitTime": 18, "HurryTime": 18, "EatingTime": 10, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 300 }, { "Idx": 8, @@ -85,7 +99,9 @@ "WaitTime": 18, "HurryTime": 18, "EatingTime": 10, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 350 }, { "Idx": 9, @@ -96,7 +112,9 @@ "WaitTime": 18, "HurryTime": 18, "EatingTime": 10, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 400 }, { "Idx": 10, @@ -107,7 +125,9 @@ "WaitTime": 18, "HurryTime": 18, "EatingTime": 10, - "OpenUpgrade": "Upgrade2" + "OpenUpgrade": "Upgrade2", + "RewardBoxType": 1, + "RewardBoxPrice": 1000 }, { "Idx": 11, @@ -118,7 +138,9 @@ "WaitTime": 16, "HurryTime": 16, "EatingTime": 8, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 450 }, { "Idx": 12, @@ -129,7 +151,9 @@ "WaitTime": 16, "HurryTime": 16, "EatingTime": 8, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 500 }, { "Idx": 13, @@ -140,7 +164,9 @@ "WaitTime": 16, "HurryTime": 16, "EatingTime": 8, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 550 }, { "Idx": 14, @@ -151,7 +177,9 @@ "WaitTime": 16, "HurryTime": 16, "EatingTime": 8, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 600 }, { "Idx": 15, @@ -162,7 +190,9 @@ "WaitTime": 16, "HurryTime": 16, "EatingTime": 8, - "OpenUpgrade": "Upgrade3" + "OpenUpgrade": "Upgrade3", + "RewardBoxType": 1, + "RewardBoxPrice": 1500 }, { "Idx": 16, @@ -173,7 +203,9 @@ "WaitTime": 14, "HurryTime": 14, "EatingTime": 8, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 650 }, { "Idx": 17, @@ -184,7 +216,9 @@ "WaitTime": 14, "HurryTime": 14, "EatingTime": 8, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 700 }, { "Idx": 18, @@ -195,7 +229,9 @@ "WaitTime": 14, "HurryTime": 14, "EatingTime": 8, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 750 }, { "Idx": 19, @@ -206,7 +242,9 @@ "WaitTime": 14, "HurryTime": 14, "EatingTime": 8, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 800 }, { "Idx": 20, @@ -217,7 +255,9 @@ "WaitTime": 14, "HurryTime": 14, "EatingTime": 8, - "OpenUpgrade": "Upgrade4" + "OpenUpgrade": "Upgrade4", + "RewardBoxType": 1, + "RewardBoxPrice": 2000 }, { "Idx": 21, @@ -228,7 +268,9 @@ "WaitTime": 12, "HurryTime": 12, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 850 }, { "Idx": 22, @@ -239,7 +281,9 @@ "WaitTime": 12, "HurryTime": 12, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 900 }, { "Idx": 23, @@ -250,7 +294,9 @@ "WaitTime": 12, "HurryTime": 12, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 950 }, { "Idx": 24, @@ -261,7 +307,9 @@ "WaitTime": 12, "HurryTime": 12, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 1000 }, { "Idx": 25, @@ -272,7 +320,9 @@ "WaitTime": 12, "HurryTime": 12, "EatingTime": 6, - "OpenUpgrade": "Upgrade5" + "OpenUpgrade": "Upgrade5", + "RewardBoxType": 1, + "RewardBoxPrice": 3000 }, { "Idx": 26, @@ -283,7 +333,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 1100 }, { "Idx": 27, @@ -294,7 +346,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 1200 }, { "Idx": 28, @@ -305,7 +359,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 1300 }, { "Idx": 29, @@ -316,7 +372,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 1400 }, { "Idx": 30, @@ -327,7 +385,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "Upgrade6" + "OpenUpgrade": "Upgrade6", + "RewardBoxType": 1, + "RewardBoxPrice": 4000 }, { "Idx": 31, @@ -338,7 +398,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 1500 }, { "Idx": 32, @@ -349,7 +411,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 1600 }, { "Idx": 33, @@ -360,7 +424,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 1700 }, { "Idx": 34, @@ -371,7 +437,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 1800 }, { "Idx": 35, @@ -382,7 +450,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 1, + "RewardBoxPrice": 5000 }, { "Idx": 36, @@ -393,7 +463,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 1900 }, { "Idx": 37, @@ -404,7 +476,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 2000 }, { "Idx": 38, @@ -415,7 +489,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 2100 }, { "Idx": 39, @@ -426,7 +502,9 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 2200 }, { "Idx": 40, @@ -437,6 +515,138 @@ "WaitTime": 10, "HurryTime": 10, "EatingTime": 6, - "OpenUpgrade": "" + "OpenUpgrade": "", + "RewardBoxType": 1, + "RewardBoxPrice": 2300 + }, + { + "Idx": 41, + "CustomerRespawn": 2, + "Gold": 100, + "Exp": 100, + "RequiredExp": 900, + "WaitTime": 10, + "HurryTime": 10, + "EatingTime": 6, + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 2400 + }, + { + "Idx": 42, + "CustomerRespawn": 2, + "Gold": 100, + "Exp": 100, + "RequiredExp": 900, + "WaitTime": 10, + "HurryTime": 10, + "EatingTime": 6, + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 2500 + }, + { + "Idx": 43, + "CustomerRespawn": 2, + "Gold": 100, + "Exp": 100, + "RequiredExp": 900, + "WaitTime": 10, + "HurryTime": 10, + "EatingTime": 6, + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 2600 + }, + { + "Idx": 44, + "CustomerRespawn": 2, + "Gold": 100, + "Exp": 100, + "RequiredExp": 900, + "WaitTime": 10, + "HurryTime": 10, + "EatingTime": 6, + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 2700 + }, + { + "Idx": 45, + "CustomerRespawn": 2, + "Gold": 100, + "Exp": 100, + "RequiredExp": 900, + "WaitTime": 10, + "HurryTime": 10, + "EatingTime": 6, + "OpenUpgrade": "", + "RewardBoxType": 1, + "RewardBoxPrice": 6000 + }, + { + "Idx": 46, + "CustomerRespawn": 2, + "Gold": 100, + "Exp": 100, + "RequiredExp": 900, + "WaitTime": 10, + "HurryTime": 10, + "EatingTime": 6, + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 2800 + }, + { + "Idx": 47, + "CustomerRespawn": 2, + "Gold": 100, + "Exp": 100, + "RequiredExp": 900, + "WaitTime": 10, + "HurryTime": 10, + "EatingTime": 6, + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 2900 + }, + { + "Idx": 48, + "CustomerRespawn": 2, + "Gold": 100, + "Exp": 100, + "RequiredExp": 900, + "WaitTime": 10, + "HurryTime": 10, + "EatingTime": 6, + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 3000 + }, + { + "Idx": 49, + "CustomerRespawn": 2, + "Gold": 100, + "Exp": 100, + "RequiredExp": 900, + "WaitTime": 10, + "HurryTime": 10, + "EatingTime": 6, + "OpenUpgrade": "", + "RewardBoxType": 0, + "RewardBoxPrice": 4000 + }, + { + "Idx": 50, + "CustomerRespawn": 2, + "Gold": 100, + "Exp": 100, + "RequiredExp": 900, + "WaitTime": 10, + "HurryTime": 10, + "EatingTime": 6, + "OpenUpgrade": "", + "RewardBoxType": 1, + "RewardBoxPrice": 7000 } ] \ No newline at end of file