105 lines
3.5 KiB
C#
105 lines
3.5 KiB
C#
using System.Collections.Generic;
|
|
using BlueWater.Tycoons;
|
|
using UnityEngine;
|
|
using Sirenix.OdinInspector;
|
|
|
|
namespace BlueWater.Uis
|
|
{
|
|
public class TycoonRareRewardBoxUi : PopupUi
|
|
{
|
|
[SerializeField]
|
|
private GameObject _panel;
|
|
|
|
[SerializeField]
|
|
private Transform _contents;
|
|
|
|
[SerializeField]
|
|
private Vector3 _cardLocalScale = new(0.65f, 0.65f, 1f);
|
|
|
|
private List<TycoonCard> _tycoonCards = new(5);
|
|
|
|
private LevelData _currentLevelData;
|
|
private TycoonManager _tycoonManager;
|
|
private TycoonCardController _tycoonCardController;
|
|
|
|
private void Start()
|
|
{
|
|
_panel.SetActive(false);
|
|
|
|
_tycoonManager = TycoonManager.Instance;
|
|
_tycoonCardController = _tycoonManager.TycoonCardController;
|
|
|
|
EventManager.OnOpenedRareRewardBox += CreateCard;
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
EventManager.OnOpenedRareRewardBox -= CreateCard;
|
|
}
|
|
|
|
public override void Open()
|
|
{
|
|
PlayerInputKeyManager.Instance.DisableAction("OpenManualBook");
|
|
VisualFeedbackManager.Instance.SetBaseTimeScale(0.0f);
|
|
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.TycoonUi);
|
|
PopupUiController.RegisterPopup(this);
|
|
_panel.SetActive(true);
|
|
IsOpened = true;
|
|
}
|
|
|
|
public override void Close()
|
|
{
|
|
_panel.SetActive(false);
|
|
PopupUiController.UnregisterPopup(this);
|
|
PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.Tycoon);
|
|
IsOpened = false;
|
|
VisualFeedbackManager.Instance.ResetTimeScale();
|
|
PlayerInputKeyManager.Instance.EnableAction("OpenManualBook");
|
|
}
|
|
|
|
[Button("레어 상자 열기")]
|
|
private void CreateCard()
|
|
{
|
|
if (!Application.isPlaying) return;
|
|
|
|
_currentLevelData = TycoonManager.Instance.GetCurrentLevelData();
|
|
_tycoonCardController.DestroyCardList(_tycoonCards);
|
|
var randomCount = Random.Range(2, 6);
|
|
for (int i = 0; i < randomCount; i++)
|
|
{
|
|
var newCard = _tycoonCardController.CreateTycoonCard(_contents);
|
|
newCard.SetName($"Card{i:00}");
|
|
newCard.SetLocalScale(_cardLocalScale);
|
|
_tycoonCards.Add(newCard);
|
|
}
|
|
|
|
Open();
|
|
|
|
//----카드 값 지정 및 초기화----
|
|
HashSet<string> hashSet = new HashSet<string>(randomCount - 1);
|
|
foreach (var element in _tycoonCards)
|
|
{
|
|
CardData cardData = null;
|
|
string cardIdx = null;
|
|
|
|
do
|
|
{
|
|
cardData = _tycoonManager.CardDataSo.GetRandCardData();
|
|
cardData = _tycoonManager.CardDataSo.SubstitutionLiquid(cardData, _currentLevelData);
|
|
|
|
if (cardData != null)
|
|
{
|
|
cardIdx = cardData.Idx;
|
|
}
|
|
|
|
} while (cardData == null || _tycoonManager.CardDataSo.CardMaxCheck(cardData) ||
|
|
hashSet.Contains(cardIdx) || cardData.Type == CardType.Passive);
|
|
|
|
hashSet.Add(cardIdx);
|
|
element.SetCard(cardData);
|
|
element.Rotation_Start();
|
|
_tycoonCardController.SelectedCard(element);
|
|
}
|
|
}
|
|
}
|
|
} |