Validate culture card purchase limits
This commit is contained in:
parent
15593c487b
commit
37164ea62d
@ -2301,10 +2301,7 @@ namespace RuntimeData
|
||||
// 购买文化卡
|
||||
public bool TryBuyCultureCard(MapData map, PlayerData player, CultureCardType cardType)
|
||||
{
|
||||
if (!Table.Instance.CultureCardDataAssets.GetCultureCardInfo(cardType, out var info)) return false;
|
||||
if (!info.CheckEmpireCanUseCard(player.Empire)) return false;
|
||||
if (!info.CheckPrerequisiteCardsOwned(player)) return false;
|
||||
if (!info.CheckPlayerCanAfford(player)) return false;
|
||||
if (!CheckCanBuyCultureCard(map, player, cardType, out var info)) return false;
|
||||
info.SpendCost(player);
|
||||
CultureCardList.Add(cardType);
|
||||
var card = CultureCardFactory.GetCultureCardBase(cardType);
|
||||
@ -2316,13 +2313,36 @@ namespace RuntimeData
|
||||
// 能否购买文化卡
|
||||
public bool CheckCanBuyCultureCard(MapData map, PlayerData player, CultureCardType cardType)
|
||||
{
|
||||
if (!Table.Instance.CultureCardDataAssets.GetCultureCardInfo(cardType, out var info)) return false;
|
||||
return CheckCanBuyCultureCard(map, player, cardType, out _);
|
||||
}
|
||||
|
||||
private bool CheckCanBuyCultureCard(MapData map, PlayerData player, CultureCardType cardType, out CultureCardInfo info)
|
||||
{
|
||||
info = null;
|
||||
var dataAssets = Table.Instance?.CultureCardDataAssets;
|
||||
if (dataAssets == null || !dataAssets.GetCultureCardInfo(cardType, out info)) return false;
|
||||
if (player == null) return false;
|
||||
if (info.NotShow) return false;
|
||||
var ownedCount = GetCultureCardOwnedCount(cardType);
|
||||
if (info.MaxCount > 0 && ownedCount >= info.MaxCount) return false;
|
||||
if (!info.CheckEmpireCanUseCard(player.Empire)) return false;
|
||||
if (!info.CheckPrerequisiteCardsOwned(player)) return false;
|
||||
if (!info.CheckPlayerCanAfford(player)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
private int GetCultureCardOwnedCount(CultureCardType cardType)
|
||||
{
|
||||
var count = 0;
|
||||
if (CultureCardList == null) return count;
|
||||
foreach (var ownedCardType in CultureCardList)
|
||||
{
|
||||
if (ownedCardType == cardType) count++;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
public void OnTurnStart(MapData map, PlayerData player)
|
||||
{
|
||||
/*if (!player.IsSurvival) return;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user