public bool CanMove() { var startField = board.fields[posStartX, posStartY]; if (posEndX > 7 || posEndX < 0 || posEndY > 7 || posEndY < 0) { return(false); } var endField = board.fields[posEndX, posEndY]; switch (pawnController.state) { case State.Counter: CheckQueen(startField, endField); if (Math.Abs(posStartX - posEndX) > 1) { if (beatChecker.CanCounterBeat(startField, endField)) { move = true; beat = true; beatX = Math.Max(startField.X, endField.X) - 1; beatY = Math.Max(startField.Y, endField.Y) - 1; } } else if (beatChecker.CanCounterMove(startField, endField)) { move = true; } if (move) { return(true); } return(false); case State.Queen: Debug.Log("QUEEN MOVE"); if (beatChecker.CanQueenMove(startField, endField)) { move = true; } else if (beatChecker.CanQueenBeat(startField, endField)) { move = true; beat = true; beatX = beatChecker.BeatX; beatY = beatChecker.BeatY; } if (move) { return(true); } return(false); default: return(false); } }