public void RemoveCard(FieldCard card) { if (this._card != card) { throw new ArgumentException("Try to remove wrong card"); } this._card = null; }
public void SetCard(FieldCard card) { if (IsBusy()) { throw new ArgumentException("Cell is not empty"); } _card = card; }
public override Status ValidateRange(FieldCard target) { if (target.Abilities.Has <Camouflage>()) { return(Status.TargetIsUnderCamouflage); } return(!target.IsSpotted() ? Status.TargetIsNotSpotted : Status.Success); }
private GameAction Spotted(FieldCard card) { if (!_cards.Contains(card.Id)) { _cards.Add(card.Id); return(new Spotted(card)); } return(null); }
public Task <Ability> Display(FieldCard card) { completionSource = new TaskCompletionSource <Ability>(); ClearButtons(); CreateButtons(card); SubscribeButtons(); return(completionSource.Task); }
private GameAction Unspotted(FieldCard card) { if (_cards.Contains(card.Id)) { _cards.Remove(card.Id); return(new Unspotted(card)); } return(null); }
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); } }
public Fight(FieldCard source, FieldCard target) { Source = source; Target = target; }
private FightRound GetRoundFor(FieldCard card) { return(_rounds[HasFirstStrike(card) ? 0 : 1]); }
public override Status ValidateRange(FieldCard target) { return(!GetCard().GetFieldLocation().GetCell().IsAdjoiningTo(target.GetFieldLocation().GetCell()) ? Status.TargetIsTooFar : Status.Success); }
public CounterAttack(FieldCard source, FieldCard target) : base(source, target) { }
public Spotted(FieldCard card) { Card = card; }
internal IEnumerable <GameAction> Activate(FieldCard target) { return(GetSpecificAbility().GetActions(target)); }
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)); }
public Move(FieldCard card, Cell cell) { Card = card; Cell = cell; }
public Move Move(FieldCard card, Cell cell) { return(Launch(new Move(card, cell))); }
public Deploy Deploy(FieldCard card, Cell cell) { return(Launch(new Deploy(card, cell))); }
public Position Position(FieldCard card, Cell cell) { return(Launch(new Position(card, cell))); }
public Fight Fight(FieldCard source, FieldCard target) { return(Launch(new Fight(source, target))); }
public GiveOrder Order(Order order, FieldCard target) { return(Launch(new GiveOrder(order, target))); }
private bool HasFirstStrike(FieldCard card) { return(card.Abilities.Has <FirstStrike>()); }
private GameAction GetChange(FieldCard card) { return(card.IsSpotted() ? Spotted(card) : Unspotted(card)); }
private bool CanPreventCounter(FieldCard source) { return(source.Abilities.Has <WeaponArtillery>() || source.Abilities.Has <Cover>()); }
public GiveOrder(Order source, FieldCard target) { Source = source; Target = target; }
public Step(FieldCard card, Cell cell) { Card = card; Cell = cell; }
public Position(FieldCard card, Cell cell) { Card = card; Cell = cell; }
public DealDamage Damage(int value, FieldCard target, Card source) { return(Launch(new DealDamage(value, source, target))); }
public Unspotted(FieldCard card) { Card = card; }
public CardFieldLocation(FieldCard card) { Card = card; }
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()); }