CapersProject/Assets/02.Scripts/BlueWater/Tycoon/TycoonCardController.cs

213 lines
7.9 KiB
C#
Raw Normal View History

2024-12-06 13:20:10 +00:00
using System;
2024-11-17 04:29:57 +00:00
using System.Collections.Generic;
2025-02-10 02:13:46 +00:00
using DDD.Audios;
using DDD.Uis;
2024-11-28 23:07:50 +00:00
using Sirenix.OdinInspector;
2024-11-17 04:29:57 +00:00
using UnityEngine;
2025-02-10 02:13:46 +00:00
namespace DDD.Tycoons
2024-11-17 04:29:57 +00:00
{
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();
}
2025-01-02 03:40:16 +00:00
_tycoonStatus.BarrelAutoIncrease += 5;
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
}
}
}