コード例 #1
0
        public DiscardPileController(IGameUIServices uiServices, FanCanvas shape, GameState gameState)
            : base(uiServices, shape, gameState)
        {
            RenderContents();

            gameState.Discard.ContentsChanged += new EventHandler(Discard_ContentsChanged);
        }
コード例 #2
0
ファイル: StockPileController.cs プロジェクト: zessiez/always
        public StockPileController(IGameUIServices uiServices, FanCanvas shape, GameState gameState)
            : base(uiServices, shape, gameState)
        {
            RenderContents();

            GameState.Stock.ContentsChanged += new EventHandler(Stock_ContentsChanged);
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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);
        }
コード例 #5
0
ファイル: GameShape.xaml.cs プロジェクト: zessiez/always
        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();
                    }
                }
            }
        }
コード例 #6
0
ファイル: GameShape.xaml.cs プロジェクト: zessiez/always
        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;
        }
コード例 #7
0
 public PlayerCardsController(IGameUIServices uiServices, FanCanvas shape, GameState gameState, Player player)
     : this(uiServices, shape, gameState, player, true)
 {
 }
コード例 #8
0
        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);
                }
            }));
        }
コード例 #9
0
 public CardGroupControllerBase(IGameUIServices uiServices, FanCanvas shape, GameState gameState)
 {
     _shape      = shape;
     _gameState  = gameState;
     _uiServices = uiServices;
 }
コード例 #10
0
 public MeldController(IGameUIServices uiServices, FanCanvas shape, GameState gameState, Player meldOwner)
     : base(uiServices, shape, gameState)
 {
     _meldOwner = meldOwner;
     GameState.BeforeStateChange += BeforeStateChange;
 }