using System; using System.Collections.Generic; using System.Linq; using Continentis.MainGame.Character; using Continentis.MainGame.UI; using Lean.Pool; using Sirenix.OdinInspector; using Unity.VisualScripting; using UnityEngine; using Object = UnityEngine.Object; namespace Continentis.MainGame.Card { public abstract partial class CardLogicBase { [Title("Reference")] public CardData cardData; public CardInstance cardInstance; public ICardOwner owner => cardInstance.owner; public CombatTeam team => cardInstance.team; public CharacterBase user => cardInstance.user; public HandCardView handCardView => cardInstance.handCardView; [Title("Card Base Info")] public Guid cardID; public List functionalTags; public List elementalTags; public int upgradeLevel; [Title("Submodules")] [ShowInInspector] public AttributeSubmodule attributeSubmodule { get; private set; } [ShowInInspector] public WeightSubmodule weightSubmodule { get; private set; } [ShowInInspector] public CombatBuffSubmodule combatBuffSubmodule { get; private set; } [ShowInInspector] public EventSubmodule eventSubmodule { get; private set; } [ShowInInspector] public ContentSubmodule contentSubmodule { get; private set; } [ShowInInspector] public PlaySubmodule playSubmodule { get; private set; } public void Setup() { this.cardID = Guid.NewGuid(); this.functionalTags = new List(cardData.functionalTags); this.elementalTags = new List(cardData.elementalTags); attributeSubmodule = new AttributeSubmodule(this); weightSubmodule = new WeightSubmodule(this); eventSubmodule = new EventSubmodule(this); combatBuffSubmodule = new CombatBuffSubmodule(this); contentSubmodule = new ContentSubmodule(this); playSubmodule = new PlaySubmodule(this); } public virtual void InitialRefresh() { RefreshCardAttributes(); CardDescriptionInterpreter.InterpretDescription(this); } public void UpgradeCard() { if (team == null) { KeyValuePair> currentPile = cardInstance.deck.GetCardLocation(cardInstance, out int index); if (!cardData.upgradeNode.isTerminalNode) { cardInstance.DestroyHandCardView(); CardData newData = cardData.upgradeNode.upgradeCards[0]; //后续可改为选择升级方向 CardLogicBase newLogic = newData.GenerateCardLogic(); cardInstance.cardLogic = newLogic; newLogic.cardInstance = cardInstance; cardInstance.cardLogic.InitialRefresh(); if(user is PlayerHero) cardInstance.GenerateHandCardView(CombatUIManager.Instance.deckPage.Pile(currentPile.Key), index); } } else { } } } public partial class CardLogicBase { } }