public DiscardPileController(IGameUIServices uiServices, FanCanvas shape, GameState gameState) : base(uiServices, shape, gameState) { RenderContents(); gameState.Discard.ContentsChanged += new EventHandler(Discard_ContentsChanged); }
public StockPileController(IGameUIServices uiServices, FanCanvas shape, GameState gameState) : base(uiServices, shape, gameState) { RenderContents(); GameState.Stock.ContentsChanged += new EventHandler(Stock_ContentsChanged); }
public RandomAICardsController(IGameUIServices uiServices, FanCanvas shape, GameState gameState, Player player) : base(uiServices, shape, gameState, player, false) { AutoPlay = true; possibleMoves = new PossibleMoves(player, gameState); gameState.MoveHappened += gameState_PlayerActed; InitMoveSelectorsPriorityList(); }
public PlayerCardsController(IGameUIServices uiServices, FanCanvas shape, GameState gameState, Player player, bool cardsEnabled) : base(uiServices, shape, gameState) { _player = player; _cardsEnabled = cardsEnabled; if (cardsEnabled) { shape.SortCards = true; } shape.Children.Clear(); RenderContents(); GameState.GetCards(player).CollectionChanged += new NotifyCollectionChangedEventHandler(PlayerCardsController_CollectionChanged); }
private void FanCanvas_CardDrop(object sender, CardDropEventArgs e) { var hitTestResult = VisualTreeHelper.HitTest(this, e.MouseEventArgs.GetPosition(this)); FanCanvas fan = null; if (hitTestResult != null) { fan = FindFanCanvasAncestor(hitTestResult.VisualHit); } if (fan == null) { ((FanCanvas)sender).CancelDrag(); } else { var sourceController = FanCanvasControllers[(FanCanvas)sender]; var card = sourceController.CardFromShape(e.CardShape); //Debug.Assert(card != null);//*** if (card == null) { ((FanCanvas)sender).CancelDrag(); } else { var targetController = FanCanvasControllers[fan]; if (targetController.AcceptDrop(card)) { sourceController.DropAcceptedNotification(card); if (sourceController == HumanCardsController && humanCards.HasVisibleCards() == false) { foreach (var mshape in MeldShapes[HumanPlayer]) { ((MeldController)FanCanvasControllers[mshape]).SubmitToGameState(); } } } else { ((FanCanvas)sender).CancelDrag(); } } } }
private void CreateMeldShapesFor(Player player, double startTop, double topIncrement) { var shapes = new List <FanCanvas>(); var top = startTop; for (int i = 0; i < 3; i++) { var fc = new FanCanvas() { Orientation = Orientation.Horizontal, Spacing = 15, AngleIncrement = 5, SortCards = true }; shapes.Add(fc); MainCanvas.Children.Add(fc); Canvas.SetTop(fc, top); Canvas.SetLeft(fc, 640 + (CardGroupControllerBase.CardHeight) * i); var controller = new MeldController(this, fc, GameState, player); FanCanvasControllers.Add(fc, controller); top += topIncrement; } MeldShapes[player] = shapes; }
public PlayerCardsController(IGameUIServices uiServices, FanCanvas shape, GameState gameState, Player player) : this(uiServices, shape, gameState, player, true) { }
protected static void SyncShapeChildrenWithModel(IEnumerable <Card> cardsInModel, FanCanvas fanCanvas, bool cardsEnabled, bool showFace, bool highlightNewlyCreatedCards) { fanCanvas.Dispatcher.Invoke(new Action(() => { foreach (var c in cardsInModel.Where(x => fanCanvas.Children .OfType <CardShape>() .All(y => y.GetCardFace() != x.ToString()))) { fanCanvas.Children.Add(new CardShape() { Face = c.ToString(), Width = CardWidth, Height = CardHeight, IsEnabled = cardsEnabled, HideFace = !showFace, HighlightOnVisibility = highlightNewlyCreatedCards }); } foreach (var cshape in fanCanvas.Children .OfType <CardShape>() .Where(x => cardsInModel .All(y => y.ToString() != x.GetCardFace())) .ToList()) { fanCanvas.Children.Remove(cshape); } })); }
public CardGroupControllerBase(IGameUIServices uiServices, FanCanvas shape, GameState gameState) { _shape = shape; _gameState = gameState; _uiServices = uiServices; }
public MeldController(IGameUIServices uiServices, FanCanvas shape, GameState gameState, Player meldOwner) : base(uiServices, shape, gameState) { _meldOwner = meldOwner; GameState.BeforeStateChange += BeforeStateChange; }