From 0d6d1f970c107440e9187701b8b92c747cc84c66 Mon Sep 17 00:00:00 2001 From: xianyi Date: Fri, 29 Aug 2025 09:57:06 +0800 Subject: [PATCH] =?UTF-8?q?12=E5=BC=A0=E5=8D=A1=E7=BB=84=E4=B8=8D=E5=85=81?= =?UTF-8?q?=E8=AE=B82=E5=BC=A0ssr+?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/TcgEngine/Resources/GameplayData.asset | 4 ++- Assets/TcgEngine/Scripts/Data/GameplayData.cs | 1 + .../TcgEngine/Scripts/Menu/CollectionPanel.cs | 28 ++++++++++++++++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/Assets/TcgEngine/Resources/GameplayData.asset b/Assets/TcgEngine/Resources/GameplayData.asset index 940f195..1a7e3e2 100644 --- a/Assets/TcgEngine/Resources/GameplayData.asset +++ b/Assets/TcgEngine/Resources/GameplayData.asset @@ -21,13 +21,15 @@ MonoBehaviour: mana_max: 10 # 初始化手牌数量 cards_start: 3 + # 每回合抽牌数量 cards_per_turn: 1 + # 手牌数量限制 cards_max: 10 # 超时时间 turn_duration: 600 second_bonus: {fileID: 11400000, guid: 9503f60659f1df04eb3dd7fa925885fb, type: 2} mulligan: 1 - deck_size: 8 + deck_size: 12 deck_duplicate_max: 2 sell_ratio: 0.8 ai_type: 10 diff --git a/Assets/TcgEngine/Scripts/Data/GameplayData.cs b/Assets/TcgEngine/Scripts/Data/GameplayData.cs index 8bf8d13..c619d35 100644 --- a/Assets/TcgEngine/Scripts/Data/GameplayData.cs +++ b/Assets/TcgEngine/Scripts/Data/GameplayData.cs @@ -27,6 +27,7 @@ namespace TcgEngine [Header("Deckbuilding")] public int deck_size = 30; public int deck_duplicate_max = 2; + public int deck_ssr_max = 2; [Header("Buy/Sell")] public float sell_ratio = 0.8f; diff --git a/Assets/TcgEngine/Scripts/Menu/CollectionPanel.cs b/Assets/TcgEngine/Scripts/Menu/CollectionPanel.cs index 1a0d0fc..a1aa315 100644 --- a/Assets/TcgEngine/Scripts/Menu/CollectionPanel.cs +++ b/Assets/TcgEngine/Scripts/Menu/CollectionPanel.cs @@ -657,8 +657,9 @@ namespace TcgEngine.UI bool owner = IsCardOwned(udata, card.GetCard(), card.GetVariant(), in_deck + 1); bool deck_limit = in_deck_same < GameplayData.Get().deck_duplicate_max; + bool ssr_limit = CheckSSRLimit(icard); - if (owner && deck_limit) + if (owner && deck_limit && ssr_limit) { AddDeckCard(icard, variant); RefreshDeckCards(); @@ -764,6 +765,31 @@ namespace TcgEngine.UI return udata.GetCardQuantity(card, variant) >= quantity; } + private bool CheckSSRLimit(CardData card) + { + // 检查卡牌稀有度是否 >= 4 (SSR级别) + if (card.rarity.rank >= 4) + { + int ssr_count = CountSSRCards(); + return ssr_count < GameplayData.Get().deck_ssr_max; + } + return true; + } + + private int CountSSRCards() + { + int count = 0; + foreach (UserCardData ucard in deck_cards) + { + CardData card = CardData.Get(ucard.tid); + if (card != null && card.rarity.rank >= 4) + { + count += ucard.quantity; + } + } + return count; + } + private string GetSelectedHeroId() { foreach (IconButton btn in hero_powers)