ported from perforce
This commit is contained in:
43
RobotAndDonkey.Game/Cards/Card.cs
Normal file
43
RobotAndDonkey.Game/Cards/Card.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
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 => [];
|
||||
}
|
||||
Reference in New Issue
Block a user