47 lines
1.6 KiB
C#
47 lines
1.6 KiB
C#
using System.Collections.Generic;
|
|
using BlueWater.Items;
|
|
using UnityEngine;
|
|
|
|
|
|
namespace BlueWater
|
|
{
|
|
[CreateAssetMenu(fileName = "CardTable", menuName = "ScriptableObjects/CardTable")]
|
|
|
|
public class CardDataSo : DataSo<CardData>
|
|
{
|
|
private Dictionary<string, int> _selectedCard = new Dictionary<string, int>(); // 선택된 카드를 저장함. <key = Idx / int = val>
|
|
|
|
public CardData GetRandCardData()
|
|
{
|
|
var rand = Random.Range(0, 100); // 범위를 0-100으로 조정
|
|
var checkAdd = 0;
|
|
foreach (var element in _datas.Values)
|
|
{
|
|
checkAdd += element.Ratio; // Ratio를 더하고 비교하도록 수정
|
|
if (checkAdd > rand) return element;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// 카드를 선택했을 때 호출
|
|
public void AddToSelectedCard(CardData cardData)
|
|
{
|
|
if (_selectedCard.ContainsKey(cardData.Idx))
|
|
{
|
|
_selectedCard[cardData.Idx] += 1;
|
|
Debug.Log(_selectedCard[cardData.Idx]);
|
|
}
|
|
else // 신규
|
|
{
|
|
_selectedCard[cardData.Idx] = 1; // TryAdd를 사용하지 않고 대입
|
|
Debug.Log(_selectedCard[cardData.Idx]);
|
|
}
|
|
}
|
|
|
|
// 카드가 MAX값인지 확인할 때 - MAX값이면 true를 리턴
|
|
public bool CardMaxCheck(CardData cardData)
|
|
{
|
|
return _selectedCard.TryGetValue(cardData.Idx, out var value) && cardData.Max != 0 && value >= cardData.Max;
|
|
}
|
|
}
|
|
} |