Example #1
0
        public void RemoveCard(FieldCard card)
        {
            if (this._card != card)
            {
                throw new ArgumentException("Try to remove wrong card");
            }

            this._card = null;
        }
Example #2
0
        public void SetCard(FieldCard card)
        {
            if (IsBusy())
            {
                throw new ArgumentException("Cell is not empty");
            }

            _card = card;
        }
Example #3
0
        public override Status ValidateRange(FieldCard target)
        {
            if (target.Abilities.Has <Camouflage>())
            {
                return(Status.TargetIsUnderCamouflage);
            }

            return(!target.IsSpotted() ? Status.TargetIsNotSpotted : Status.Success);
        }
Example #4
0
        private GameAction Spotted(FieldCard card)
        {
            if (!_cards.Contains(card.Id))
            {
                _cards.Add(card.Id);
                return(new Spotted(card));
            }

            return(null);
        }
Example #5
0
        public Task <Ability> Display(FieldCard card)
        {
            completionSource = new TaskCompletionSource <Ability>();

            ClearButtons();
            CreateButtons(card);
            SubscribeButtons();

            return(completionSource.Task);
        }
Example #6
0
        private GameAction Unspotted(FieldCard card)
        {
            if (_cards.Contains(card.Id))
            {
                _cards.Remove(card.Id);
                return(new Unspotted(card));
            }

            return(null);
        }
Example #7
0
 private void CreateButtons(FieldCard card)
 {
     Debug.Log(card);
     foreach (var ability in card.Abilites)
     {
         var i = Instantiate(buttonPrefab, buttonRoot).GetComponent <Button>();
         i.GetComponentInChildren <TextMeshProUGUI>().text = ability.Name;
         abilityButtons.Add(ability, i);
     }
 }
Example #8
0
 public Fight(FieldCard source, FieldCard target)
 {
     Source = source;
     Target = target;
 }
Example #9
0
 private FightRound GetRoundFor(FieldCard card)
 {
     return(_rounds[HasFirstStrike(card) ? 0 : 1]);
 }
Example #10
0
 public override Status ValidateRange(FieldCard target)
 {
     return(!GetCard().GetFieldLocation().GetCell().IsAdjoiningTo(target.GetFieldLocation().GetCell()) ? Status.TargetIsTooFar : Status.Success);
 }
Example #11
0
 public CounterAttack(FieldCard source, FieldCard target)
     : base(source, target)
 {
 }
Example #12
0
 public Spotted(FieldCard card)
 {
     Card = card;
 }
Example #13
0
 internal IEnumerable <GameAction> Activate(FieldCard target)
 {
     return(GetSpecificAbility().GetActions(target));
 }
Example #14
0
        public void CardAutoDraw()
        {
            Engine engine = new Engine();
            Logger logger = new Logger(engine);
            Manage manage = new Manage(engine);

            var autoDraw = engine.Triggers.Register <CardAutoDraw>();

            var player = engine.Chiefs[0];
            var enemy  = engine.Chiefs[1];

            player.Cards.SetShuffleOff();

            var plCards = new FieldCard[] {
                player.Cards.Factory.Create <TankLight>(),
                player.Cards.Factory.Create <TankMedium>(),
                player.Cards.Factory.Create <TankHeavy>(),
                player.Cards.Factory.Create <TankSpg>()
            };

            var enCards = new FieldCard[] {
                enemy.Cards.Factory.Create <TankLight>(),
                enemy.Cards.Factory.Create <TankMedium>(),
                enemy.Cards.Factory.Create <TankHeavy>(),
                enemy.Cards.Factory.Create <TankSpatg>()
            };

            Assert.AreEqual(1, autoDraw.GetCount());
            autoDraw.SetCount(2);
            Assert.AreEqual(2, autoDraw.GetCount());
            autoDraw.SetCount(1);
            Assert.AreEqual(1, autoDraw.GetCount());

            manage.StartGame(enemy);

            Assert.AreEqual(0, player.Cards.CountLocation(Location.Reserve));
            Assert.AreEqual(0, enemy.Cards.CountLocation(Location.Reserve));

            manage.EndTurn(enemy);

            Assert.AreEqual(1, player.Cards.CountLocation(Location.Reserve));
            Assert.AreEqual(0, enemy.Cards.CountLocation(Location.Reserve));
            Assert.IsTrue(plCards[0].GetLocation().IsReserve());

            manage.EndTurn(player);

            Assert.AreEqual(1, player.Cards.CountLocation(Location.Reserve));
            Assert.AreEqual(1, enemy.Cards.CountLocation(Location.Reserve));

            manage.EndTurn(enemy);
            manage.EndTurn(player);

            Assert.AreEqual(2, player.Cards.CountLocation(Location.Reserve));
            Assert.AreEqual(2, enemy.Cards.CountLocation(Location.Reserve));

            manage.EndTurn(enemy);
            manage.EndTurn(player);

            Assert.AreEqual(3, player.Cards.CountLocation(Location.Reserve));
            Assert.AreEqual(3, enemy.Cards.CountLocation(Location.Reserve));

            manage.EndTurn(enemy);
            manage.EndTurn(player);

            Assert.AreEqual(4, player.Cards.CountLocation(Location.Reserve));
            Assert.AreEqual(4, enemy.Cards.CountLocation(Location.Reserve));

            manage.EndTurn(enemy);
            manage.EndTurn(player);
            manage.EndTurn(enemy);
            manage.EndTurn(player);
            manage.EndTurn(enemy);
            manage.EndTurn(player);

            Utils.ArrayAreEqual(plCards, player.Cards.FromLocation(Location.Reserve));
            Utils.ArrayAreEqual(enCards, enemy.Cards.FromLocation(Location.Reserve));
        }
Example #15
0
 public Move(FieldCard card, Cell cell)
 {
     Card = card;
     Cell = cell;
 }
Example #16
0
 public Move Move(FieldCard card, Cell cell)
 {
     return(Launch(new Move(card, cell)));
 }
Example #17
0
 public Deploy Deploy(FieldCard card, Cell cell)
 {
     return(Launch(new Deploy(card, cell)));
 }
Example #18
0
 public Position Position(FieldCard card, Cell cell)
 {
     return(Launch(new Position(card, cell)));
 }
Example #19
0
 public Fight Fight(FieldCard source, FieldCard target)
 {
     return(Launch(new Fight(source, target)));
 }
Example #20
0
 public GiveOrder Order(Order order, FieldCard target)
 {
     return(Launch(new GiveOrder(order, target)));
 }
Example #21
0
 private bool HasFirstStrike(FieldCard card)
 {
     return(card.Abilities.Has <FirstStrike>());
 }
Example #22
0
 private GameAction GetChange(FieldCard card)
 {
     return(card.IsSpotted()
         ? Spotted(card)
         : Unspotted(card));
 }
Example #23
0
 private bool CanPreventCounter(FieldCard source)
 {
     return(source.Abilities.Has <WeaponArtillery>() ||
            source.Abilities.Has <Cover>());
 }
Example #24
0
 public GiveOrder(Order source, FieldCard target)
 {
     Source = source;
     Target = target;
 }
Example #25
0
 public Step(FieldCard card, Cell cell)
 {
     Card = card;
     Cell = cell;
 }
Example #26
0
 public Position(FieldCard card, Cell cell)
 {
     Card = card;
     Cell = cell;
 }
Example #27
0
 public DealDamage Damage(int value, FieldCard target, Card source)
 {
     return(Launch(new DealDamage(value, source, target)));
 }
Example #28
0
 public Unspotted(FieldCard card)
 {
     Card = card;
 }
Example #29
0
 public CardFieldLocation(FieldCard card)
 {
     Card = card;
 }
Example #30
0
        public void NoHq()
        {
            Engine engine = new Engine();
            Logger logger = new Logger(engine);
            Manage manage = new Manage(engine);

            var field  = engine.Field;
            var player = engine.Chiefs[0];
            var enemy  = engine.Chiefs[1];

            var plCards = new FieldCard[] {
                player.Cards.Factory.Create <TankLight>(),
                player.Cards.Factory.Create <TankMedium>(),
                player.Cards.Factory.Create <TankHeavy>(),
                player.Cards.Factory.Create <TankSpg>()
            };

            var enCards = new FieldCard[] {
                enemy.Cards.Factory.Create <TankLight>(),
                enemy.Cards.Factory.Create <TankMedium>(),
                enemy.Cards.Factory.Create <TankHeavy>(),
                enemy.Cards.Factory.Create <TankSpatg>()
            };

            manage.SetResources(player, 50);
            manage.SetResources(enemy, 50);

            manage.Draw(plCards);
            manage.Draw(enCards);

            manage.StartGame(player);

            Assert.IsTrue(plCards[0].GetLocation().IsReserve());

            manage.Deploy(plCards[0], field.GetCell(0, 0));
            Assert.IsTrue(plCards[0].GetLocation().IsBattlefield());
            Assert.AreEqual(plCards[0], field.GetCell(0, 0).GetCard());

            manage.EndTurn(player);

            manage.Deploy(enCards[2], field.GetCellSoft(-1, 2));
            Assert.IsTrue(enCards[2].GetFieldLocation().IsBattlefield());
            Assert.AreEqual(enCards[2], field.GetCellSoft(-1, 2).GetCard());
            Assert.AreEqual(enCards[2], field.GetCell(4, 2).GetCard());

            var deploy = manage.Deploy(plCards[1], field.GetCell(0, 1));

            Assert.AreEqual(Status.NotTurnOfSource, deploy.GetStatus());
            Assert.IsTrue(plCards[1].GetFieldLocation().IsReserve());

            manage.EndTurn(enemy);

            var deploys = new[] {
                manage.Deploy(plCards[1], field.GetCell(0, 1)),
                manage.Deploy(plCards[2], field.GetCell(0, 1)),
                manage.Deploy(plCards[3], field.GetCell(3, 1)),
            };

            Assert.IsTrue(deploys[0].IsValid());
            Assert.AreEqual(Status.CellIsNotAllowed, deploys[1].GetStatus());
            Assert.AreEqual(Status.CellIsNotAllowed, deploys[2].GetStatus());

            Assert.IsTrue(plCards[1].GetFieldLocation().IsBattlefield());
            Assert.IsTrue(plCards[2].GetFieldLocation().IsReserve());
            Assert.IsTrue(plCards[3].GetFieldLocation().IsReserve());
            Assert.AreEqual(null, plCards[3].GetFieldLocation().GetCell());

            manage.EndTurn(player);

            manage.Deploy(enCards[0], field.GetCellSoft(-1, 0));
            manage.Deploy(enCards[1], field.GetCellSoft(-1, 1));

            Assert.AreEqual(field.GetCellSoft(-1, 0), enCards[0].GetFieldLocation().GetCell());
            Assert.AreEqual(field.GetCellSoft(-1, 1), enCards[1].GetFieldLocation().GetCell());
        }