100 lines
3.4 KiB
C#
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
|
|
{
|
|
|
|
}
|
|
} |