@Override
    public void mouseDown(MouseEvent mouseEvent, int x, int y) {

        Position mousePos = GfxConstants.getPositionFromXY( x, y );

        if (mouseEvent.getModifiers() == 17){

            game.performUnitActionAt(mousePos);

        } else {

            if (mousePos.equals(new Position(2,18))){
                game.endOfTurn();
                return;
            }

            if (mousePos.equals(new Position(13,19))){
                City focusCity = game.getCityAt(focusCityPos);
                String newProduction;
                if (focusCity.getProduction() == GameConstants.ARCHER){
                    newProduction = GameConstants.LEGION;
                } else if (focusCity.getProduction() == GameConstants.LEGION){
                    newProduction = GameConstants.SETTLER;
                } else {
                    newProduction = GameConstants.ARCHER;
                }
                game.changeProductionInCityAt(focusCityPos,newProduction);
                game.setTileFocus(focusCityPos);
                return;
            }

            Unit u = game.getUnitAt( mousePos );
            if (u != null) {
                lastPoint = new Point(x,y);
                dragStart = mousePos;
                draggedUnitFigure = new ImageFigure(u.getTypeString(), new Point(x,y));
                editor.drawing().add(draggedUnitFigure);
            }
            game.setTileFocus(mousePos);
            if (game.getCityAt(mousePos) != null) focusCityPos = mousePos;
        }
    }