package school_project; import javafx.scene.Group; import javafx.scene.input.MouseButton; import school_project.Utils.MatrixShape; import java.io.FileNotFoundException; public class GameUI extends Group{ public final static int SEGMENT_SIZE = 50; public final static int SPACE_SIZE = 5; private final Vec2 piece_pos_click = new Vec2(); public GameUI(Map level) throws FileNotFoundException { super(); MatrixShape grid = new MatrixShape(level); //center the grid grid.setLayoutX((Controller.screen_size.x - grid.boundary_size.x) >> 1); grid.setLayoutY((Controller.screen_size.y - grid.boundary_size.y) >> 1); getChildren().add(grid); Vec2 piece_space = new Vec2(SPACE_SIZE, SPACE_SIZE); int column = 0; for (Piece p : level.getPieces()) { MatrixShape _piece = new MatrixShape(p); _piece.setLayoutX(piece_space.x); _piece.setLayoutY(piece_space.y); piece_space.y += _piece.boundary_size.y; if(piece_space.y >= Controller.screen_size.y){ column++; piece_space.y = SPACE_SIZE; piece_space.x = (SEGMENT_SIZE*3 + SPACE_SIZE*4 )* column; } // Pieces Events _piece.setOnMouseClicked(event -> { if(event.getButton() == MouseButton.SECONDARY){ ((Piece) _piece.shape).RotateRight(1); _piece.update(); } }); _piece.setOnMousePressed(event -> { piece_pos_click.x = (int) event.getX(); piece_pos_click.y = (int) event.getY(); }); _piece.setOnMouseDragged(event -> { _piece.setLayoutX(event.getSceneX() - piece_pos_click.x); _piece.setLayoutY(event.getSceneY() - piece_pos_click.y); }); getChildren().add(_piece); } } }