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); }
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. } }
public void MeepleFromBoardToStack(MeepleBase meeple) { MeeplesOnBoard.Remove(meeple); MeepleStack.Add(meeple); }
public void MeepleFromStackToBoard(MeepleBase meeple) { MeepleStack.Remove(meeple); MeeplesOnBoard.Add(meeple); }