public Writable_MonsterCard Clone(Writable_MonsterCard outputType) { Writable_MonsterCard clone = new Writable_MonsterCard(this.Name, this.Cost, this.Damage, this.Health); clone.CopyFrom(this); return(clone); }
public override void Process(Game game) { Writable_GamePlayer monsterController = this.monsterController_provider.GetValue(this, game, (Writable_GamePlayer)null); int numberToSpawn = this.countProvider.GetValue(this, game, default(int)); //monsterController.get List <ID <Readable_MonsterCard> > territory = monsterController.MonsterIDsInPlay.GetWritable(); for (int i = 0; i < numberToSpawn; i++) { Writable_MonsterCard monster = this.monsterToSpawn.Clone((Writable_MonsterCard)null); monster.ID = IDFactory.NewID(); monster.ControllerID = monsterController.GetID((Readable_GamePlayer)null); territory.Add(monster.GetID((Readable_MonsterCard)null)); game.AddCard(monster); } }
public void NewTurn(ID <Readable_GamePlayer> playerID, Game game) { Writable_GamePlayer player = game.GetWritable(playerID); // gain 1 crystal if (player.ResourcesPerTurn.ToNumber() < 10) { player.ResourcesPerTurn = player.ResourcesPerTurn.Plus(new Resource(1)); } // replenish existing crystals player.CurrentResources = player.ResourcesPerTurn; // give one attack to each monster foreach (ID <Readable_MonsterCard> monsterId in player.MonsterIDsInPlay.GetReadable()) { Writable_MonsterCard card = game.GetWritable(monsterId); card.NumAttacksRemaining = card.NumAttacksPerTurn; } // draw a card if there's room this.AddCardToHand(player.Deck.Dequeue(), player, game); }