43 lines
1.3 KiB
C#
43 lines
1.3 KiB
C#
using RobotAndDonkey.Game.Board;
|
|
using RobotAndDonkey.Game.Execution.Results;
|
|
using RobotAndDonkey.Game.GameState;
|
|
using RobotAndDonkey.Game.Intents;
|
|
using RobotAndDonkey.Game.Modifiers;
|
|
|
|
namespace RobotAndDonkey.Game.Cards;
|
|
|
|
public record Card(ECard Id, ECardType CardType, ERarity Rarity, int ShopCost, int BasePlayCost) : Entity
|
|
{
|
|
public Card DeepClone()
|
|
{
|
|
var result = (Card)Activator.CreateInstance(GetType())!;
|
|
result.PlayCost = PlayCost;
|
|
result.CardId = CardId;
|
|
foreach (var modifier in Modifiers)
|
|
result.AddModifier(modifier.DeepClone(), []);
|
|
return result;
|
|
}
|
|
|
|
public virtual void CreateIntents(Cell? avatarCell, CoreLoop coreLoop, Guid requestId, List<Intent> intents, List<Result> results)
|
|
{
|
|
if (PlayCost > 0)
|
|
intents.Add(new CardCostIntent(this, PlayCost));
|
|
}
|
|
|
|
public int PlayCost { get; set; } = BasePlayCost;
|
|
|
|
public virtual string Name => Id.ToString();
|
|
|
|
public virtual string ToolTip => Name;
|
|
|
|
public sealed override string ToString()
|
|
{
|
|
return $"{Id}" + base.ToString();
|
|
}
|
|
|
|
public int OccupiedSpace => Modifiers.Any(m => m.Id == EModifierId.Efficient) ? 0 : 1;
|
|
|
|
public Guid CardId { get; private set; } = Guid.NewGuid();
|
|
|
|
public virtual Modifier[] TooltipModifiers => [];
|
|
} |