diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/AppLibGDXImpl.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/AppLibGDXImpl.java
index 2389c94..9331042 100644
--- a/src/main/java/com/pixelgamelibrary/backend/libgdx/AppLibGDXImpl.java
+++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/AppLibGDXImpl.java
@@ -23,7 +23,9 @@ import com.badlogic.gdx.Application;
import static com.badlogic.gdx.Application.ApplicationType.Android;
import static com.badlogic.gdx.Application.ApplicationType.Desktop;
import static com.badlogic.gdx.Application.ApplicationType.WebGL;
+import static com.badlogic.gdx.Application.ApplicationType.iOS;
import com.badlogic.gdx.Gdx;
+import com.pixelgamelibrary.api.GameI;
import com.pixelgamelibrary.api.PixelException;
import com.pixelgamelibrary.api.Platform;
import com.pixelgamelibrary.api.interfaces.AppI;
@@ -37,6 +39,7 @@ public class AppLibGDXImpl implements AppI {
private static final String DEFAULT_APP_NAME = "pixel-app";
private String appName = null;
+ private GameI game;
@Override
public void exit() {
@@ -53,6 +56,8 @@ public class AppLibGDXImpl implements AppI {
return Platform.ANDROID;
case WebGL:
return Platform.WEB;
+ case iOS:
+ return Platform.IOS;
default:
throw new PixelException("Unsupported platform: " + applicationType);
}
@@ -106,4 +111,14 @@ public class AppLibGDXImpl implements AppI {
return appName != null;
}
+ @Override
+ public void setGame(GameI game) {
+ this.game = game;
+ }
+
+ @Override
+ public GameI getGame() {
+ return game;
+ }
+
}
diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/GraphicsLibGDXImpl.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/GraphicsLibGDXImpl.java
index a8c6d8d..17af34b 100644
--- a/src/main/java/com/pixelgamelibrary/backend/libgdx/GraphicsLibGDXImpl.java
+++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/GraphicsLibGDXImpl.java
@@ -36,7 +36,7 @@ public class GraphicsLibGDXImpl implements GraphicsI {
@Override
- public String setDisplayMode(boolean fullscreen, boolean window) {
+ public WindowMode setDisplayMode(boolean fullscreen, boolean window) {
if (fullscreen) {
Graphics.Monitor currentMonitor = Gdx.graphics.getMonitor();
diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/InternalLibGDXImpl.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/InternalLibGDXImpl.java
new file mode 100644
index 0000000..99723d7
--- /dev/null
+++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/InternalLibGDXImpl.java
@@ -0,0 +1,32 @@
+///////////////////////////////////////////////////////////////////////////////////////////////
+// Pixel: Game library.
+// 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;
+
+import com.pixelgamelibrary.api.interfaces.InternalI;
+
+/**
+ *
+ * @author robertvokac
+ */
+public class InternalLibGDXImpl implements InternalI {
+
+
+
+}
diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/PixelBackendLibGDX.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/PixelBackendLibGDX.java
index 4a3df3a..5811b64 100644
--- a/src/main/java/com/pixelgamelibrary/backend/libgdx/PixelBackendLibGDX.java
+++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/PixelBackendLibGDX.java
@@ -24,6 +24,7 @@ import com.pixelgamelibrary.api.interfaces.AssetI;
import com.pixelgamelibrary.api.interfaces.AudioI;
import com.pixelgamelibrary.api.interfaces.GraphicsI;
import com.pixelgamelibrary.api.interfaces.InputI;
+import com.pixelgamelibrary.api.interfaces.InternalI;
import com.pixelgamelibrary.api.interfaces.UtilsI;
import com.pixelgamelibrary.api.interfaces.StorageI;
import com.pixelgamelibrary.api.interfaces.NetI;
@@ -43,7 +44,8 @@ public class PixelBackendLibGDX implements PixelBackend {
private AssetI pixelAssetLibGdxImpl = null;
private StorageI pixelStorageLibGdxImpl = null;
private UtilsI pixelUtilsLibGdxImpl = null;
-
+ private InternalI pixelInternalLibGdxImpl = null;
+
@Override
public GraphicsI graphics() {
@@ -104,13 +106,24 @@ public class PixelBackendLibGDX implements PixelBackend {
if (pixelUtilsLibGdxImpl == null) {
pixelUtilsLibGdxImpl = new UtilsLibGDXImpl(app());
}
- return pixelUtilsLibGdxImpl; }
+ return pixelUtilsLibGdxImpl;
+ }
@Override
public AppI app() {
if (pixelAppLibGdxImpl == null) {
pixelAppLibGdxImpl = new AppLibGDXImpl();
}
- return pixelAppLibGdxImpl; }
+ return pixelAppLibGdxImpl;
+ }
+
+ @Override
+ public InternalI internal() {
+
+ if (pixelInternalLibGdxImpl == null) {
+ pixelInternalLibGdxImpl = new InternalLibGDXImpl();
+ }
+ return pixelInternalLibGdxImpl;
+ }
}
diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/game/LibGdxGame.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/game/LibGdxGame.java
new file mode 100644
index 0000000..4c74593
--- /dev/null
+++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/game/LibGdxGame.java
@@ -0,0 +1,104 @@
+///////////////////////////////////////////////////////////////////////////////////////////////
+// Pixel: Game library.
+// 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.game;
+
+import com.pixelgamelibrary.api.GameI;
+import com.pixelgamelibrary.api.GameWrapper;
+import com.pixelgamelibrary.api.OnSetScreenListener;
+import com.pixelgamelibrary.api.ScreenI;
+import com.pixelgamelibrary.backend.libgdx.screen.LibGdxScreen;
+
+/**
+ *
+ * @author robertvokac
+ */
+public class LibGdxGame extends com.badlogic.gdx.Game implements OnSetScreenListener {
+
+ private final GameI game;
+
+ @Override
+ public void onSetScreen(ScreenI screen) {
+ setScreen(new LibGdxScreen(screen));
+ System.out.println("LibGdxGame:onSetScreen");
+ }
+
+ class LibGdxGameWrapper extends GameWrapper {
+
+ private final LibGdxGame libGdxGame;
+
+ public LibGdxGameWrapper(GameI gameI, LibGdxGame libGdxGame) {
+ super(gameI);
+ this.libGdxGame = libGdxGame;
+ gameI.setOnSetScreenListener(libGdxGame);
+ }
+
+// @Override
+// public void setScreen(ScreenI screen) {
+// System.out.println("LibGdxGame: setScreen");
+// libGdxGame.setScreen(new LibGdxScreen(screen));
+// }
+//
+// @Override
+// public ScreenI getScreen() {
+// System.out.println("LibGdxGame: getScreen");
+// LibGdxScreen screen = (LibGdxScreen) libGdxGame.getScreen();
+// return screen.getPixelScreen();
+// }
+
+
+ }
+
+ public LibGdxGame(GameI game) {
+ this.game = new LibGdxGameWrapper(game, this);
+ }
+
+ @Override
+ public void create() {
+ game.create();
+ }
+//
+// @Override
+// public void resize(int width, int height) {
+// game.resize(width, height);
+// }
+//private int i = 0;
+// @Override
+// public void render() {
+// i++;
+// System.out.println("Calling LibGdxGame.render " + i);
+// game.render();
+// }
+//
+// @Override
+// public void pause() {
+// game.pause();
+// }
+//
+// @Override
+// public void resume() {
+// game.resume();
+// }
+//
+// @Override
+// public void dispose() {
+// game.dispose();
+// }
+
+}
diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/screen/LibGdxScreen.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/screen/LibGdxScreen.java
new file mode 100644
index 0000000..c70f0e3
--- /dev/null
+++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/screen/LibGdxScreen.java
@@ -0,0 +1,87 @@
+///////////////////////////////////////////////////////////////////////////////////////////////
+// Pixel: Game library.
+// 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.screen;
+
+import com.pixelgamelibrary.api.ScreenI;
+import com.pixelgamelibrary.api.ScreenWrapper;
+import lombok.Getter;
+
+/**
+ *
+ * @author robertvokac
+ */
+public class LibGdxScreen extends com.badlogic.gdx.ScreenAdapter {
+
+ @Getter
+ private final ScreenI pixelScreen;
+
+ class LibGdxScreenWrapper extends ScreenWrapper {
+
+ private final LibGdxScreen libGdxScreen;
+
+ public LibGdxScreenWrapper(ScreenI screen, LibGdxScreen libGdxScreenIn) {
+ super(screen);
+ this.libGdxScreen = libGdxScreenIn;
+ }
+
+ }
+
+ public LibGdxScreen(ScreenI screen) {
+ this.pixelScreen = new LibGdxScreenWrapper(screen, this);
+ System.out.println("aaaaaa");
+ }
+
+ @Override
+ public void render(float delta) {
+ System.out.println("LibGdxScreen : render");
+ pixelScreen.render(delta);
+ }
+
+ @Override
+ public void resize(int width, int height) {
+ pixelScreen.resize(width, height);
+ }
+
+ @Override
+ public void show() {
+ pixelScreen.show();
+ }
+
+ @Override
+ public void hide() {
+ pixelScreen.hide();
+ }
+
+ @Override
+ public void pause() {
+ pixelScreen.pause();
+ }
+
+ @Override
+ public void resume() {
+ pixelScreen.resume();
+ }
+
+ @Override
+ public void dispose() {
+ pixelScreen.dispose();
+ }
+
+}
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 113743d..195ff1b 100644
--- a/src/test/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorageTest.java
+++ b/src/test/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorageTest.java
@@ -2,6 +2,7 @@ package com.pixelgamelibrary.backend.libgdx.storage;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
+import com.pixelgamelibrary.api.GameI;
import com.pixelgamelibrary.api.Pixel;
import com.pixelgamelibrary.api.Platform;
import com.pixelgamelibrary.api.interfaces.AppI;
@@ -9,6 +10,7 @@ import com.pixelgamelibrary.api.interfaces.AssetI;
import com.pixelgamelibrary.api.interfaces.AudioI;
import com.pixelgamelibrary.api.interfaces.GraphicsI;
import com.pixelgamelibrary.api.interfaces.InputI;
+import com.pixelgamelibrary.api.interfaces.InternalI;
import com.pixelgamelibrary.api.interfaces.NetI;
import com.pixelgamelibrary.api.interfaces.PixelBackend;
import com.pixelgamelibrary.api.interfaces.StorageI;
@@ -83,6 +85,16 @@ class DesktopAndroidStorageTest {
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
}
+ @Override
+ public void setGame(GameI game) {
+ throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+ }
+
+ @Override
+ public GameI getGame() {
+ throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+ }
+
};
}
@@ -120,6 +132,11 @@ class DesktopAndroidStorageTest {
public UtilsI utils() {
throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
}
+
+ @Override
+ public InternalI internal() {
+ throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+ }
};
Pixel.initBackend(dummyPixelBackend);
}