public Event.Game.ValidMovesEvent requestValidMoves(Event.Game.RequestValidMovesEvent e)
        {
            bool isPlaying = this.gameMachine.getPlayers()[e.PlayerId()].getCurrentState().GetType().Equals(typeof(PlayerPlayingState));
            if (isPlaying)
            { 
                int r = e.getPositionDetail().getRow();
                int c = e.getPositionDetail().getCol();
                List<Position> validPositions = this.gameMachine.getBoardMachine().getBoard().getPieces()[r, c].getValidNextPositions();

                List<PositionDetail> pDetails = new List<PositionDetail>();
                foreach (Position p in validPositions)
                {
                    PositionDetail pd = new PositionDetail(p.getRow(), p.getCol());
                    pDetails.Add(pd);
                }

                return new ValidMovesEvent(pDetails);
            }

            return ValidMovesEvent.notFound();
        }