private Unit Unit; // but only id sent; rest handled via card public AddToLaneDelta(Lane lane, UnitCard card, int sideIndex, int pos, GameManager gm) : base(lane) { this.SendableCard = new SendableTarget <Card>("card", card); this.SideIndex = sideIndex; this.Position = pos; this.Unit = new Unit(card, gm); }
private void Constructor(UnitCard card, GameManager gm) { this.Card = card; this.HealthPoints = card.HealthPoints; this.FirstDeploy = true; this.Abilities = new List <Ability>(); foreach (Ability a in card.Abilities) { a.ApplyTo(this, gm); } }
void MulchInner(List <Delta> deltas, GMWithLocation gmLoc, Damage.Type?phase) { RemoveFromDeckDelta top = new RemoveFromDeckDelta(gmLoc.SubjectPlayer.Deck, gmLoc.SubjectPlayer.Deck[0], 0); deltas.Add(top); UnitCard topUnitCard = top.Card as UnitCard; // BackUnit works out perfectly because it returns null if its empty or if it contains SubjectUnit if (topUnitCard != null && gmLoc.SubjectPlayer.ManaPool.CanAfford(topUnitCard.DeployCost - 1) && gmLoc.BackUnit == null) { deltas.AddRange(gmLoc.SubjectPlayer.ManaPool.GetSubtractDeltas(topUnitCard.DeployCost - 1)); deltas.AddRange(gmLoc.SubjectLane.GetDeployDeltas(topUnitCard, gmLoc.Side, 1, gmLoc.GameManager)); } else { deltas.AddRange(gmLoc.SubjectPlayer.Discard.GetDiscardDeltas(new Card[] { top.Card })); } }
public Unit(UnitCard card, int id, GameManager gm) { this.id = "" + id; IdIssuer.RegisterId(this.id, this); Constructor(card, gm); }
public Unit(UnitCard card, GameManager gm) { this.id = IdIssuer.IssueId(this); Constructor(card, gm); }