Skip to content
Snippets Groups Projects
Select Git revision
  • ad0e7a7eaf8f970172f1271c3223449c6783e7ae
  • master default
  • renovate/opencsv.version
  • renovate/org.springframework.boot-spring-boot-starter-parent-3.x
  • renovate/junit-jupiter-engine.version
  • renovate/selenium.version
  • renovate/testcontainer.version
  • demo
  • v1_8_1
  • v2.18.1
  • v2.18.0
  • v2.17.2
  • v2.17.1
  • v2.17.0
  • v2.16.1
  • v2.16.0
  • v2.15.1
  • v2.15.0
  • v2.14.0
  • v2.13.0
  • v2.12.0
  • v2.11.0
  • v2.10.0
  • v2.9.2
  • v2.9.1
  • v2.9.0
  • v2.8.0
  • testPipeline2
  • v2.7.0
29 results

charts.js

Blame
  • LevelPackSelectController.java 4.43 KiB
    package de.bricked.ui;
    
    import java.io.IOException;
    import java.util.Locale;
    import java.util.ResourceBundle;
    
    import de.bricked.game.Game;
    import de.bricked.game.levels.LevelPack;
    import de.bricked.game.levels.LevelPackHandler;
    import de.bricked.ui.cells.LevelPackCell;
    import javafx.application.Platform;
    import javafx.collections.FXCollections;
    import javafx.event.EventHandler;
    import javafx.fxml.FXML;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.control.Label;
    import javafx.scene.control.ListCell;
    import javafx.scene.control.ListView;
    import javafx.scene.control.ScrollPane;
    import javafx.scene.control.ScrollPane.ScrollBarPolicy;
    import javafx.scene.image.Image;
    import javafx.scene.input.KeyEvent;
    import javafx.scene.input.MouseEvent;
    import javafx.scene.layout.AnchorPane;
    import javafx.stage.Modality;
    import javafx.stage.Stage;
    import javafx.stage.WindowEvent;
    import javafx.util.Callback;
    import logger.LogLevel;
    import logger.Logger;
    
    public class LevelPackSelectController
    {
    	@FXML private AnchorPane mainPane;
    	@FXML private ScrollPane pane;
    	@FXML private Label labelLevelPack;
    
    	public Stage stage;
    	public Image icon = new Image("de/bricked/resources/icon.png");
    	public final ResourceBundle bundle = ResourceBundle.getBundle("de/bricked/main/", Locale.GERMANY);
    	public Controller controller;
    	public Game game;
    
    	public void init(Stage stage, Controller controller, Game game)
    	{
    		this.stage = stage;
    		this.controller = controller;
    		this.game = game;
    
    		reload();
    
    		pane.setHbarPolicy(ScrollBarPolicy.NEVER);
    		pane.setVbarPolicy(ScrollBarPolicy.AS_NEEDED);
    	
    		pane.setStyle("-fx-background-color:transparent;");
    
    		mainPane.setOnKeyReleased(new EventHandler<KeyEvent>()
    		{
    			@Override
    			public void handle(KeyEvent event)
    			{
    				if(event.getCode().toString().equals(controller.bundle.getObject("shortcut.debug.console")))
    				{
    					showCommandLine();
    					Logger.log(LogLevel.INFO, "openend debug console");
    					event.consume();
    				}
    				
    				if(event.getCode().toString().equals("ESCAPE"))
    				{
    					back();
    					event.consume();
    				}
    			}
    		});
    
    		stage.setOnCloseRequest(new EventHandler<WindowEvent>()
    		{
    			@Override
    			public void handle(WindowEvent event)
    			{
    				// TODO achievementhandling
    
    				Platform.exit();
    			}
    		});
    	}
    
    	public void reload()
    	{
    		CustomListView<LevelPack> listView = new CustomListView<LevelPack>(FXCollections.observableList(LevelPackHandler.getAllLevelPacks()));
    
    		listView.setCellFactory(new Callback<ListView<LevelPack>, ListCell<LevelPack>>()
    		{
    			@Override
    			public ListCell<LevelPack> call(ListView<LevelPack> param)
    			{
    				return new LevelPackCell(pane.getMaxWidth() - 14);
    			}
    		});
    		listView.setStyle("-fx-background-color: transparent");
    		
    		listView.setHScrollBarEnabled(false);
    
    		listView.prefWidthProperty().bind(pane.maxWidthProperty());
    		listView.prefHeightProperty().bind(pane.maxHeightProperty().subtract(10));
    
    		listView.setOnMouseClicked(new EventHandler<MouseEvent>()
    		{
    			@Override
    			public void handle(MouseEvent event)
    			{				
    				LevelPack selectedPack = listView.getSelectionModel().getSelectedItem();			
    				if(selectedPack != null)
    				{
    					game.setLevelPack(selectedPack);
    
    					try
    					{
    						FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/bricked/ui/LevelSelectGUI.fxml"));
    
    						Parent root = (Parent)fxmlLoader.load();
    						Stage newStage = new Stage();
    						newStage.setScene(new Scene(root, 650, 800));
    						newStage.getScene().getStylesheets().add("de/bricked/ui/style.css");
    						newStage.setTitle("Level Select");
    						newStage.initOwner(stage);
    
    						newStage.getIcons().add(icon);
    						LevelSelectController newController = fxmlLoader.getController();
    						newController.init(newStage, getController(), game);
    
    						newStage.initModality(Modality.NONE);
    						newStage.setResizable(false);
    						stage.hide();
    						newStage.show();
    					}
    					catch(IOException e1)
    					{
    						Logger.log(LogLevel.ERROR, Logger.exceptionToString(e1));
    					}
    				}
    			}
    		});
    
    		pane.setContent(listView);
    	}
    
    	private LevelPackSelectController getController()
    	{
    		return this;
    	}
    
    	public void back()
    	{
    		stage.close();
    		controller.stage.show();
    	}
    
    	public void showCommandLine()
    	{
    		try
    		{
    			controller.getCommandLine().showCommandLine("Debug Console", 400, 250, 400, 200, - 1, - 1, true);
    		}
    		catch(IOException e)
    		{
    			// TODO: errorhandling
    			Logger.log(LogLevel.ERROR, Logger.exceptionToString(e));
    		}
    	}
    }