public static void RaiseMoveRandomCards(GameView gameView, int amount, string sourceSectorCode, string targetSectorCode)
 {
     List<CardPosition> positions;
       PlayerStructure activePlayer = gameView.GameStructure.GetActivePlayer();
       ISectorView targetSectorView = (ISectorView)gameView.Controls.Find(activePlayer.Sectors.Single(e => e.Item.Code == targetSectorCode).SectorKey, true).First();
       if(GameViewHelper.TryGetSectorValidCardPositions(targetSectorView, CardPositionOffset.Top, amount, out positions))
     gameView.Controller.MoveRandomCards(amount, sourceSectorCode, targetSectorCode, positions, null);
 }
 public static void RaiseSetLifePoints(GameView gameView, PlayerStatusView playerStatusView, SetLifePointsMode mode)
 {
     if(gameView.ChangePointsAbilitationByPlayer[playerStatusView.Name])
       {
     int? num = null;
     switch(mode)
     {
       case SetLifePointsMode.Add: num = playerStatusView.PlayerPoints + 1; break;
       case SetLifePointsMode.Subtract: num = playerStatusView.PlayerPoints - 1; break;
       case SetLifePointsMode.Query:
     num = QueryForNumber(gameView, true);
     if(num.HasValue)
       num = playerStatusView.PlayerPoints + num.Value;
       break;
     }
     if(num.HasValue)
       gameView.Controller.SetPlayerPoints(playerStatusView.Name, num.Value);
       }
 }
 public static void RaiseMoveCards(GameView gameView, List<CardView> cardViews, string targetSectorCode, CardVisibility? visibility)
 {
     RaiseMoveCards(gameView, cardViews, targetSectorCode, CardPositionOffset.Top, visibility);
 }
 public static void RaiseMoveCards(GameView gameView, List<CardView> cardViews, string targetSectorCode, CardPositionOffset offset, CardVisibility? visibility)
 {
     foreach(var cardsByOwner in cardViews.GroupBy(c => c.CardViewItem.OwnerPlayerKey))
       {
     List<CardPosition> positions;
     PlayerStructure ownerPlayer = gameView.GameStructure.GetPlayer(cardsByOwner.Key);
     ISectorView targetSectorView = (ISectorView)gameView.Controls.Find(ownerPlayer.Sectors.Single(e => e.Item.Code == targetSectorCode).SectorKey, true).First();
     if(GameViewHelper.TryGetSectorValidCardPositions(targetSectorView, offset, cardsByOwner.Count(), out positions))
       gameView.Controller.MoveCards(cardsByOwner.Select(e => e.Name).ToList(), targetSectorCode, positions, visibility);
       }
 }
 public static void RaiseMoveCards(GameView gameView, List<CardView> cardViews, string targetSectorCode, CardPositionOffset offset)
 {
     RaiseMoveCards(gameView, cardViews, targetSectorCode, offset, null);
 }
 public static void RaiseDuplicateCard(GameView gameView)
 {
     List<CardPosition> cardPositions;
       var sectorKey = gameView.GameStructure.GetActivePlayer().Sectors.Single(e => e.Item.Code == SystemSectors.BATTLEFIELD.ToString()).SectorKey;
       ISectorView sectorView = (ISectorView)gameView.Controls.Find(sectorKey, true).First();
       var cardView = sectorView.CardViews.FirstOrDefault(c => c.Selected);
       if(cardView != null)
     if(GameViewHelper.TryGetSectorValidCardPositions(sectorView, CardPositionOffset.Top, 1, out cardPositions))
       gameView.Controller.DuplicateCard(cardView.Name, cardPositions.First());
 }
 public static void RaiseCreatePawn(GameView gameView)
 {
     PawnEditor dlg = new PawnEditor(string.Empty, string.Empty, string.Empty, string.Empty);
       dlg.StartPosition = FormStartPosition.CenterScreen;
       if(dlg.ShowDialog(gameView) == DialogResult.OK)
       {
     var sectorKey = gameView.GameStructure.GetActivePlayer().Sectors.Single(e => e.Item.Code == SystemSectors.BATTLEFIELD.ToString()).SectorKey;
     ISectorView sectorView = (ISectorView)gameView.Controls.Find(sectorKey, true).First();
     List<CardPosition> cardPositions;
     if(GameViewHelper.TryGetSectorValidCardPositions(sectorView, CardPositionOffset.Top, 1, out cardPositions))
       gameView.Controller.CreatePawn(sectorView.SectorKey, dlg.NewName, dlg.NewType, dlg.NewText, dlg.NewCharacteristics, cardPositions.First());
       }
 }
 public static void RaiseChangeCardCharacteristics(GameView gameView, ChangeCardCharacteristicsMode mode)
 {
     var sectorKey = gameView.GameStructure.GetActivePlayer().Sectors.Single(e => e.Item.Code == SystemSectors.BATTLEFIELD.ToString()).SectorKey;
       ISectorView sectorView = (ISectorView)gameView.Controls.Find(sectorKey, true).First();
       var cards = sectorView.CardViews.Where(c => c.Selected).ToList();
       if(cards.Count > 0)
       {
     string characteristics = null;
     bool applyNumericalIncrement = true;
     switch(mode)
     {
       case ChangeCardCharacteristicsMode.AddPower: characteristics = "1/0"; break;
       case ChangeCardCharacteristicsMode.SubtractPower: characteristics = "-1/0"; break;
       case ChangeCardCharacteristicsMode.AddToughness: characteristics = "0/1"; break;
       case ChangeCardCharacteristicsMode.SubtractToughness: characteristics = "0/-1"; break;
       case ChangeCardCharacteristicsMode.Query:
     {
       CharacteristicsEditor dlg = new CharacteristicsEditor(cards.Count > 1 ?
         string.Empty : cards.First().CardViewItem.CustomCharacteristics);
       dlg.StartPosition = FormStartPosition.CenterScreen;
       if(dlg.ShowDialog(gameView) == DialogResult.OK)
       {
         characteristics = dlg.CardCharacteristics;
         applyNumericalIncrement = dlg.ApplyNumericalIncrement;
       }
     }
     break;
     }
     if(characteristics != null)
       gameView.Controller.SetCardsCustomCharacteristics(cards.Select(c => c.Name).ToList(),
     characteristics, true, applyNumericalIncrement);
       }
 }
 public static void RaiseAddCardToken(GameView gameView)
 {
     var sectorKey = gameView.GameStructure.GetActivePlayer().Sectors.Single(e => e.Item.Code == SystemSectors.BATTLEFIELD.ToString()).SectorKey;
       ISectorView sectorView = (ISectorView)gameView.Controls.Find(sectorKey, true).First();
       var cardKeys = sectorView.CardViews.Where(c => c.Selected && c.TokenKeys.Count() < 6).Select(e => e.Name).ToList();
       if(cardKeys.Count > 0)
     gameView.Controller.AddToken(cardKeys, 1, string.Empty, TokenColor.Red);
 }