2024-12-06 13:20:10 +00:00
|
|
|
using System;
|
2024-11-17 04:29:57 +00:00
|
|
|
using System.Collections.Generic;
|
2024-12-10 06:49:15 +00:00
|
|
|
using BlueWater.Audios;
|
2024-11-17 04:29:57 +00:00
|
|
|
using BlueWater.Uis;
|
2024-11-28 23:07:50 +00:00
|
|
|
using Sirenix.OdinInspector;
|
2024-11-17 04:29:57 +00:00
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
namespace BlueWater.Tycoons
|
|
|
|
{
|
|
|
|
public class TycoonCardController: MonoBehaviour
|
|
|
|
{
|
|
|
|
[SerializeField]
|
|
|
|
private TycoonCard _tycoonCardPrefab;
|
2024-11-28 23:07:50 +00:00
|
|
|
|
2024-12-10 06:49:15 +00:00
|
|
|
[Title("So")]
|
2024-11-28 23:07:50 +00:00
|
|
|
[field: SerializeField, Required]
|
|
|
|
public CardDataSo CardDataSo { get; private set; }
|
|
|
|
|
|
|
|
[field: SerializeField, Required]
|
|
|
|
public CardShopDataSo CardShopDataSo { get; private set; }
|
|
|
|
|
|
|
|
[field: SerializeField, Required]
|
|
|
|
public CardNormalDataSo CardNormalDataSo { get; private set; }
|
|
|
|
|
|
|
|
[field: SerializeField, Required]
|
|
|
|
public CardRareDataSo CardRareDataSo { get; private set; }
|
2024-11-17 04:29:57 +00:00
|
|
|
|
2024-12-10 06:49:15 +00:00
|
|
|
[Title("사운드")]
|
|
|
|
[SerializeField]
|
|
|
|
private string _selectCardSfxName = "SelectCard";
|
2024-12-17 11:25:53 +00:00
|
|
|
|
|
|
|
[SerializeField]
|
|
|
|
private string _purifySfxName = "Purify";
|
2024-12-10 06:49:15 +00:00
|
|
|
|
2024-11-17 04:29:57 +00:00
|
|
|
private TycoonManager _tycoonManager;
|
|
|
|
private TycoonStatus _tycoonStatus;
|
2024-11-28 23:07:50 +00:00
|
|
|
|
2024-11-30 11:53:38 +00:00
|
|
|
[ShowInInspector]
|
2024-11-28 23:07:50 +00:00
|
|
|
public Dictionary<string, int> SelectedCard { get; private set; }
|
2024-11-17 04:29:57 +00:00
|
|
|
|
2024-12-06 13:20:10 +00:00
|
|
|
private void Awake()
|
|
|
|
{
|
|
|
|
SelectedCard = new Dictionary<string, int>(CardDataSo.GetDataCount());
|
|
|
|
}
|
|
|
|
|
2024-11-17 04:29:57 +00:00
|
|
|
private void Start()
|
|
|
|
{
|
|
|
|
_tycoonManager = TycoonManager.Instance;
|
|
|
|
_tycoonStatus = _tycoonManager.TycoonStatus;
|
|
|
|
}
|
|
|
|
|
|
|
|
public TycoonCard CreateTycoonCard(Transform instantiateLocation = null)
|
|
|
|
{
|
|
|
|
return Instantiate(_tycoonCardPrefab, instantiateLocation);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void DestroyCardList(List<TycoonCard> tycoonCards)
|
|
|
|
{
|
|
|
|
foreach (var element in tycoonCards)
|
|
|
|
{
|
|
|
|
if (!element || !element.gameObject) continue;
|
|
|
|
|
|
|
|
Destroy(element.gameObject);
|
|
|
|
}
|
|
|
|
|
|
|
|
tycoonCards.Clear();
|
|
|
|
}
|
|
|
|
|
2024-11-28 23:07:50 +00:00
|
|
|
public void SelectCard(TycoonCard currentTycoonCard)
|
2024-11-17 04:29:57 +00:00
|
|
|
{
|
2024-12-10 06:49:15 +00:00
|
|
|
AudioManager.Instance.PlaySfx(_selectCardSfxName, ignoreTimeScale:true);
|
2024-11-26 08:18:41 +00:00
|
|
|
currentTycoonCard.CardCountUp();
|
|
|
|
|
2024-11-17 04:29:57 +00:00
|
|
|
switch (currentTycoonCard.CardDataForIdx.Idx) //탐색 후 행동...
|
|
|
|
{
|
|
|
|
case "HeartSlotPlus":
|
|
|
|
_tycoonStatus.MaxPlayerHealth += 2;
|
|
|
|
break;
|
|
|
|
case "HeartRecovery":
|
|
|
|
_tycoonStatus.CurrentPlayerHealth += 2;
|
|
|
|
break;
|
|
|
|
case "FullHeartRecovery":
|
|
|
|
_tycoonStatus.CurrentPlayerHealth = _tycoonStatus.MaxPlayerHealth;
|
|
|
|
break;
|
|
|
|
case "AddLiquidB":
|
|
|
|
_tycoonStatus.CurrentLiquidAmountB += 4000;
|
|
|
|
break;
|
|
|
|
case "AddLiquidC":
|
|
|
|
_tycoonStatus.CurrentLiquidAmountC += 4000;
|
|
|
|
break;
|
|
|
|
case "AddLiquidD":
|
|
|
|
_tycoonStatus.CurrentLiquidAmountD += 4000;
|
|
|
|
break;
|
|
|
|
case "AddLiquidE":
|
|
|
|
_tycoonStatus.CurrentLiquidAmountE += 4000;
|
|
|
|
break;
|
|
|
|
case "AddGarnish1":
|
|
|
|
_tycoonStatus.CurrentGarnishAmount1 += 4000;
|
|
|
|
break;
|
|
|
|
case "AddGarnish2":
|
|
|
|
_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":
|
2024-12-02 11:43:08 +00:00
|
|
|
_tycoonStatus.ExpMultiplier += 0.1f;
|
2024-11-17 04:29:57 +00:00
|
|
|
break;
|
|
|
|
case "GoldBoost":
|
2024-12-02 11:43:08 +00:00
|
|
|
_tycoonStatus.GoldMultiplier += 0.1f;
|
2024-11-17 04:29:57 +00:00
|
|
|
break;
|
|
|
|
case "AllCleanUp":
|
|
|
|
EventManager.InvokeCleaningAll();
|
|
|
|
break;
|
|
|
|
case "GaugeReset":
|
|
|
|
EventManager.InvokeGaugeResetCustomers();
|
|
|
|
break;
|
|
|
|
case "DashCooldownReduction":
|
|
|
|
_tycoonStatus.PlayerDashCooldownReduction += 1;
|
|
|
|
break;
|
|
|
|
case "TipBoost":
|
2024-12-02 11:43:08 +00:00
|
|
|
_tycoonStatus.TipMultiplier += 0.1f;
|
2024-11-17 04:29:57 +00:00
|
|
|
break;
|
|
|
|
case "EndGoldBoost":
|
|
|
|
_tycoonStatus.EndGoldMultiplier += 0.1f;
|
|
|
|
break;
|
|
|
|
case "AllCustomerPurification":
|
|
|
|
EventManager.InvokePurifiedCustomerAll();
|
2024-12-17 11:25:53 +00:00
|
|
|
AudioManager.Instance.PlaySfx(_purifySfxName);
|
2024-11-17 04:29:57 +00:00
|
|
|
break;
|
|
|
|
case "GaugeTimeUp":
|
|
|
|
_tycoonStatus.CustomerHurryTimeIncrease += 3;
|
|
|
|
break;
|
|
|
|
case "BarrelAutoSupply":
|
2024-11-28 23:07:50 +00:00
|
|
|
if (CardFirstCheck("BarrelAutoSupply"))
|
2024-11-17 04:29:57 +00:00
|
|
|
{
|
|
|
|
EventManager.InvokeAutoSupplyBarrels();
|
|
|
|
}
|
2024-12-19 14:27:01 +00:00
|
|
|
_tycoonStatus.BarrelAutoIncrease += 3;
|
2024-11-17 04:29:57 +00:00
|
|
|
break;
|
|
|
|
case "ServerNpcUpgrade":
|
|
|
|
_tycoonStatus.ServerTipMultiplier += 0.1f;
|
|
|
|
break;
|
|
|
|
case "CleanerNpcUpgrade":
|
|
|
|
_tycoonStatus.CleanerCleaningReduction += 1;
|
|
|
|
break;
|
|
|
|
case "BartenderNpcUpgrade":
|
|
|
|
_tycoonStatus.BartenderMakingReduction += 1;
|
|
|
|
break;
|
|
|
|
case "PassiveDoubleServing":
|
2024-11-29 08:34:20 +00:00
|
|
|
_tycoonStatus.AddPassiveCard(PassiveCard.DoubleServing);
|
2024-11-17 04:29:57 +00:00
|
|
|
break;
|
|
|
|
case "PassiveRandomChange":
|
2024-11-29 08:34:20 +00:00
|
|
|
_tycoonStatus.AddPassiveCard(PassiveCard.RandomChange);
|
2024-11-17 04:29:57 +00:00
|
|
|
EventManager.InvokeChangedRandomBox();
|
|
|
|
break;
|
|
|
|
case "PassiveGoldAutoGain":
|
2024-11-29 08:34:20 +00:00
|
|
|
_tycoonStatus.AddPassiveCard(PassiveCard.GoldAutoGain);
|
2024-11-17 04:29:57 +00:00
|
|
|
EventManager.InvokeGainAutoMoneyCounter(_tycoonManager.TycoonStageController.StageDataSo.AutoGainWaitTime);
|
|
|
|
break;
|
|
|
|
case "PassiveMakingBonus":
|
2024-11-29 08:34:20 +00:00
|
|
|
_tycoonStatus.AddPassiveCard(PassiveCard.MakingBonus);
|
2024-11-17 04:29:57 +00:00
|
|
|
break;
|
|
|
|
case "PassiveServingBonus":
|
2024-11-29 08:34:20 +00:00
|
|
|
_tycoonStatus.AddPassiveCard(PassiveCard.ServingBonus);
|
2024-11-17 04:29:57 +00:00
|
|
|
break;
|
|
|
|
case "PassiveCleaningBonus":
|
2024-11-29 08:34:20 +00:00
|
|
|
_tycoonStatus.AddPassiveCard(PassiveCard.CleaningBonus);
|
2024-11-17 04:29:57 +00:00
|
|
|
break;
|
|
|
|
default: Debug.Log("Not Found Card : IDX" + currentTycoonCard.CardDataForIdx.Idx); return;
|
|
|
|
}
|
|
|
|
|
2024-11-28 23:07:50 +00:00
|
|
|
AddToSelectedCard(currentTycoonCard.CardDataForIdx);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void AddToSelectedCard(CardData cardData)
|
|
|
|
{
|
|
|
|
if (!SelectedCard.TryAdd(cardData.Idx, 1))
|
|
|
|
{
|
|
|
|
SelectedCard[cardData.Idx] += 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 카드가 MAX값인지 확인할 때 - MAX값이면 true를 리턴
|
|
|
|
public bool CardMaxCheck(CardData cardData)
|
|
|
|
{
|
|
|
|
return SelectedCard.TryGetValue(cardData.Idx, out var value) && cardData.Max != 0 && value >= cardData.Max;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int GetSelectedCardCount(string idx)
|
|
|
|
{
|
|
|
|
return SelectedCard.GetValueOrDefault(idx, 0);
|
|
|
|
}
|
|
|
|
|
|
|
|
// 카드가 처음 선택되었는지 확인할 때 - 0값이면 true를 리턴
|
|
|
|
public bool CardFirstCheck(string idx)
|
|
|
|
{
|
|
|
|
return CardDataSo.GetData().ContainsKey(idx) && !SelectedCard.ContainsKey(idx);
|
2024-11-17 04:29:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|