Ejemplo n.º 1
0
        public void SpecialSummonMonster(Monster monster, bool faceUp, bool atkPosition)
        {
            var zIndex = MonsterZones.ToList().FindIndex(z => z.Monster == null);

            MonsterZones[zIndex].Monster = monster;
            monster.Location             = CardLocation.MonsterZone;
            if (faceUp)
            {
                if (atkPosition)
                {
                    monster.Position = CardPosition.FaceUpAttack;
                }
                else
                {
                    monster.Position = CardPosition.FaceUpDefense;
                }
            }
            else
            {
                if (atkPosition)
                {
                    monster.Position = CardPosition.FaceDownAttack;
                }
                else
                {
                    monster.Position = CardPosition.FaceDownDefense;
                }
            }
        }
Ejemplo n.º 2
0
 public List <Monster> GetMonstersInDefensePosition()
 {
     return(MonsterZones.Where(zone =>
                               zone.Monster != null &&
                               (zone.Monster.Position == CardPosition.FaceDownDefense ||
                                zone.Monster.Position == CardPosition.FaceUpDefense))
            .Select(zone => zone.Monster).ToList());
 }
Ejemplo n.º 3
0
        public void SendMonsterToGrave(Monster monster, YugiohGamePlayer player)
        {
            var index = MonsterZones.ToList().FindIndex(z => z.Monster == monster);

            MonsterZones[index] = new MonsterZone();
            player.DiscardPile.Add(monster);
            monster.Location = CardLocation.Graveyard;
        }
Ejemplo n.º 4
0
        public void NormalSet(Monster monster)
        {
            if (HasFreeMonsterZone() == false)
            {
                throw new Exception("No free zones to set to");
            }
            var freeZone = MonsterZones.ToList().FindIndex(z => z.Monster == null);

            MonsterZones[freeZone].Monster = monster;
            monster.Location = CardLocation.MonsterZone;
            monster.Position = CardPosition.FaceDownDefense;
        }
Ejemplo n.º 5
0
        public void TributeSummon(Monster monster)
        {
            var requiredTributes = 0;

            if (monster.Level == 5 || monster.Level == 6)
            {
                requiredTributes = 1;
            }
            if (monster.Level >= 7)
            {
                requiredTributes = 2;
            }

            var monstersOnBoard = MonsterZones.Where(z => z.Monster != null).Count();

            if (monstersOnBoard < requiredTributes)
            {
                throw new Exception("Not enough monsters on the field to tribute.");
            }
        }
Ejemplo n.º 6
0
 public bool HasFreeMonsterZone()
 {
     return(MonsterZones.Any(zone => zone.Monster == null));
 }
Ejemplo n.º 7
0
 public List <Monster> GetMonstersInAttackPosition()
 {
     return(MonsterZones.Where(zone => zone.Monster != null &&
                               zone.Monster.Position == CardPosition.FaceUpAttack)
            .Select(zone => zone.Monster).ToList());
 }
Ejemplo n.º 8
0
 public List <Monster> GetMonsters()
 {
     return(MonsterZones.Where(zone => zone.Monster != null)
            .Select(zone => zone.Monster).ToList());
 }