Files
Continentis/Assets/Scripts/MainGame/Card/CardLogicBase.cs
SoulliesOfficial 9b1b5ca93f initial
2025-10-03 00:02:43 -04:00

100 lines
3.4 KiB
C#

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<string> functionalTags;
public List<string> 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<string>(cardData.functionalTags);
this.elementalTags = new List<string>(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<string, List<CardInstance>> 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
{
}
}