diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/AppLibGDXImpl.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/AppLibGDXImpl.java index db9b976..cacb011 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/AppLibGDXImpl.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/AppLibGDXImpl.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -30,9 +30,9 @@ import com.pixelgamelibrary.api.Platform; import com.pixelgamelibrary.api.interfaces.App; import com.pixelgamelibrary.api.game.Game; import com.pixelgamelibrary.api.PixelFeature; -import com.pixelgamelibrary.api.utils.ClipBoard; -import com.pixelgamelibrary.api.utils.LogLevel; -import com.pixelgamelibrary.api.utils.Preferences; +import com.pixelgamelibrary.api.app.ClipBoard; +import com.pixelgamelibrary.api.app.LogLevel; +import com.pixelgamelibrary.api.app.Preferences; /** * diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/AudioLibGDXImpl.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/AudioLibGDXImpl.java index 51a93f1..869dc74 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/AudioLibGDXImpl.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/AudioLibGDXImpl.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/ElementLibGDXImpl.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/ElementLibGDXImpl.java index 8c3470a..debb1cc 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/ElementLibGDXImpl.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/ElementLibGDXImpl.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/FilesLibGDXImpl.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/FilesLibGDXImpl.java index c446f3a..c64aa04 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/FilesLibGDXImpl.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/FilesLibGDXImpl.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -49,7 +49,7 @@ public class FilesLibGDXImpl implements Files { } @Override - public Storage relative(String absolutePath) { + public Storage relative() { throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody } diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/GraphicsLibGDXImpl.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/GraphicsLibGDXImpl.java index 50d5873..afc795f 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/GraphicsLibGDXImpl.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/GraphicsLibGDXImpl.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -21,13 +21,12 @@ package com.pixelgamelibrary.backend.libgdx; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Graphics; -import com.pixelgamelibrary.api.DisplayMode; +import com.pixelgamelibrary.api.ViewMode; import com.pixelgamelibrary.api.PixelException; -import com.pixelgamelibrary.api.utils.Monitor; -import java.util.Arrays; +import com.pixelgamelibrary.api.graphics.Monitor; +import com.pixelgamelibrary.backend.libgdx.graphics.LibGdxMonitor; +import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; -//import com.pixelgamelibrary.api.interfaces.Graphics; /** * @@ -35,69 +34,37 @@ import java.util.stream.Collectors; */ public class GraphicsLibGDXImpl implements com.pixelgamelibrary.api.interfaces.Graphics { - - @Override - public DisplayMode setDisplayMode(boolean fullscreen, boolean window) { - - if (fullscreen) { - Graphics.Monitor currentMonitor = Gdx.graphics.getMonitor(); - Graphics.DisplayMode displayModeFromLibGdx = Gdx.graphics.getDisplayMode(currentMonitor); - if (originalDisplayMode == null) { - originalDisplayMode = displayModeFromLibGdx; - } - - Graphics.DisplayMode foundVgaDisplayMode = null; - //// -// System.out.println("started loading all display modes"); - List vgaDisplayModes = Arrays - .asList(Gdx.graphics.getDisplayModes(currentMonitor)) - .stream() - .filter(d -> d.width == 640 && d.height == 480) - .collect(Collectors.toList()); - -//fixme -// foundVgaDisplayMode = vgaDisplayModes.stream() -// .sorted((a, b) -> Integer.valueOf(a.refreshRate).compareTo(b.refreshRate)).findFirst().get(); -// System.out.println("ended loading all display modes"); -// System.out.println(foundVgaDisplayMode.refreshRate); -// System.out.println(foundVgaDisplayMode.width); -// System.out.println(foundVgaDisplayMode.height); - //// - if (!Gdx.graphics.setFullscreenMode(foundVgaDisplayMode == null ? displayModeFromLibGdx : foundVgaDisplayMode)) { - Gdx.app.error("InitScreen", "Switching to fullscreen mode failed."); - return null; - } - return DisplayMode.FULLSCREEN; - - } - if (window) { - setToOriginalDisplayMode(); - Gdx.graphics.setWindowedMode(640, 480); - return DisplayMode.WINDOW; - } - throw new PixelException("Unsupported DisplayMode: fullscreen=" + fullscreen + " window=" + window); - - } - @Override - public boolean setToOriginalDisplayMode() { - if (originalDisplayMode == null) { - //nothing to do - return true; - } - if (!Gdx.graphics.setFullscreenMode(originalDisplayMode)) { - Gdx.app.error("DefinitiveFrameworkLibGdxImpl", "Switching to original display mode failed."); - return false; - } else { - return true; - } - - } - - private Graphics.DisplayMode originalDisplayMode = null; - @Override public List getMonitors() { - throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody + List result = new ArrayList<>(); + for(Graphics.Monitor m:Gdx.graphics.getMonitors()) { + result.add(new LibGdxMonitor(m)); + } + return result; + } + + @Override + public Monitor getMonitor() { + return new LibGdxMonitor(Gdx.graphics.getMonitor()); + } + + @Override + public Monitor getPrimaryMonitor() { + return new LibGdxMonitor(Gdx.graphics.getPrimaryMonitor()); + } + + @Override + public String getTitle() { + throw new PixelException("Unsupported operation"); + } + + /** + * + * @param title + */ + @Override + public void setTitle(String title) { + Gdx.graphics.setTitle(title); } } diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/InputLibGDXImpl.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/InputLibGDXImpl.java index e394756..b724d32 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/InputLibGDXImpl.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/InputLibGDXImpl.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/InternalLibGDXImpl.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/InternalLibGDXImpl.java index 580a5cd..ed0be12 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/InternalLibGDXImpl.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/InternalLibGDXImpl.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/NetLibGDXImpl.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/NetLibGDXImpl.java index 3881540..84a6176 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/NetLibGDXImpl.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/NetLibGDXImpl.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/PixelBackendLibGDX.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/PixelBackendLibGDX.java index d043e5d..9928e47 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/PixelBackendLibGDX.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/PixelBackendLibGDX.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/UtilsLibGDXImpl.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/UtilsLibGDXImpl.java index 5a911c5..9c8d472 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/UtilsLibGDXImpl.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/UtilsLibGDXImpl.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/game/LibGdxGame.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/game/LibGdxGame.java index 2877319..123465a 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/game/LibGdxGame.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/game/LibGdxGame.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/graphics/LibGdxMonitor.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/graphics/LibGdxMonitor.java new file mode 100644 index 0000000..bb4804f --- /dev/null +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/graphics/LibGdxMonitor.java @@ -0,0 +1,161 @@ +/////////////////////////////////////////////////////////////////////////////////////////////// +// Pixel: LibGdx Backend. +// Copyright (C) 2024 the original author or authors. +// +// This program is free software: you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation, either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// or write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +/////////////////////////////////////////////////////////////////////////////////////////////// +package com.pixelgamelibrary.backend.libgdx.graphics; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Graphics; +import com.pixelgamelibrary.api.PixelException; +import com.pixelgamelibrary.api.ViewMode; +import static com.pixelgamelibrary.api.ViewMode.WINDOW; +import com.pixelgamelibrary.api.graphics.Monitor; +import com.pixelgamelibrary.api.graphics.MonitorMode; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +/** + * + * @author robertvokac + */ +public class LibGdxMonitor implements Monitor { + + private final Graphics.Monitor internalMonitor; + + public LibGdxMonitor(Graphics.Monitor internalMonitorIn) { + this.internalMonitor = internalMonitorIn; + } + + @Override + public String getName() { + return internalMonitor.name; + } + + @Override + public int getVirtualWidth() { + return internalMonitor.virtualX; + } + + @Override + public int getVirtualHeight() { + return internalMonitor.virtualY; + } + + @Override + public MonitorMode getMonitorMode() { + Graphics.DisplayMode displayModeFromLibGdx = Gdx.graphics.getDisplayMode(internalMonitor); + return toMonitorMode(displayModeFromLibGdx); + } + + private MonitorMode toMonitorMode(Graphics.DisplayMode displayModeFromLibGdx) { + return new MonitorMode( + displayModeFromLibGdx.width, + displayModeFromLibGdx.height, + displayModeFromLibGdx.refreshRate, + displayModeFromLibGdx.bitsPerPixel); + } + + @Override + public List listSupportedMonitorModes() { + Graphics.DisplayMode[] displayModesFromLibGdx = Gdx.graphics.getDisplayModes(internalMonitor); + List result = new ArrayList<>(); + for (Graphics.DisplayMode mode : displayModesFromLibGdx) { + result.add(toMonitorMode(mode)); + } + return result; + } + + @Override + public boolean setMonitorMode(MonitorMode monitorMode) { + Optional libGdxDisplayModes = Arrays + .asList(Gdx.graphics.getDisplayModes(internalMonitor)) + .stream() + .filter(m + -> m.width == monitorMode.getWidth() + && m.height == monitorMode.getHeight() + && m.refreshRate == monitorMode.getRefreshRate() + && m.bitsPerPixel == monitorMode.getBitsPerPixel() + ) + .findFirst(); + if (libGdxDisplayModes.isEmpty()) { + throw new PixelException("Unsupported MonitorMode: " + monitorMode.toString()); + } + boolean success = Gdx.graphics.setFullscreenMode(libGdxDisplayModes.get()); + return success; + } + + @Override + public boolean setToOriginalMonitorMode() { + if (originalLibGdxDisplayMode == null) { + //nothing to do + return true; + } + if (!Gdx.graphics.setFullscreenMode(originalLibGdxDisplayMode)) { + Gdx.app.error("DefinitiveFrameworkLibGdxImpl", "Switching to original display mode failed."); + return false; + } else { + return true; + } + + } + private Graphics.DisplayMode originalLibGdxDisplayMode = null; + + @Override + public void setViewMode(ViewMode viewMode, int width, int height) { + if (!isMonitorInUse() && !isFullscreen()) { + return; + } + + switch (viewMode) { + + case WINDOW: { + if (width == 0) { + width = 640; + } + if (height == 0) { + height = 480; + } + + Gdx.graphics.setWindowedMode(width, height); + } + break; + case FULLSCREEN: + Gdx.graphics.setWindowedMode(width, height); + break; + default: + throw new PixelException("Unsupported ViewMode: " + viewMode); + } + } + + @Override + public ViewMode getViewMode() { + return Gdx.graphics.isFullscreen() ? ViewMode.FULLSCREEN : ViewMode.WINDOW; + } + + @Override + public boolean isMonitorInUse() { + return this.internalMonitor == Gdx.graphics.getMonitor(); + } + @Override + public boolean isMonitorModeChangeSupported() { + return Gdx.graphics.supportsDisplayModeChange(); + } + +} diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/screen/LibGdxScreen.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/screen/LibGdxScreen.java index 34e0fed..9e81e82 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/screen/LibGdxScreen.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/screen/LibGdxScreen.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/AndroidStorage.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/AndroidStorage.java index 0cdd202..21f2b46 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/AndroidStorage.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/AndroidStorage.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorage.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorage.java index 044c959..3ded022 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorage.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorage.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopStorage.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopStorage.java index 3099b7d..3023cd4 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopStorage.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopStorage.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/PreferencesStorage.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/PreferencesStorage.java index 310514a..5939e64 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/PreferencesStorage.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/PreferencesStorage.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/SimpleLocalStorageMap.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/SimpleLocalStorageMap.java index 24c9598..15c68ad 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/SimpleLocalStorageMap.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/SimpleLocalStorageMap.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/StorageFactory.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/StorageFactory.java index a51a3e7..3e00e0f 100644 --- a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/StorageFactory.java +++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/StorageFactory.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Pixel: Game library. +// Pixel: LibGdx Backend. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or diff --git a/src/test/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorageTest.java b/src/test/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorageTest.java index 12d300f..9e78474 100644 --- a/src/test/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorageTest.java +++ b/src/test/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorageTest.java @@ -28,9 +28,9 @@ import com.pixelgamelibrary.api.interfaces.Utils; import com.pixelgamelibrary.api.interfaces.App; import com.pixelgamelibrary.api.game.Game; import com.pixelgamelibrary.api.PixelFeature; -import com.pixelgamelibrary.api.utils.ClipBoard; -import com.pixelgamelibrary.api.utils.LogLevel; -import com.pixelgamelibrary.api.utils.Preferences; +import com.pixelgamelibrary.api.app.ClipBoard; +import com.pixelgamelibrary.api.app.LogLevel; +import com.pixelgamelibrary.api.app.Preferences; class DesktopAndroidStorageTest {