Files
2026-04-19 00:43:27 +02:00

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 => [];
}