diff --git a/src/main/java/fri/shapesge/engine/Game.java b/src/main/java/fri/shapesge/engine/Game.java index 6600fd4..60c7726 100644 --- a/src/main/java/fri/shapesge/engine/Game.java +++ b/src/main/java/fri/shapesge/engine/Game.java @@ -93,4 +93,8 @@ public void deregisterEventTarget(Object target) { public GameSoundSystem getGameSoundSystem() { return this.gameSoundSystem; } + + public void adjustFullscreenScaling(int width, int height) { + this.gameWindow.resizeFullscreenScaling(width, height); + } } diff --git a/src/main/java/fri/shapesge/engine/GameWindow.java b/src/main/java/fri/shapesge/engine/GameWindow.java index 4601def..d2d43de 100644 --- a/src/main/java/fri/shapesge/engine/GameWindow.java +++ b/src/main/java/fri/shapesge/engine/GameWindow.java @@ -29,8 +29,8 @@ class GameWindow { private final GameObjects gameObjects; private final GameInputProcessor gameInputProcessor; private final GameFPSCounter fpsCounter; - private final int width; - private final int height; + private int width; + private int height; private final GameEventDispatcher gameEventDispatcher; private final Color backgroundColor; private final boolean showInfo; @@ -122,6 +122,22 @@ public void showIfNeeded() { } } + public void resizeFullscreenScaling(int width, int height) { + if (this.isFullscreen) { + DEVICE.setFullScreenWindow(null); + + this.width = width; + this.height = height; + + Dimension dimension = new Dimension(width, height); + this.frame.setSize(dimension); + this.gamePanel.setPreferredSize(dimension); + + DEVICE.setFullScreenWindow(this.frame); + this.gamePanel.resized(); + } + } + private class GamePanel extends Canvas { private AffineTransform canvasTransform; private AffineTransform invertedCanvasTransform;