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