Example #1
0
        private void MeepleDrop(MeepleBase meeple, Point mousePos)
        {
            double x = Math.Round((mousePos.X - CardBase.Width / 2) / CardBase.Width) * CardBase.Width;
            double y = Math.Round((mousePos.Y - CardBase.Height / 2) / CardBase.Height) * CardBase.Height;
            CardPosition2CardGridConverter pos2GridConv = new CardPosition2CardGridConverter();
            IntPoint gridPos = (IntPoint)pos2GridConv.Convert(new BindPoint(x, y), null, CardBase.Width, null);

            CardBase card = viewModel.MyCardGrid.GetCardAt(gridPos.Y, gridPos.X);

            if (card == null)
            {
                return;
            }

            if (card != viewModel.MyCardGrid.GetLastCard())
            {
                return;
            }
            // The meeple can only be dropped at the most recently card that was added to the board.

            card.Meeple = meeple;
            viewModel.CurrentPlayer.MeepleFromStackToBoard(meeple);
        }
Example #2
0
        private void ItemsControl_Drop(object sender, DragEventArgs e)
        {
            if (e.Handled == false)
            {
                //Panel _panel = sender as Panel;
                //if (_panel == null)
                //    return;
                Point mousePos = e.GetPosition(boardItemControl);

                CardBase card = e.Data.GetData("Object") as CardBase;
                if (card != null)
                {
                    CardDrop(card, mousePos);
                }

                MeepleBase meeple = e.Data.GetData("Object") as MeepleBase;
                if (meeple != null)
                {
                    MeepleDrop(meeple, mousePos);
                }

                // Todo: add effects etc.
            }
        }
Example #3
0
 public void MeepleFromBoardToStack(MeepleBase meeple)
 {
     MeeplesOnBoard.Remove(meeple);
     MeepleStack.Add(meeple);
 }
Example #4
0
 public void MeepleFromStackToBoard(MeepleBase meeple)
 {
     MeepleStack.Remove(meeple);
     MeeplesOnBoard.Add(meeple);
 }