From b526b975588694ab776c5bf5507fa5fee2b08b2d Mon Sep 17 00:00:00 2001 From: Willem Date: Tue, 1 Mar 2022 19:03:03 +0100 Subject: [PATCH] Bootup as osgi bundles --- gdxapp4d-app-notepad/pom.xml | 9 + gdxapp4d-app-tosamp/pom.xml | 9 + gdxapp4d-boot-desktop/local-override.xml | 8 + gdxapp4d-boot-desktop/local-ship.xml | 9 + .../pom.xml | 4 +- .../boot}/desktop/GDXAppDesktopConfig.java | 2 +- .../boot}/desktop/GDXAppDesktopLauncher.java | 8 +- .../src/main/resources/icon/window-128.png | Bin .../src/main/resources/icon/window-16.png | Bin .../src/main/resources/icon/window-32.png | Bin .../distributedrebirth/gdxapp/GDXAppMain.java | 279 ------------------ .../gdxapp/screen/AbstractScreenDesktop.java | 116 -------- .../gdxapp/screen/ScreenDesktop1.java | 40 --- .../gdxapp/screen/ScreenDesktop2.java | 40 --- .../gdxapp/screen/ScreenLoading.java | 29 -- .../pom.xml | 2 +- gdxapp4d-chain-music-templeos/pom.xml | 10 + .../src/chain/music/000-playlist.m3u | 26 ++ .../beeble-i-used-temple-os-to-write.mp3 | Bin .../chain}/music/panoramacircle-waterfowl.mp3 | Bin .../music/ryanfarran-risen-temple-os.mp3 | Bin .../music/sanctumwave-devine-intellect.mp3 | Bin .../chain}/music/sanctumwave-nightwalk.mp3 | Bin .../src/chain}/music/sanctumwave-risen.mp3 | Bin .../music/theselfhelpgroup-temple-os.mp3 | Bin .../src/chain/warp-sea.xml | 10 + .../pom.xml | 6 +- .../src/chain/warp-sea.xml | 10 + gdxapp4d-chain-sys-ocean/pom.xml | 10 + .../src/chain/warp-sea.xml | 8 + .../warpme/core/WaterBucketDriverTest.java | 2 +- .../warpme/hash/WaterShotDriverTest.java | 2 +- .../warpme/sea/WaterOceanDriverTest.java | 2 +- .../warpme/ship/WaterDeviceDriverTest.java | 2 +- .../pom.xml | 33 ++- .../gdxapp4d/tos4/GDXAppTos4.java | 121 ++++++++ .../gdxapp4d/tos4/GDXAppTos4Activator.java | 272 +++++++++++++++++ .../gdxapp4d/tos4/GDXAppTos4BootFactory.java | 149 ++++++++++ .../gdxapp4d/tos4/GDXAppTos4BootListener.java | 9 + .../gdxapp4d/tos4/GDXAppTos4BootScreen.java | 56 ++++ .../gdxapp4d/tos4/GDXAppTos4Keyʸᴰ.java | 4 +- .../gdxapp4d/tos4/GDXAppTos4Startup.java | 84 ++++++ .../gdxapp4d/tos4/service/SystemWarpBase.java | 13 + .../tos4/service/SystemWarpBootArgs.java | 15 + .../gdxapp4d/tos4/service/SystemWarpSea.java | 13 + .../gdxapp4d/tos4/service/SystemWarpShip.java | 10 + .../tos4/service/SystemWarpTerminal.java | 15 + .../resources/background/doom-credits.png | Bin .../resources/background/gdxapp-loading.png | Bin .../main/resources/background/msx-boot.png | Bin 0 -> 41036 bytes .../main/resources/background/temple-os.png | Bin .../resources/background/terrydavis-front.png | Bin .../resources/background/terrydavis-nose.png | Bin .../src/main/resources/font/code-2000.ttf | Bin .../src/main/resources/font/code-2001.ttf | Bin .../src/main/resources/font/code-2002.ttf | Bin .../src/main/resources/font/fa-solid-900.ttf | Bin .../src/main/resources/font/free-sans.ttf | Bin .../main/resources/font/new-gardiner-bmp.ttf | Bin .../resources/font/noto-sans-balinese.ttf | Bin .../main/resources/font/noto-sans-bamum.ttf | Bin .../main/resources/font/noto-sans-batak.ttf | Bin .../main/resources/font/noto-sans-brahmi.ttf | Bin .../resources/font/noto-sans-glagolitic.ttf | Bin .../main/resources/font/noto-sans-lepcha.ttf | Bin .../main/resources/font/noto-sans-lisu.ttf | Bin .../resources/font/noto-sans-samaritan.ttf | Bin .../main/resources/font/noto-sans-sinhala.ttf | Bin .../resources/font/noto-sans-sundanese.ttf | Bin .../main/resources/font/noto-sans-tagalog.ttf | Bin .../resources/font/noto-sans-tagbanwa.ttf | Bin .../main/resources/font/noto-sans-tai-le.ttf | Bin .../resources/font/noto-sans-tai-tham.ttf | Bin .../resources/font/noto-serif-tibetan.ttf | Bin .../src/main/resources}/idtech-doom-sigil.mp3 | Bin .../main/resources/shader/color.fragment.glsl | 0 .../main/resources/shader/color.vertex.glsl | 0 gdxapp4d-vrgem4/pom.xml | 106 +++++++ gdxapp4d-vrgem4/src/chain/warp-sea.xml | 9 + .../gdxapp4d/vrgem4}/FontAwesomeIcons.java | 2 +- .../gdxapp4d/vrgem4}/GDXAppLauncher.java | 4 +- .../gdxapp4d/vrgem4/GDXAppVrGem4.java | 43 +++ .../vrgem4/GDXAppVrGem4Activator.java | 159 ++++++++++ .../vrgem4/GDXAppVrGem4BootListener.java | 6 + .../vrgem4/GDXAppVrGem4BootScreen.java | 56 ++++ .../gdxapp4d/vrgem4/GDXAppVrGem4Keyʸᴰ.java | 12 + .../gdxapp4d/vrgem4}/ImGuiSetup.java | 2 +- .../vrgem4}/desktop/DefaultDeskApp.java | 2 +- .../gdxapp4d/vrgem4}/desktop/DeskApp.java | 2 +- .../vrgem4}/desktop/DeskAppContour.java | 2 +- .../desktop/DeskAppContourSection.java | 2 +- .../vrgem4}/desktop/DeskAppRenderer.java | 2 +- .../vrgem4}/desktop/DeskAppScreen.java | 2 +- .../desktop/DeskAppScreenListener.java | 2 +- .../desktop/DeskTopInputProcessor.java | 2 +- .../vrgem4}/desktop/DeskTopScreen.java | 2 +- .../vrgem4}/desktop/DeskTopScreenMenu.java | 67 ++--- .../vrgem4}/desktop/apps/BasicConsoleApp.java | 8 +- .../vrgem4}/desktop/apps/HebrewWalletApp.java | 8 +- .../vrgem4}/desktop/apps/MusicPlayerApp.java | 33 ++- .../desktop/apps/SystemBaseGlyphApp.java | 8 +- .../desktop/apps/SystemBasePartApp.java | 8 +- .../apps/SystemBaseUnicodePlaneApp.java | 8 +- .../vrgem4}/desktop/apps/Unicode4DApp.java | 10 +- .../gdxapp4d/vrgem4/music/M3UParser.java | 38 +++ .../gdxapp4d/vrgem4}/music/MusicManager.java | 28 +- .../gdxapp4d/vrgem4}/music/MusicSong.java | 2 +- .../gdxapp4d/vrgem4}/music/MusicSongType.java | 2 +- .../vrgem4/screen/AbstractScreenDesktop.java | 168 +++++++++++ .../vrgem4}/screen/AbstractScrollScreen.java | 27 +- .../vrgem4}/screen/ScreenCredits.java | 12 +- .../vrgem4/screen/ScreenDesktop1.java | 37 +++ .../vrgem4/screen/ScreenDesktop2.java | 37 +++ .../vrgem4}/screen/ScreenDesktop3.java | 2 +- .../vrgem4}/screen/ScreenDesktop4.java | 2 +- .../gdxapp4d/vrgem4}/screen/ScreenHelp.java | 12 +- .../gdxapp4d/vrgem4}/screen/ScreenIntro.java | 29 +- .../vrgem4}/screen/ScreenIntroMission.java | 10 +- .../vrgem4}/screen/UserColorShader.java | 2 +- .../distributedrebirth/gdxapp/Main.properties | 0 .../gdxapp/Main_hiero.properties | 0 pom.xml | 31 +- 122 files changed, 1762 insertions(+), 681 deletions(-) create mode 100644 gdxapp4d-app-notepad/pom.xml create mode 100644 gdxapp4d-app-tosamp/pom.xml create mode 100644 gdxapp4d-boot-desktop/local-override.xml create mode 100644 gdxapp4d-boot-desktop/local-ship.xml rename {gdxapp4d-boot/gdxapp4d-boot-desktop => gdxapp4d-boot-desktop}/pom.xml (90%) rename {gdxapp4d-boot/gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp4d/boot}/desktop/GDXAppDesktopConfig.java (94%) rename {gdxapp4d-boot/gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp4d/boot}/desktop/GDXAppDesktopLauncher.java (81%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-boot-desktop}/src/main/resources/icon/window-128.png (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-boot-desktop}/src/main/resources/icon/window-16.png (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-boot-desktop}/src/main/resources/icon/window-32.png (100%) delete mode 100644 gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/GDXAppMain.java delete mode 100644 gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/AbstractScreenDesktop.java delete mode 100644 gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop1.java delete mode 100644 gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop2.java delete mode 100644 gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenLoading.java rename {gdxapp4d-chain => gdxapp4d-chain-music-msx}/pom.xml (87%) create mode 100644 gdxapp4d-chain-music-templeos/pom.xml create mode 100644 gdxapp4d-chain-music-templeos/src/chain/music/000-playlist.m3u rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources => gdxapp4d-chain-music-templeos/src/chain}/music/beeble-i-used-temple-os-to-write.mp3 (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources => gdxapp4d-chain-music-templeos/src/chain}/music/panoramacircle-waterfowl.mp3 (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources => gdxapp4d-chain-music-templeos/src/chain}/music/ryanfarran-risen-temple-os.mp3 (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources => gdxapp4d-chain-music-templeos/src/chain}/music/sanctumwave-devine-intellect.mp3 (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources => gdxapp4d-chain-music-templeos/src/chain}/music/sanctumwave-nightwalk.mp3 (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources => gdxapp4d-chain-music-templeos/src/chain}/music/sanctumwave-risen.mp3 (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources => gdxapp4d-chain-music-templeos/src/chain}/music/theselfhelpgroup-temple-os.mp3 (100%) create mode 100644 gdxapp4d-chain-music-templeos/src/chain/warp-sea.xml rename {gdxapp4d-boot => gdxapp4d-chain-sys-engine}/pom.xml (73%) create mode 100644 gdxapp4d-chain-sys-engine/src/chain/warp-sea.xml create mode 100644 gdxapp4d-chain-sys-ocean/pom.xml create mode 100644 gdxapp4d-chain-sys-ocean/src/chain/warp-sea.xml rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/pom.xml (50%) create mode 100644 gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4.java create mode 100644 gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Activator.java create mode 100644 gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootFactory.java create mode 100644 gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootListener.java create mode 100644 gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootScreen.java rename gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/GDXAppMainKeyʸᴰ.java => gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Keyʸᴰ.java (69%) create mode 100644 gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Startup.java create mode 100644 gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpBase.java create mode 100644 gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpBootArgs.java create mode 100644 gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpSea.java create mode 100644 gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpShip.java create mode 100644 gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpTerminal.java rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/background/doom-credits.png (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/background/gdxapp-loading.png (100%) create mode 100644 gdxapp4d-tos4/src/main/resources/background/msx-boot.png rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/background/temple-os.png (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/background/terrydavis-front.png (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/background/terrydavis-nose.png (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/code-2000.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/code-2001.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/code-2002.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/fa-solid-900.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/free-sans.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/new-gardiner-bmp.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-balinese.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-bamum.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-batak.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-brahmi.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-glagolitic.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-lepcha.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-lisu.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-samaritan.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-sinhala.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-sundanese.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-tagalog.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-tagbanwa.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-tai-le.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-sans-tai-tham.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/font/noto-serif-tibetan.ttf (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music => gdxapp4d-tos4/src/main/resources}/idtech-doom-sigil.mp3 (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/shader/color.fragment.glsl (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-tos4}/src/main/resources/shader/color.vertex.glsl (100%) create mode 100644 gdxapp4d-vrgem4/pom.xml create mode 100644 gdxapp4d-vrgem4/src/chain/warp-sea.xml rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/FontAwesomeIcons.java (99%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/GDXAppLauncher.java (77%) create mode 100644 gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4.java create mode 100644 gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4Activator.java create mode 100644 gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4BootListener.java create mode 100644 gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4BootScreen.java create mode 100644 gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4Keyʸᴰ.java rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/ImGuiSetup.java (98%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/DefaultDeskApp.java (92%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/DeskApp.java (82%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/DeskAppContour.java (91%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/DeskAppContourSection.java (87%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/DeskAppRenderer.java (78%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/DeskAppScreen.java (96%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/DeskAppScreenListener.java (80%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/DeskTopInputProcessor.java (97%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/DeskTopScreen.java (82%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/DeskTopScreenMenu.java (77%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/apps/BasicConsoleApp.java (76%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/apps/HebrewWalletApp.java (85%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/apps/MusicPlayerApp.java (73%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/apps/SystemBaseGlyphApp.java (90%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/apps/SystemBasePartApp.java (95%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/apps/SystemBaseUnicodePlaneApp.java (84%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/desktop/apps/Unicode4DApp.java (87%) create mode 100644 gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/M3UParser.java rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/music/MusicManager.java (83%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/music/MusicSong.java (90%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/music/MusicSongType.java (81%) create mode 100644 gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/AbstractScreenDesktop.java rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/screen/AbstractScrollScreen.java (69%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/screen/ScreenCredits.java (84%) create mode 100644 gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop1.java create mode 100644 gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop2.java rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/screen/ScreenDesktop3.java (94%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/screen/ScreenDesktop4.java (99%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/screen/ScreenHelp.java (84%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/screen/ScreenIntro.java (59%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/screen/ScreenIntroMission.java (86%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp => gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4}/screen/UserColorShader.java (97%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-vrgem4}/src/main/resources/love/distributedrebirth/gdxapp/Main.properties (100%) rename {gdxapp4d-boot/gdxapp4d-boot-tos4 => gdxapp4d-vrgem4}/src/main/resources/love/distributedrebirth/gdxapp/Main_hiero.properties (100%) diff --git a/gdxapp4d-app-notepad/pom.xml b/gdxapp4d-app-notepad/pom.xml new file mode 100644 index 00000000..e06631fe --- /dev/null +++ b/gdxapp4d-app-notepad/pom.xml @@ -0,0 +1,9 @@ + + 4.0.0 + + love.distributedrebirth.gdxapp4d + gdxapp4d + 0.0.1-SNAPSHOT + + gdxapp4d-app-notepad + \ No newline at end of file diff --git a/gdxapp4d-app-tosamp/pom.xml b/gdxapp4d-app-tosamp/pom.xml new file mode 100644 index 00000000..36e5c4b1 --- /dev/null +++ b/gdxapp4d-app-tosamp/pom.xml @@ -0,0 +1,9 @@ + + 4.0.0 + + love.distributedrebirth.gdxapp4d + gdxapp4d + 0.0.1-SNAPSHOT + + gdxapp4d-app-tosamp + \ No newline at end of file diff --git a/gdxapp4d-boot-desktop/local-override.xml b/gdxapp4d-boot-desktop/local-override.xml new file mode 100644 index 00000000..f5979bc6 --- /dev/null +++ b/gdxapp4d-boot-desktop/local-override.xml @@ -0,0 +1,8 @@ + + + + ../gdxapp4d-chain-sys-engine/src/chain + ../gdxapp4d-chain-sys-ocean/src/chain + ../gdxapp4d-vrgem4/src/chain + ../gdxapp4d-vrgem4/target/classes + diff --git a/gdxapp4d-boot-desktop/local-ship.xml b/gdxapp4d-boot-desktop/local-ship.xml new file mode 100644 index 00000000..e8d825f3 --- /dev/null +++ b/gdxapp4d-boot-desktop/local-ship.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/gdxapp4d-boot/gdxapp4d-boot-desktop/pom.xml b/gdxapp4d-boot-desktop/pom.xml similarity index 90% rename from gdxapp4d-boot/gdxapp4d-boot-desktop/pom.xml rename to gdxapp4d-boot-desktop/pom.xml index 06b78ff2..b988f688 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-desktop/pom.xml +++ b/gdxapp4d-boot-desktop/pom.xml @@ -2,14 +2,14 @@ 4.0.0 love.distributedrebirth.gdxapp4d - gdxapp4d-boot + gdxapp4d 0.0.1-SNAPSHOT gdxapp4d-boot-desktop love.distributedrebirth.gdxapp4d - gdxapp4d-boot-tos4 + gdxapp4d-tos4 ${project.version} diff --git a/gdxapp4d-boot/gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp/desktop/GDXAppDesktopConfig.java b/gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp4d/boot/desktop/GDXAppDesktopConfig.java similarity index 94% rename from gdxapp4d-boot/gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp/desktop/GDXAppDesktopConfig.java rename to gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp4d/boot/desktop/GDXAppDesktopConfig.java index f2fe2989..05f82405 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp/desktop/GDXAppDesktopConfig.java +++ b/gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp4d/boot/desktop/GDXAppDesktopConfig.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop; +package love.distributedrebirth.gdxapp4d.boot.desktop; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; diff --git a/gdxapp4d-boot/gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp/desktop/GDXAppDesktopLauncher.java b/gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp4d/boot/desktop/GDXAppDesktopLauncher.java similarity index 81% rename from gdxapp4d-boot/gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp/desktop/GDXAppDesktopLauncher.java rename to gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp4d/boot/desktop/GDXAppDesktopLauncher.java index 02f34960..e28ca625 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp/desktop/GDXAppDesktopLauncher.java +++ b/gdxapp4d-boot-desktop/src/main/java/love/distributedrebirth/gdxapp4d/boot/desktop/GDXAppDesktopLauncher.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop; +package love.distributedrebirth.gdxapp4d.boot.desktop; import java.util.Arrays; @@ -7,7 +7,7 @@ import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.GDXAppMain; +import love.distributedrebirth.gdxapp4d.tos4.GDXAppTos4; import net.spookygames.gdx.nativefilechooser.desktop.DesktopFileChooser; /** @@ -21,7 +21,7 @@ public class GDXAppDesktopLauncher { int width = GDXAppDesktopConfig.WINDOW_WIDTH; int height = GDXAppDesktopConfig.WINDOW_HEIGHT; - GDXAppMain.INSTANCE.BãßInit(Arrays.asList(arg), width, height, new DesktopFileChooser()); + GDXAppTos4.INSTANCE.BãßInit(Arrays.asList(arg), width, height, new DesktopFileChooser()); Lwjgl3ApplicationConfiguration config = new Lwjgl3ApplicationConfiguration(); config.setMaxNetThreads(Runtime.getRuntime().availableProcessors()); @@ -29,7 +29,7 @@ public class GDXAppDesktopLauncher { config.setWindowIcon(FileType.Internal, GDXAppDesktopConfig.WINDOW_ICONS); config.setWindowedMode(width, height); - Lwjgl3Application launcher = new Lwjgl3Application(GDXAppMain.INSTANCE, config); + Lwjgl3Application launcher = new Lwjgl3Application(GDXAppTos4.INSTANCE, config); launcher.exit(); } } diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/icon/window-128.png b/gdxapp4d-boot-desktop/src/main/resources/icon/window-128.png similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/icon/window-128.png rename to gdxapp4d-boot-desktop/src/main/resources/icon/window-128.png diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/icon/window-16.png b/gdxapp4d-boot-desktop/src/main/resources/icon/window-16.png similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/icon/window-16.png rename to gdxapp4d-boot-desktop/src/main/resources/icon/window-16.png diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/icon/window-32.png b/gdxapp4d-boot-desktop/src/main/resources/icon/window-32.png similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/icon/window-32.png rename to gdxapp4d-boot-desktop/src/main/resources/icon/window-32.png diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/GDXAppMain.java b/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/GDXAppMain.java deleted file mode 100644 index 9826168a..00000000 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/GDXAppMain.java +++ /dev/null @@ -1,279 +0,0 @@ -package love.distributedrebirth.gdxapp; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.badlogic.gdx.ApplicationListener; -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.Screen; -import com.badlogic.gdx.graphics.OrthographicCamera; -import com.badlogic.gdx.graphics.g2d.BitmapFont; -import com.badlogic.gdx.graphics.g2d.SpriteBatch; -import com.badlogic.gdx.utils.ScreenUtils; - -import imgui.ImGui; -import imgui.flag.ImGuiCond; -import imgui.flag.ImGuiWindowFlags; -import imgui.type.ImBoolean; -import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.bassboonyd.BãßBȍőnClassInfoʸᴰ; -import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ; -import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinʸᴰ; -import love.distributedrebirth.bassboonyd.BãßBȍőnPackageInfoʸᴰ; -import love.distributedrebirth.bassboonyd.jmx.DefaultEnumBaseᴶᴹˣ; -import love.distributedrebirth.bassboonyd.jmx.DefaultEnumInstanceᴶᴹˣ; -import love.distributedrebirth.bassboonyd.jmx.GuageCounterᴶᴹˣ; -import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection; -import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer; -import love.distributedrebirth.gdxapp.desktop.DeskTopScreen; -import love.distributedrebirth.gdxapp.desktop.DeskTopScreenMenu; -import love.distributedrebirth.gdxapp.music.MusicManager; -import love.distributedrebirth.gdxapp.music.MusicSongType; -import love.distributedrebirth.gdxapp.screen.ScreenCredits; -import love.distributedrebirth.gdxapp.screen.ScreenDesktop1; -import love.distributedrebirth.gdxapp.screen.ScreenDesktop2; -import love.distributedrebirth.gdxapp.screen.ScreenDesktop3; -import love.distributedrebirth.gdxapp.screen.ScreenDesktop4; -import love.distributedrebirth.gdxapp.screen.ScreenHelp; -import love.distributedrebirth.gdxapp.screen.ScreenIntro; -import love.distributedrebirth.gdxapp.screen.ScreenIntroMission; -import love.distributedrebirth.gdxapp.screen.ScreenLoading; -import love.distributedrebirth.numberxd.base2t.Base2PartsFactory; -import love.distributedrebirth.numberxd.base2t.Base2Terminator; -import love.distributedrebirth.numberxd.base2t.part.warp.TOSWarpCore; -import love.distributedrebirth.numberxd.glyph.BaseGlyphSet; -import love.distributedrebirth.unicode4d.atlas.FontAtlas; -import love.distributedrebirth.unicode4d.atlas.FontAtlasDriver; -import love.distributedrebirth.warpme.core.WaterBucket; -import love.distributedrebirth.warpme.core.WaterBucketDriver; -import net.spookygames.gdx.nativefilechooser.NativeFileChooser; - -@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") -@BãßBȍőnClassInfoʸᴰ(name = "GDXAppMain", purpose = "Main loop render dispatcher and bootup.") -@BãßBȍőnPackageInfoʸᴰ(name = "love.distributedrebirth.gdxapp") -public enum GDXAppMain implements DefaultEnumInstanceᴶᴹˣ,ApplicationListener { - - INSTANCE; - - protected Screen screen; - private int lazyIntCnt = 33; - private List args; - public NativeFileChooser fileChooser; - public SpriteBatch batch; - public BitmapFont font; - public OrthographicCamera camera; - public int viewWidth; - public int viewHeight; - public MusicManager music; - public FontAtlas basePlane; - public ImBoolean showImGuiDemo = new ImBoolean(false); - private Map,Screen> screens; - private DeskTopScreenMenu screenMenu; - private final GuageCounterᴶᴹˣ selectScreenCounter; - private final BãßBȍőnCoffinOpenʸᴰ BBC = BãßBȍőnCoffinOpenʸᴰ.newInstance(); - public BãßBȍőnCoffinʸᴰ GET_BBC() { return BBC; } - - private GDXAppMain() { - BBC.BOON_INIT(this); - BȍőnJmxInit(GDXAppMainKeyʸᴰ.JMX); - selectScreenCounter = BȍőnJmxInitGuageCounter(GDXAppMainKeyʸᴰ.JMX, "selectScreenCounter"); - } - - public void BãßInit(List args, int viewWidth, int viewHeight, NativeFileChooser fileChooser) { - this.args = args; - this.viewWidth = viewWidth; - this.viewHeight = viewHeight; - this.fileChooser = fileChooser; - } - - //TODO: add layer or ?? private ,DefaultAuthorInfoʸᴰ> T[] storeInstances() { - @SuppressWarnings("unchecked") - private > T[] coffinInstances() { - return (T[]) new DefaultEnumBaseᴶᴹˣ[] { - BaseGlyphSet.values()[0], - Base2Terminator.INSTANCE, - Base2PartsFactory.INSTANCE, - TOSWarpCore.INSTANCE - }; - } - - private void lazyInit() { - if (lazyIntCnt > 0) { - lazyIntCnt--; - return; - } - ImGuiSetup.init(); - - // ref to init - System.out.println("BãßBȍőnCoffinʸᴰ init......"); - BãßBȍőnCoffinOpenʸᴰ.lockCoffin(this); - for (DefaultEnumBaseᴶᴹˣ coffin:coffinInstances()) { - BãßBȍőnCoffinOpenʸᴰ.lockCoffin(coffin); - } - System.out.println("BãßBȍőnCoffinʸᴰ init done."); - - try { - //basePlane = FontAtlasDriver.newInstance().createReader().readString(Gdx.files.internal("font/unicode4d.xml").readString()); - - - if (args.contains("warpcore-load")) { - System.out.println("warpcore-load: requested"); - WaterBucket bucket = WaterBucketDriver.newInstance().createReader().readFile("./warpcore.xml"); - TOSWarpCore.INSTANCE.BãßArmWarpCore(bucket); - } - if (args.contains("warpcore-save")) { - System.out.println("warpcore-save: requested"); - WaterBucket bucket = TOSWarpCore.INSTANCE.BãßCurrentWarpCore(); - WaterBucketDriver.newInstance().createWriter().writeFile(bucket, "./warpcore.xml"); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - if (!args.contains("warpcore-nolock")) { - System.out.println("warpcore-lock: BãßLockWarpCipher"); - TOSWarpCore.INSTANCE.BãßLockWarpCipher(); - } else { - System.out.println("warpcore-nolock: requested"); - } - if (args.contains("full-screen")) { - System.out.println("full-screen: requested"); - Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode()); - } - if (args.contains("intro-skip")) { - System.out.println("intro-skip: requested"); - selectScreen(ScreenDesktop1.class); - music.play(MusicSongType.BACKGROUND); - } else { - selectScreen(ScreenIntro.class); - } - } - - private void putScreen(Screen screen) { - screens.put(screen.getClass(), screen); - } - - public void selectScreen(Class screenClass) { - Screen screen = screens.get(screenClass); - if (screen == null) { - throw new NullPointerException("Unknow screen: "+screenClass); - } - selectScreenCounter.increment(); - if (this.screen != null) this.screen.hide(); - this.screen = screen; - if (this.screen != null) { - this.screen.show(); - this.screen.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); - } - } - - @Override - public void create() { - batch = new SpriteBatch(); - font = new BitmapFont(); - camera = new OrthographicCamera(); - - camera.setToOrtho(false, viewWidth, viewHeight); - camera.update(); - batch.setProjectionMatrix(camera.combined); - - boolean musicStop = args.contains("music-stop"); - if (musicStop) { - System.out.println("music-stop: requested"); - } - music = new MusicManager(); - music.init(musicStop); - - screens = new HashMap<>(); - - DeskTopScreen desktop1 = new ScreenDesktop1(this); - DeskTopScreen desktop2 = new ScreenDesktop2(this); - DeskTopScreen desktop3 = new ScreenDesktop3(); - DeskTopScreen desktop4 = new ScreenDesktop4(); - screenMenu = new DeskTopScreenMenu(desktop1, desktop2, desktop3, desktop4); - - putScreen(new ScreenLoading()); - putScreen(new ScreenIntro()); - putScreen(new ScreenIntroMission()); - putScreen(desktop1); - putScreen(desktop2); - putScreen(desktop3); - putScreen(desktop4); - putScreen(new ScreenCredits()); - putScreen(new ScreenHelp()); - - selectScreen(ScreenLoading.class); - } - - @Override - public void resize(int width, int height) { - if (screen != null) screen.resize(width, height); - } - - @Override - public void render() { - ScreenUtils.clear(0f, 0f, 0f, 1f, true); - if (screen == null) { - return; - } - if (screen instanceof ScreenLoading) { - screen.render(Gdx.graphics.getDeltaTime()); - lazyInit(); - return; - } - ImGuiSetup.imGuiImp.newFrame(); - ImGui.newFrame(); - - DeskTopScreen appScreen = null; - if (screen instanceof DeskTopScreen) { - appScreen = DeskTopScreen.class.cast(screen); - screenMenu.renderMenu(appScreen); - } - if (showImGuiDemo.get()) { - ImGui.showDemoWindow(showImGuiDemo); - } - if (appScreen != null && appScreen.getDeskAppScreen().getCurrentDeskApp() != null) { - int sizeFlags = ImGuiCond.Always; - ImGui.setNextWindowPos(0, 28, sizeFlags); - ImGui.setNextWindowSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() - 28, sizeFlags); - int windowFlags = ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoTitleBar; - if (ImGui.begin(appScreen.getDeskAppScreen().getCurrentDeskApp().getTitle(), windowFlags)) { - DeskAppRenderer renderer = appScreen.getDeskAppScreen().getCurrentDeskApp().getContours().getContour(DeskAppContourSection.MAIN); - if (renderer != null) { - renderer.render(); - } - } - ImGui.end(); - } - if (screen != null) { - screen.render(Gdx.graphics.getDeltaTime()); - } - ImGui.render(); - ImGuiSetup.imGuiGlImp.renderDrawData(ImGui.getDrawData()); - } - - @Override - public void pause() { - if (screen != null) { - screen.pause(); - } - } - - @Override - public void resume() { - if (screen != null) { - screen.resume(); - } - } - - @Override - public void dispose() { - ImGuiSetup.dispose(); - for (Screen screen:screens.values()) { - screen.dispose(); - } - music.dispose(); - batch.dispose(); - font.dispose(); - } -} diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/AbstractScreenDesktop.java b/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/AbstractScreenDesktop.java deleted file mode 100644 index 0f3ddafc..00000000 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/AbstractScreenDesktop.java +++ /dev/null @@ -1,116 +0,0 @@ -package love.distributedrebirth.gdxapp.screen; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.ScreenAdapter; -import com.badlogic.gdx.graphics.GL20; -import com.badlogic.gdx.graphics.PerspectiveCamera; -import com.badlogic.gdx.graphics.g3d.ModelBatch; -import com.badlogic.gdx.graphics.g3d.ModelInstance; -import com.badlogic.gdx.graphics.g3d.utils.FirstPersonCameraController; -import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder; -import com.badlogic.gdx.utils.Array; - -import love.distributedrebirth.gdxapp.desktop.DeskApp; -import love.distributedrebirth.gdxapp.desktop.DeskAppScreen; -import love.distributedrebirth.gdxapp.desktop.DeskAppScreenListener; -import love.distributedrebirth.gdxapp.desktop.DeskTopInputProcessor; -import love.distributedrebirth.gdxapp.desktop.DeskTopScreen; - -public abstract class AbstractScreenDesktop extends ScreenAdapter implements DeskTopScreen { - - private final DeskAppScreen deskAppScreen; - private PerspectiveCamera cam; - private FirstPersonCameraController camController; - private DeskTopInputProcessor inputFilter; - private ModelBatch modelBatch; - private Array modelInstances = new Array(); - - public AbstractScreenDesktop(String name) { - this.create(); - deskAppScreen = new DeskAppScreen(name); - deskAppScreen.addDeskAppListener(new DeskAppScreenListener() { - - @Override - public void selectDeskApp(DeskApp deskApp) { - if (deskApp == null) { - inputFilter.setFiltering(false); - } else { - inputFilter.setFiltering(true); - } - } - }); - } - - protected void createModel(ModelBuilder modelBuilder, Array modelInstances) { - - } - - private void create() { - modelBatch = new ModelBatch(); - - cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); - cam.position.set(10f, 10f, 10f); - cam.lookAt(0, 0, 0); - cam.near = 1f; - cam.far = 300f; - cam.update(); - - ModelBuilder modelBuilder = new ModelBuilder(); - createModel(modelBuilder, modelInstances); - - camController = new FirstPersonCameraController(cam); - //camController = new CameraInputController(cam); - - inputFilter = new DeskTopInputProcessor(camController); - } - - @Override - public final void show() { - Gdx.input.setInputProcessor(inputFilter); - showDesktop(); - } - - protected void showDesktop() { - } - - @Override - public final void hide() { - Gdx.input.setInputProcessor(null); - hideDesktop(); - } - - protected void hideDesktop() { - } - - @Override - public final void dispose() { - modelBatch.dispose(); - disposeDesktop(); - } - - protected void disposeDesktop() { - } - - @Override - public final void render(float delta) { - camController.update(); - - Gdx.gl.glViewport(0, 0, Gdx.graphics.getBackBufferWidth(), Gdx.graphics.getBackBufferHeight()); - Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); - - renderDesktop(delta, modelBatch, cam, modelInstances); - } - - protected void renderDesktop(float delta, ModelBatch modelBatch, PerspectiveCamera cam, Array modelInstances) { - modelBatch.begin(cam); - for (ModelInstance instance : modelInstances) { - modelBatch.render(instance); - } - modelBatch.end(); - } - - @Override - public DeskAppScreen getDeskAppScreen() { - return deskAppScreen; - } -} diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop1.java b/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop1.java deleted file mode 100644 index c075a0e2..00000000 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop1.java +++ /dev/null @@ -1,40 +0,0 @@ -package love.distributedrebirth.gdxapp.screen; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.ScreenAdapter; -import com.badlogic.gdx.graphics.Texture; - -import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.GDXAppMain; -import love.distributedrebirth.gdxapp.desktop.DeskAppScreen; -import love.distributedrebirth.gdxapp.desktop.DeskTopScreen; - -@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") -public class ScreenDesktop1 extends ScreenAdapter implements DeskTopScreen { - private final GDXAppMain main; - private DeskAppScreen deskAppScreen; - private Texture backgroundImage; - - public ScreenDesktop1(final GDXAppMain main) { - this.main = main; - deskAppScreen = new DeskAppScreen("Desktop1"); - backgroundImage = new Texture(Gdx.files.internal("background/terrydavis-front.png")); - } - - @Override - public void render(float delta) { - main.batch.begin(); - main.batch.draw(backgroundImage, 0, 0, main.viewWidth, main.viewHeight); - main.batch.end(); - } - - @Override - public void dispose() { - backgroundImage.dispose(); - } - - @Override - public DeskAppScreen getDeskAppScreen() { - return deskAppScreen; - } -} diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop2.java b/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop2.java deleted file mode 100644 index 450759bf..00000000 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop2.java +++ /dev/null @@ -1,40 +0,0 @@ -package love.distributedrebirth.gdxapp.screen; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.ScreenAdapter; -import com.badlogic.gdx.graphics.Texture; - -import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.GDXAppMain; -import love.distributedrebirth.gdxapp.desktop.DeskAppScreen; -import love.distributedrebirth.gdxapp.desktop.DeskTopScreen; - -@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") -public class ScreenDesktop2 extends ScreenAdapter implements DeskTopScreen { - private final GDXAppMain main; - private DeskAppScreen deskAppScreen; - private Texture backgroundImage; - - public ScreenDesktop2(final GDXAppMain main) { - this.main = main; - deskAppScreen = new DeskAppScreen("Desktop2"); - backgroundImage = new Texture(Gdx.files.internal("background/terrydavis-nose.png")); - } - - @Override - public void render(float delta) { - main.batch.begin(); - main.batch.draw(backgroundImage, 0, 0, main.viewWidth, main.viewHeight); - main.batch.end(); - } - - @Override - public void dispose() { - backgroundImage.dispose(); - } - - @Override - public DeskAppScreen getDeskAppScreen() { - return deskAppScreen; - } -} diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenLoading.java b/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenLoading.java deleted file mode 100644 index 73b74e19..00000000 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenLoading.java +++ /dev/null @@ -1,29 +0,0 @@ -package love.distributedrebirth.gdxapp.screen; - -import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.ScreenAdapter; -import com.badlogic.gdx.graphics.Texture; - -import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.GDXAppMain; - -@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") -public class ScreenLoading extends ScreenAdapter { - private Texture backgroundImage; - - public ScreenLoading() { - backgroundImage = new Texture(Gdx.files.internal("background/gdxapp-loading.png")); - } - - @Override - public void render(float delta) { - GDXAppMain.INSTANCE.batch.begin(); - GDXAppMain.INSTANCE.batch.draw(backgroundImage, 0, 0, GDXAppMain.INSTANCE.viewWidth, GDXAppMain.INSTANCE.viewHeight); - GDXAppMain.INSTANCE.batch.end(); - } - - @Override - public void dispose() { - backgroundImage.dispose(); - } -} diff --git a/gdxapp4d-chain/pom.xml b/gdxapp4d-chain-music-msx/pom.xml similarity index 87% rename from gdxapp4d-chain/pom.xml rename to gdxapp4d-chain-music-msx/pom.xml index f2395680..75d80052 100644 --- a/gdxapp4d-chain/pom.xml +++ b/gdxapp4d-chain-music-msx/pom.xml @@ -5,6 +5,6 @@ gdxapp4d 0.0.1-SNAPSHOT - gdxapp4d-chain + gdxapp4d-chain-music-msx pom \ No newline at end of file diff --git a/gdxapp4d-chain-music-templeos/pom.xml b/gdxapp4d-chain-music-templeos/pom.xml new file mode 100644 index 00000000..3d2bf017 --- /dev/null +++ b/gdxapp4d-chain-music-templeos/pom.xml @@ -0,0 +1,10 @@ + + 4.0.0 + + love.distributedrebirth.gdxapp4d + gdxapp4d + 0.0.1-SNAPSHOT + + gdxapp4d-chain-music-templeos + pom + \ No newline at end of file diff --git a/gdxapp4d-chain-music-templeos/src/chain/music/000-playlist.m3u b/gdxapp4d-chain-music-templeos/src/chain/music/000-playlist.m3u new file mode 100644 index 00000000..aa785a29 --- /dev/null +++ b/gdxapp4d-chain-music-templeos/src/chain/music/000-playlist.m3u @@ -0,0 +1,26 @@ +#EXTM3U +#PLAYLIST:Music TempleOS +#EXTALB:Best of Youtube (2022) +#EXTART:Various +#EXTGENRE:Electropump + +#EXTINF:123,Panoramacircle - Waterfowl +panoramacircle-waterfowl.mp3 + +#EXTINF:123,Sanctumwave - Devine Intellect +sanctumwave-devine-intellect.mp3 + +#EXTINF:123,Sanctumwave - nightwalk +sanctumwave-nightwalk.mp3 + +#EXTINF:123,The Self Help Group - TempleOS +theselfhelpgroup-temple-os.mp3 + +#EXTINF:123,Sanctumwave - Risen +sanctumwave-risen.mp3 + +#EXTINF:123,Beeble - I used TempleOS to write a song +beeble-i-used-temple-os-to-write.mp3 + +#EXTINF:123,Ryanfarran - Risen TempleOS +ryanfarran-risen-temple-os.mp3 diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/beeble-i-used-temple-os-to-write.mp3 b/gdxapp4d-chain-music-templeos/src/chain/music/beeble-i-used-temple-os-to-write.mp3 similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/beeble-i-used-temple-os-to-write.mp3 rename to gdxapp4d-chain-music-templeos/src/chain/music/beeble-i-used-temple-os-to-write.mp3 diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/panoramacircle-waterfowl.mp3 b/gdxapp4d-chain-music-templeos/src/chain/music/panoramacircle-waterfowl.mp3 similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/panoramacircle-waterfowl.mp3 rename to gdxapp4d-chain-music-templeos/src/chain/music/panoramacircle-waterfowl.mp3 diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/ryanfarran-risen-temple-os.mp3 b/gdxapp4d-chain-music-templeos/src/chain/music/ryanfarran-risen-temple-os.mp3 similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/ryanfarran-risen-temple-os.mp3 rename to gdxapp4d-chain-music-templeos/src/chain/music/ryanfarran-risen-temple-os.mp3 diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/sanctumwave-devine-intellect.mp3 b/gdxapp4d-chain-music-templeos/src/chain/music/sanctumwave-devine-intellect.mp3 similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/sanctumwave-devine-intellect.mp3 rename to gdxapp4d-chain-music-templeos/src/chain/music/sanctumwave-devine-intellect.mp3 diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/sanctumwave-nightwalk.mp3 b/gdxapp4d-chain-music-templeos/src/chain/music/sanctumwave-nightwalk.mp3 similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/sanctumwave-nightwalk.mp3 rename to gdxapp4d-chain-music-templeos/src/chain/music/sanctumwave-nightwalk.mp3 diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/sanctumwave-risen.mp3 b/gdxapp4d-chain-music-templeos/src/chain/music/sanctumwave-risen.mp3 similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/sanctumwave-risen.mp3 rename to gdxapp4d-chain-music-templeos/src/chain/music/sanctumwave-risen.mp3 diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/theselfhelpgroup-temple-os.mp3 b/gdxapp4d-chain-music-templeos/src/chain/music/theselfhelpgroup-temple-os.mp3 similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/theselfhelpgroup-temple-os.mp3 rename to gdxapp4d-chain-music-templeos/src/chain/music/theselfhelpgroup-temple-os.mp3 diff --git a/gdxapp4d-chain-music-templeos/src/chain/warp-sea.xml b/gdxapp4d-chain-music-templeos/src/chain/warp-sea.xml new file mode 100644 index 00000000..f932b61c --- /dev/null +++ b/gdxapp4d-chain-music-templeos/src/chain/warp-sea.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/gdxapp4d-boot/pom.xml b/gdxapp4d-chain-sys-engine/pom.xml similarity index 73% rename from gdxapp4d-boot/pom.xml rename to gdxapp4d-chain-sys-engine/pom.xml index 3cfd2233..3de93adc 100644 --- a/gdxapp4d-boot/pom.xml +++ b/gdxapp4d-chain-sys-engine/pom.xml @@ -5,10 +5,6 @@ gdxapp4d 0.0.1-SNAPSHOT - gdxapp4d-boot + gdxapp4d-chain-sys-engine pom - - gdxapp4d-boot-desktop - gdxapp4d-boot-tos4 - \ No newline at end of file diff --git a/gdxapp4d-chain-sys-engine/src/chain/warp-sea.xml b/gdxapp4d-chain-sys-engine/src/chain/warp-sea.xml new file mode 100644 index 00000000..1e56813e --- /dev/null +++ b/gdxapp4d-chain-sys-engine/src/chain/warp-sea.xml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/gdxapp4d-chain-sys-ocean/pom.xml b/gdxapp4d-chain-sys-ocean/pom.xml new file mode 100644 index 00000000..d64abab1 --- /dev/null +++ b/gdxapp4d-chain-sys-ocean/pom.xml @@ -0,0 +1,10 @@ + + 4.0.0 + + love.distributedrebirth.gdxapp4d + gdxapp4d + 0.0.1-SNAPSHOT + + gdxapp4d-chain-sys-ocean + pom + \ No newline at end of file diff --git a/gdxapp4d-chain-sys-ocean/src/chain/warp-sea.xml b/gdxapp4d-chain-sys-ocean/src/chain/warp-sea.xml new file mode 100644 index 00000000..9bb29992 --- /dev/null +++ b/gdxapp4d-chain-sys-ocean/src/chain/warp-sea.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/core/WaterBucketDriverTest.java b/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/core/WaterBucketDriverTest.java index dc251cf2..a9ffece5 100644 --- a/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/core/WaterBucketDriverTest.java +++ b/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/core/WaterBucketDriverTest.java @@ -34,6 +34,6 @@ public class WaterBucketDriverTest { cipher.addCipherHeart(heart); Assertions.assertNotNull(bucket); - WaterBucketDriver.newInstance().createWriter().writeFile(bucket, new java.io.File("build/out-core.xml")); + WaterBucketDriver.newInstance().createWriter().writeFile(bucket, new java.io.File("target/out-core.xml")); } } \ No newline at end of file diff --git a/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/hash/WaterShotDriverTest.java b/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/hash/WaterShotDriverTest.java index 02b8c65f..55f1f58d 100644 --- a/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/hash/WaterShotDriverTest.java +++ b/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/hash/WaterShotDriverTest.java @@ -21,6 +21,6 @@ public class WaterShotDriverTest { drugs.addSoftHash(new WaterSoftHash("test2.txt", "ASDFYYF234234SDFSDFASDFS")); Assertions.assertNotNull(drugs); - WaterShotDriver.newInstance().createWriter().writeFile(drugs, new java.io.File("build/out-hash.xml")); + WaterShotDriver.newInstance().createWriter().writeFile(drugs, new java.io.File("target/out-hash.xml")); } } \ No newline at end of file diff --git a/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/sea/WaterOceanDriverTest.java b/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/sea/WaterOceanDriverTest.java index 3ee17a2c..06ebff23 100644 --- a/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/sea/WaterOceanDriverTest.java +++ b/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/sea/WaterOceanDriverTest.java @@ -29,6 +29,6 @@ public class WaterOceanDriverTest { sea.addSeaMagic(new WaterSeaMagic("inode/directory", "album/")); Assertions.assertNotNull(ocean); - WaterOceanDriver.newInstance().createWriter().writeFile(ocean, new java.io.File("build/out-sea.xml")); + WaterOceanDriver.newInstance().createWriter().writeFile(ocean, new java.io.File("target/out-sea.xml")); } } \ No newline at end of file diff --git a/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/ship/WaterDeviceDriverTest.java b/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/ship/WaterDeviceDriverTest.java index 7691a95d..2b6401e9 100644 --- a/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/ship/WaterDeviceDriverTest.java +++ b/gdxapp4d-lib/gdxapp4d-lib-warpme/src/test/java/love/distributedrebirth/warpme/ship/WaterDeviceDriverTest.java @@ -26,6 +26,6 @@ public class WaterDeviceDriverTest { device.buildShip(ship); Assertions.assertNotNull(device); - WaterDeviceDriver.newInstance().createWriter().writeFile(device, new java.io.File("build/out-ship.xml")); + WaterDeviceDriver.newInstance().createWriter().writeFile(device, new java.io.File("target/out-ship.xml")); } } \ No newline at end of file diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/pom.xml b/gdxapp4d-tos4/pom.xml similarity index 50% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/pom.xml rename to gdxapp4d-tos4/pom.xml index 96b5bfdd..74cdd2dd 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/pom.xml +++ b/gdxapp4d-tos4/pom.xml @@ -2,10 +2,11 @@ 4.0.0 love.distributedrebirth.gdxapp4d - gdxapp4d-boot + gdxapp4d 0.0.1-SNAPSHOT - gdxapp4d-boot-tos4 + gdxapp4d-tos4 + bundle love.distributedrebirth.gdxapp4d @@ -35,5 +36,33 @@ games.spooky.gdx gdx-nativefilechooser + + org.apache.felix + org.apache.felix.framework + + + ch.qos.logback + logback-classic + + + + + org.apache.felix + maven-bundle-plugin + true + + + <_donotcopy>(.git) + org.osgi.framework,org.osgi.service.packageadmin,org.osgi.service.url,org.osgi.service.startlevel,org.osgi.util.tracker,* + love.distributedrebirth.gdxapp4d.tos4.service + love.distributedrebirth.gdxapp4d.tos4.* + *;artifactId=org.apache.felix.framework;inline=true,*;artifactId=gdxapp4d-lib-bassboonyd;inline=true + love.distributedrebirth.gdxapp4d.tos4.GDXAppTos4Activator + distributedrebirth.love + + + + + \ No newline at end of file diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4.java new file mode 100644 index 00000000..e8c02e86 --- /dev/null +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4.java @@ -0,0 +1,121 @@ +package love.distributedrebirth.gdxapp4d.tos4; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.osgi.framework.BundleException; +import org.osgi.framework.launch.Framework; + +import com.badlogic.gdx.ApplicationListener; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Screen; +import com.badlogic.gdx.utils.ScreenUtils; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; +import love.distributedrebirth.bassboonyd.BãßBȍőnClassInfoʸᴰ; +import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ; +import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinʸᴰ; +import love.distributedrebirth.bassboonyd.BãßBȍőnPackageInfoʸᴰ; +import love.distributedrebirth.bassboonyd.jmx.DefaultEnumInstanceᴶᴹˣ; +import love.distributedrebirth.bassboonyd.jmx.GuageCounterᴶᴹˣ; +import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpTerminal; +import net.spookygames.gdx.nativefilechooser.NativeFileChooser; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +@BãßBȍőnClassInfoʸᴰ(name = "GDXAppTos4", purpose = "Main loop render dispatcher and bootup.") +@BãßBȍőnPackageInfoʸᴰ(name = "love.distributedrebirth.gdxapp4d.tos4") +public enum GDXAppTos4 implements DefaultEnumInstanceᴶᴹˣ, ApplicationListener, SystemWarpTerminal { + + INSTANCE; + + private Screen screen; + private Framework systemBundle; + private GDXAppTos4Activator systemActivator; + private Map,Screen> screens; + private NativeFileChooser fileChooser; + private final GuageCounterᴶᴹˣ selectScreenCounter; + private final BãßBȍőnCoffinOpenʸᴰ BBC = BãßBȍőnCoffinOpenʸᴰ.newInstance(); + public BãßBȍőnCoffinʸᴰ GET_BBC() { return BBC; } + + private GDXAppTos4() { + BBC.BOON_INIT(this); + BȍőnJmxInit(GDXAppTos4Keyʸᴰ.JMX); + selectScreenCounter = BȍőnJmxInitGuageCounter(GDXAppTos4Keyʸᴰ.JMX, "selectScreenCounter"); + } + + public void BãßInit(List args, int viewWidth, int viewHeight, NativeFileChooser fileChooser) { + this.fileChooser = fileChooser; + screens = new HashMap<>(); + systemActivator = new GDXAppTos4Activator(); + systemActivator.BãßInit(args, viewWidth, viewHeight, this); + } + + @Override + public void create() { + systemBundle = GDXAppTos4Startup.init(this, systemActivator); + } + + @Override + public void resize(int width, int height) { + screen.resize(width, height); + } + + @Override + public void render() { + ScreenUtils.clear(0f, 0f, 0f, 1f, true); + screen.render(Gdx.graphics.getDeltaTime()); + } + + @Override + public void pause() { + screen.pause(); + } + + @Override + public void resume() { + screen.resume(); + } + + @Override + public void dispose() { + for (Screen screen:screens.values()) { + screen.dispose(); + } + try { + systemBundle.stop(); + } catch (BundleException e) { + throw new RuntimeException(e); + } + } + + @Override + public void registrateScreen(Screen screen) { + screens.put(screen.getClass(), screen); + } + + @Override + public void disposeScreen(Screen screen) { + screens.remove(screen.getClass()); + screen.dispose(); + } + + @Override + public void selectScreen(Class screenClass) { + Screen screen = screens.get(screenClass); + if (screen == null) { + throw new NullPointerException("Unknow screen: "+screenClass); + } + if (this.screen != null) { + this.screen.hide(); + } + this.screen = screen; + this.screen.show(); + this.screen.resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); + selectScreenCounter.increment(); + } + + public NativeFileChooser getFileChooser() { + return fileChooser; + } +} diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Activator.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Activator.java new file mode 100644 index 00000000..98eb9d12 --- /dev/null +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Activator.java @@ -0,0 +1,272 @@ +package love.distributedrebirth.gdxapp4d.tos4; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Hashtable; +import java.util.List; +import java.util.Properties; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.BundleException; +import org.x4o.xml.io.X4OConnectionException; +import org.xml.sax.SAXException; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; +import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpBase; +import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpBootArgs; +import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpSea; +import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpShip; +import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpTerminal; +import love.distributedrebirth.warpme.Warpᵐᵉ; +import love.distributedrebirth.warpme.sea.WaterOcean; +import love.distributedrebirth.warpme.sea.WaterOceanDriver; +import love.distributedrebirth.warpme.sea.WaterSeaChain; +import love.distributedrebirth.warpme.sea.WaterSeaMagic; +import love.distributedrebirth.warpme.ship.WaterDevice; +import love.distributedrebirth.warpme.ship.WaterDeviceDriver; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public class GDXAppTos4Activator implements BundleActivator { + + public List args; + public int viewWidth; + public int viewHeight; + private File hyperdriveHome; + private File warpshipHome; + private WaterDevice warpshipDevice; + private SystemWarpTerminal systemWarpTerminal; + private List listeners = new ArrayList<>(); + + private static final String SYSTEM_USER_HOME = "user.home"; + private static final String HYPERDRIVE_HOME = "Hyperdrive"; + private static final String WARPSHIP_HOME = "Warpship"; + + public GDXAppTos4Activator() { + } + + public void BãßInit(List args, int viewWidth, int viewHeight, SystemWarpTerminal systemWarpTerminal) { + this.args = args; + this.viewWidth = viewWidth; + this.viewHeight = viewHeight; + this.systemWarpTerminal = systemWarpTerminal; + } + + private void fireMessageEvent(String message) { + for (GDXAppTos4BootListener listener:listeners) { + listener.bootLine(message); + } + } + + public void addBootListener(GDXAppTos4BootListener listener) { + listeners.add(listener); + } + + public void removeBootListener(GDXAppTos4BootListener listener) { + listeners.remove(listener); + } + + @Override + public void stop(final BundleContext context) { + } + + @Override + public void start(final BundleContext context) { + fireMessageEvent("Mecca System eXtension superscript Four"); + fireMessageEvent("tos4: starting..."); + fireMessageEvent("init-cpus: "+Runtime.getRuntime().availableProcessors()); + fireMessageEvent("free-memory: 0x"+Long.toHexString(Runtime.getRuntime().freeMemory())); + + boolean useLocal = args.contains("use-local"); + + File userHome = new File(System.getProperty(SYSTEM_USER_HOME)); + hyperdriveHome = new File(userHome, HYPERDRIVE_HOME); + fireMessageEvent("hyper-home: "+hyperdriveHome); + if (!hyperdriveHome.exists()) { + fireMessageEvent("ERROR: No Hyperdrive home."); + return; + } + warpshipHome = new File(hyperdriveHome, WARPSHIP_HOME); + if (useLocal) { + warpshipHome = new File("."); + } + if (!warpshipHome.exists()) { + fireMessageEvent("ERROR: No Warpship home."); + return; + } + File warpShip = new File(warpshipHome, Warpᵐᵉ.WARP_SHIP); + if (useLocal) { + warpShip = new File(warpshipHome, "local-ship.xml"); + } + fireMessageEvent("warp-ship: "+warpShip); + if (!warpShip.exists()) { + fireMessageEvent("ERROR: No warp-ship.xml found."); + return; + } + + context.registerService(SystemWarpBase.class.getName(), new SystemWarpBaseImpl(), new Hashtable()); + context.registerService(SystemWarpBootArgs.class.getName(), new SystemWarpBootArgsImpl(), new Hashtable()); + context.registerService(SystemWarpShip.class.getName(), new SystemWarpShipImpl(), new Hashtable()); + context.registerService(SystemWarpTerminal.class.getName(), systemWarpTerminal, new Hashtable()); + + try { + warpshipDevice = WaterDeviceDriver.newInstance().createReader().readFile(warpShip); + } catch (Exception e) { + e.printStackTrace(); + fireMessageEvent("ERROR: "+e.getMessage()); + return; + } + fireMessageEvent("warp-engine: "+warpshipDevice.theShip().getName()); + + Properties overrides = new Properties(); + if (useLocal) { + File localOverride = new File("local-override.xml"); + if (localOverride.exists()) { + try { + overrides.loadFromXML(new FileInputStream(localOverride)); + } catch (Exception e) { + throw new RuntimeException(e); + } + fireMessageEvent("use-local: local-override.xml loaded."); + } else { + fireMessageEvent("use-local: local-override.xml not found."); + } + + } + int result = 0; + try { + result = resolveWaterOcean(overrides, context, warpshipDevice.theShip().getEngine()); + } catch (Exception e) { + e.printStackTrace(); + fireMessageEvent("ERROR: "+e.getMessage()); + return; + } + if (result > 0) { + fireMessageEvent("tos4: FAILURE BOOT ABORTED"); + } else { + fireMessageEvent("tos4: chains resolved."); + } + } + + private int resolveWaterOcean(Properties overrides, BundleContext context, String key) throws IOException, InterruptedException, X4OConnectionException, SAXException, BundleException { + File waterHome; + String override = overrides.getProperty(key); + if (override == null) { + waterHome = new File(hyperdriveHome, key); + if (!waterHome.exists()) { + executeHyperdrive("hyperdrive", "mount", waterHome.getAbsolutePath(), key); + } + String infoResult = executeHyperdrive("hyperdrive", "info", waterHome.getAbsolutePath()); + if (!infoResult.startsWith("Drive Info")) { + fireMessageEvent("ERROR: Couldn't get info on: "+waterHome); + return 1; + } + } else { + waterHome = new File(override); + } + File waterSea = new File(waterHome, Warpᵐᵉ.WARP_SEA); + if (!waterSea.exists()) { + fireMessageEvent("ERROR: No warp-sea.xml found."); + return 1; + } + WaterOcean ocean = WaterOceanDriver.newInstance().createReader().readFile(waterSea); + fireMessageEvent("water-ocean: "+key+" ("+ocean.theWater().getName()+")"); + + Hashtable props = new Hashtable(); + props.put(SystemWarpSea.NAME_PROPERTY, ocean.theWater().getName()); + props.put(SystemWarpSea.PROVIDER_PROPERTY, ocean.theWater().getProvider()); + context.registerService(SystemWarpSea.class.getName(), new SystemWarpSeaImpl(ocean), props); + + for (WaterSeaMagic magic:ocean.theWater().getSeaMagics()) { + if ("application/vnd.osgi.bundle".equals(magic.getMime())) { + String overrideBundleKey = key + "." + magic.getFile(); + String overrideBundle = overrides.getProperty(overrideBundleKey); + if (overrideBundle == null) { + GDXAppTos4BootFactory.installAndStartBundles(context, "reference:file:"+waterHome.getAbsolutePath()+"/"+magic.getFile()); + } else { + GDXAppTos4BootFactory.installAndStartBundles(context, "reference:file:"+overrideBundle); + } + } + } + int result = 0; + for (WaterSeaChain chain: ocean.theWater().getSeaChains()) { + result += resolveWaterOcean(overrides, context, chain.getKey()); + } + return result; + } + + private String executeHyperdrive(String...cmd) throws IOException, InterruptedException { + ProcessBuilder builder = new ProcessBuilder(); + builder.command(cmd); + builder.directory(new File(System.getProperty("user.home"))); + Process process = builder.start(); + StringBuilder buf = new StringBuilder(); + try(BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()))) { + String line; + while ((line = input.readLine()) != null) { + buf.append(line); + } + } + process.waitFor(); + return buf.toString(); + } + + public class SystemWarpSeaImpl implements SystemWarpSea { + + private final WaterOcean warpSea; + + public SystemWarpSeaImpl(WaterOcean warpSea) { + this.warpSea = warpSea; + } + + @Override + public WaterOcean getWarpSea() { + return warpSea; + } + } + + public class SystemWarpBaseImpl implements SystemWarpBase { + + @Override + public File getHyperdriveHome() { + return hyperdriveHome; + } + + @Override + public File getWarpshipHome() { + return warpshipHome; + } + + } + + public class SystemWarpBootArgsImpl implements SystemWarpBootArgs { + + @Override + public List getBootArgs() { + return args; + } + + @Override + public int getBootWindowWidth() { + return viewWidth; + } + + @Override + public int getBootWindowHeight() { + return viewHeight; + } + + } + + public class SystemWarpShipImpl implements SystemWarpShip { + + @Override + public WaterDevice getWarpShip() { + return warpshipDevice; + } + } +} diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootFactory.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootFactory.java new file mode 100644 index 00000000..63d60810 --- /dev/null +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootFactory.java @@ -0,0 +1,149 @@ +package love.distributedrebirth.gdxapp4d.tos4; + +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.ServiceLoader; + +import org.osgi.framework.Bundle; +import org.osgi.framework.BundleContext; +import org.osgi.framework.BundleException; +import org.osgi.framework.Constants; +import org.osgi.framework.launch.Framework; +import org.osgi.framework.launch.FrameworkFactory; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public class GDXAppTos4BootFactory { + + public static void installAndStartBundles(BundleContext bundleContext, String... bundleLocations) throws BundleException { + for (String location : bundleLocations) { + Bundle addition = bundleContext.installBundle(location); + addition.start(); + } + } + + public static Framework createFramework() { + return createFramework(buildConfig()); + } + + public static Framework createFramework(Map config) { + ServiceLoader factoryLoader = ServiceLoader.load(FrameworkFactory.class); + for (FrameworkFactory factory : factoryLoader) { + return factory.newFramework(config); + } + throw new IllegalStateException("Unable to load FrameworkFactory service."); + } + + public static Map buildConfig() { + final File cachedir = createCacheDir(); + + Map configMap = new HashMap(); + configMap.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA, + "love.distributedrebirth.gdxapp4d.tos4.service,"+ + "com.badlogic.gdx,"+ + "com.badlogic.gdx.assets,"+ + "com.badlogic.gdx.assets.loaders,"+ + "com.badlogic.gdx.assets.loaders.resolvers,"+ + "com.badlogic.gdx.audio,"+ + "com.badlogic.gdx.files,"+ + "com.badlogic.gdx.graphics,"+ + "com.badlogic.gdx.graphics.g2d,"+ + "com.badlogic.gdx.graphics.g3d,"+ + "com.badlogic.gdx.graphics.g3d.attributes,"+ + "com.badlogic.gdx.graphics.g3d.decals,"+ + "com.badlogic.gdx.graphics.g3d.environment,"+ + "com.badlogic.gdx.graphics.g3d.loader,"+ + "com.badlogic.gdx.graphics.g3d.model,"+ + "com.badlogic.gdx.graphics.g3d.model.data,"+ + "com.badlogic.gdx.graphics.g3d.particles,"+ + "com.badlogic.gdx.graphics.g3d.particles.bactches,"+ + "com.badlogic.gdx.graphics.g3d.particles.emitters,"+ + "com.badlogic.gdx.graphics.g3d.particles.influencers,"+ + "com.badlogic.gdx.graphics.g3d.particles.renderers,"+ + "com.badlogic.gdx.graphics.g3d.particles.values,"+ + "com.badlogic.gdx.graphics.g3d.shaders,"+ + "com.badlogic.gdx.graphics.g3d.utils,"+ + "com.badlogic.gdx.graphics.g3d.utils.shapebuilders,"+ + "com.badlogic.gdx.graphics.glutils,"+ + "com.badlogic.gdx.graphics.profiling,"+ + "com.badlogic.gdx.input,"+ + "com.badlogic.gdx.maps,"+ + "com.badlogic.gdx.maps.objects,"+ + "com.badlogic.gdx.maps.tiled,"+ + "com.badlogic.gdx.maps.tiled.objects,"+ + "com.badlogic.gdx.maps.tiled.renderers,"+ + "com.badlogic.gdx.maps.tiled.tiles,"+ + "com.badlogic.gdx.math,"+ + "com.badlogic.gdx.math.collision,"+ + "com.badlogic.gdx.net,"+ + "com.badlogic.gdx.scenes.scene2d,"+ + "com.badlogic.gdx.scenes.scene2d.actions,"+ + "com.badlogic.gdx.scenes.scene2d.ui,"+ + "com.badlogic.gdx.scenes.scene2d.utils,"+ + "com.badlogic.gdx.utils,"+ + "com.badlogic.gdx.utils.async,"+ + "com.badlogic.gdx.utils.compression,"+ + "com.badlogic.gdx.utils.compression.lz,"+ + "com.badlogic.gdx.utils.compression.lzma,"+ + "com.badlogic.gdx.utils.compression.rangecoder,"+ + "com.badlogic.gdx.utils.reflect,"+ + "com.badlogic.gdx.utils.viewport,"+ + "imgui,"+ + "imgui.flag,"+ + "imgui.glfw,"+ + "imgui.gl3,"+ + "imgui.type,"+ + "net.spookygames.gdx.nativefilechooser,"+ + "love.distributedrebirth.bassboonyd,"+ + "love.distributedrebirth.bassboonyd.jmx,"+ + "love.distributedrebirth.numberxd,"+ + "love.distributedrebirth.numberxd.base2t,"+ + "love.distributedrebirth.numberxd.base2t.part,"+ + "love.distributedrebirth.numberxd.base2t.part.warp,"+ + "love.distributedrebirth.numberxd.base2t.type,"+ + "love.distributedrebirth.numberxd.base2t.typexl,"+ + "love.distributedrebirth.numberxd.glyph,"+ + "love.distributedrebirth.numberxd.x4o" + ); // ; version=1.0.0 + + if (cachedir != null) { + configMap.put(Constants.FRAMEWORK_STORAGE, cachedir.getAbsolutePath()); + } + return configMap; + } + + private static File createCacheDir() { + final File cachedir; + try { + cachedir = File.createTempFile("gdxapp4d.tos4.cache", null); + cachedir.delete(); + createShutdownHook(cachedir); + return cachedir; + } catch (IOException e) { + // temp dir creation failed, return null + return null; + } + } + + private static void createShutdownHook(final File cachedir) { + Runtime.getRuntime().addShutdownHook(new Thread() { + @Override + public void run() { + deleteFileOrDir(cachedir); + } + }); + } + + private static void deleteFileOrDir(File file) { + if (file.isDirectory()) { + File[] childs = file.listFiles(); + for (File child : childs) { + deleteFileOrDir(child); + } + } + file.delete(); + } +} diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootListener.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootListener.java new file mode 100644 index 00000000..4e4312f6 --- /dev/null +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootListener.java @@ -0,0 +1,9 @@ +package love.distributedrebirth.gdxapp4d.tos4; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public interface GDXAppTos4BootListener { + + void bootLine(String message); +} diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootScreen.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootScreen.java new file mode 100644 index 00000000..e3568642 --- /dev/null +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4BootScreen.java @@ -0,0 +1,56 @@ +package love.distributedrebirth.gdxapp4d.tos4; + +import java.util.ArrayList; +import java.util.List; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.ScreenAdapter; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public class GDXAppTos4BootScreen extends ScreenAdapter implements GDXAppTos4BootListener { + + private BitmapFont font; + private SpriteBatch batch; + private Texture backgroundImage; + private List messages = new ArrayList<>(); + + public GDXAppTos4BootScreen() { + batch = new SpriteBatch(); + backgroundImage = new Texture(Gdx.files.internal("background/msx-boot.png")); + font = new BitmapFont(); + } + + @Override + public void render(float delta) { + int textX = 100; + int textY = 420; + int textYStep = 20; + batch.begin(); + batch.draw(backgroundImage, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); + synchronized (messages) { + for (String message:messages) { + font.draw(batch, message, textX, textY-=textYStep); + } + } + batch.end(); + } + + @Override + public void dispose() { + batch.dispose(); + backgroundImage.dispose(); + font.dispose(); + } + + @Override + public void bootLine(String message) { + synchronized (messages) { + messages.add(message); + } + } +} diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/GDXAppMainKeyʸᴰ.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Keyʸᴰ.java similarity index 69% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/GDXAppMainKeyʸᴰ.java rename to gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Keyʸᴰ.java index 4b4f19ce..61065def 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/GDXAppMainKeyʸᴰ.java +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Keyʸᴰ.java @@ -1,10 +1,10 @@ -package love.distributedrebirth.gdxapp; +package love.distributedrebirth.gdxapp4d.tos4; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinStoreKeyʸᴰ; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") -public enum GDXAppMainKeyʸᴰ implements BãßBȍőnCoffinStoreKeyʸᴰ { +public enum GDXAppTos4Keyʸᴰ implements BãßBȍőnCoffinStoreKeyʸᴰ { JMX, diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Startup.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Startup.java new file mode 100644 index 00000000..8a792bf8 --- /dev/null +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/GDXAppTos4Startup.java @@ -0,0 +1,84 @@ +package love.distributedrebirth.gdxapp4d.tos4; + +import org.osgi.framework.launch.Framework; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.badlogic.gdx.Application; +import com.badlogic.gdx.ApplicationLogger; +import com.badlogic.gdx.Gdx; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public class GDXAppTos4Startup { + + private static final Logger LOG = LoggerFactory.getLogger(GDXAppTos4Startup.class); + + public static Framework init(GDXAppTos4 tos4, GDXAppTos4Activator systemActivator) { + LOG.info("init framework"); + Gdx.app.setLogLevel(Application.LOG_DEBUG); + Gdx.app.setApplicationLogger(new GDXAppApplicationLogger()); + + final Framework systemBundle = GDXAppTos4BootFactory.createFramework(); + final GDXAppTos4BootScreen bootScreen = new GDXAppTos4BootScreen(); + + systemActivator.addBootListener(bootScreen); + tos4.registrateScreen(bootScreen); + tos4.selectScreen(GDXAppTos4BootScreen.class); + + Runnable run = () -> { + try { + systemBundle.init(); + systemBundle.start(); + systemActivator.start(systemBundle.getBundleContext()); + + Gdx.app.postRunnable(() -> { + LOG.debug("Release boot screen"); + systemActivator.removeBootListener(bootScreen); + tos4.disposeScreen(bootScreen); + }); + } catch (Exception e) { + throw new RuntimeException(e); + } + }; + Thread framework = new Thread(run); + framework.start(); + + return systemBundle; + } + + static class GDXAppApplicationLogger implements ApplicationLogger { + + @Override + public void log(String tag, String message) { + LoggerFactory.getLogger(tag).info(message); + } + + @Override + public void log(String tag, String message, Throwable exception) { + LoggerFactory.getLogger(tag).info(message, exception); + } + + @Override + public void error(String tag, String message) { + LoggerFactory.getLogger(tag).error(message); + } + + @Override + public void error(String tag, String message, Throwable exception) { + LoggerFactory.getLogger(tag).error(message, exception); + } + + @Override + public void debug(String tag, String message) { + LoggerFactory.getLogger(tag).debug(message); + } + + @Override + public void debug(String tag, String message, Throwable exception) { + LoggerFactory.getLogger(tag).debug(message, exception); + } + } +} diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpBase.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpBase.java new file mode 100644 index 00000000..7285222b --- /dev/null +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpBase.java @@ -0,0 +1,13 @@ +package love.distributedrebirth.gdxapp4d.tos4.service; + +import java.io.File; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public interface SystemWarpBase { + + File getHyperdriveHome(); + + File getWarpshipHome(); +} diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpBootArgs.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpBootArgs.java new file mode 100644 index 00000000..7be99aad --- /dev/null +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpBootArgs.java @@ -0,0 +1,15 @@ +package love.distributedrebirth.gdxapp4d.tos4.service; + +import java.util.List; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public interface SystemWarpBootArgs { + + List getBootArgs(); + + int getBootWindowWidth(); + + int getBootWindowHeight(); +} diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpSea.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpSea.java new file mode 100644 index 00000000..f506c72e --- /dev/null +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpSea.java @@ -0,0 +1,13 @@ +package love.distributedrebirth.gdxapp4d.tos4.service; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; +import love.distributedrebirth.warpme.sea.WaterOcean; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public interface SystemWarpSea { + + String NAME_PROPERTY = "warp.sea.name"; + String PROVIDER_PROPERTY = "warp.sea.provider"; + + WaterOcean getWarpSea(); +} diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpShip.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpShip.java new file mode 100644 index 00000000..c6c2de50 --- /dev/null +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpShip.java @@ -0,0 +1,10 @@ +package love.distributedrebirth.gdxapp4d.tos4.service; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; +import love.distributedrebirth.warpme.ship.WaterDevice; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public interface SystemWarpShip { + + WaterDevice getWarpShip(); +} diff --git a/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpTerminal.java b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpTerminal.java new file mode 100644 index 00000000..14e0fa0a --- /dev/null +++ b/gdxapp4d-tos4/src/main/java/love/distributedrebirth/gdxapp4d/tos4/service/SystemWarpTerminal.java @@ -0,0 +1,15 @@ +package love.distributedrebirth.gdxapp4d.tos4.service; + +import com.badlogic.gdx.Screen; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public interface SystemWarpTerminal { + + void registrateScreen(Screen screen); + + void disposeScreen(Screen screen); + + void selectScreen(Class screenClass); +} diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/background/doom-credits.png b/gdxapp4d-tos4/src/main/resources/background/doom-credits.png similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/background/doom-credits.png rename to gdxapp4d-tos4/src/main/resources/background/doom-credits.png diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/background/gdxapp-loading.png b/gdxapp4d-tos4/src/main/resources/background/gdxapp-loading.png similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/background/gdxapp-loading.png rename to gdxapp4d-tos4/src/main/resources/background/gdxapp-loading.png diff --git a/gdxapp4d-tos4/src/main/resources/background/msx-boot.png b/gdxapp4d-tos4/src/main/resources/background/msx-boot.png new file mode 100644 index 0000000000000000000000000000000000000000..9d3dd725412a371c1983b951a92ed54416c0799c GIT binary patch literal 41036 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

xsM36E^p%@;y{$1V)HRA)xkhHv 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 Sb_Lk}pqBQ3tNQKQ{eJ>piq_r$ literal 0 HcmV?d00001 diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/background/temple-os.png b/gdxapp4d-tos4/src/main/resources/background/temple-os.png similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/background/temple-os.png rename to gdxapp4d-tos4/src/main/resources/background/temple-os.png diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/background/terrydavis-front.png b/gdxapp4d-tos4/src/main/resources/background/terrydavis-front.png similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/background/terrydavis-front.png rename to gdxapp4d-tos4/src/main/resources/background/terrydavis-front.png diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/background/terrydavis-nose.png b/gdxapp4d-tos4/src/main/resources/background/terrydavis-nose.png similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/background/terrydavis-nose.png rename to gdxapp4d-tos4/src/main/resources/background/terrydavis-nose.png diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/code-2000.ttf b/gdxapp4d-tos4/src/main/resources/font/code-2000.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/code-2000.ttf rename to gdxapp4d-tos4/src/main/resources/font/code-2000.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/code-2001.ttf b/gdxapp4d-tos4/src/main/resources/font/code-2001.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/code-2001.ttf rename to gdxapp4d-tos4/src/main/resources/font/code-2001.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/code-2002.ttf b/gdxapp4d-tos4/src/main/resources/font/code-2002.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/code-2002.ttf rename to gdxapp4d-tos4/src/main/resources/font/code-2002.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/fa-solid-900.ttf b/gdxapp4d-tos4/src/main/resources/font/fa-solid-900.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/fa-solid-900.ttf rename to gdxapp4d-tos4/src/main/resources/font/fa-solid-900.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/free-sans.ttf b/gdxapp4d-tos4/src/main/resources/font/free-sans.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/free-sans.ttf rename to gdxapp4d-tos4/src/main/resources/font/free-sans.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/new-gardiner-bmp.ttf b/gdxapp4d-tos4/src/main/resources/font/new-gardiner-bmp.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/new-gardiner-bmp.ttf rename to gdxapp4d-tos4/src/main/resources/font/new-gardiner-bmp.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-balinese.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-balinese.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-balinese.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-balinese.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-bamum.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-bamum.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-bamum.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-bamum.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-batak.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-batak.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-batak.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-batak.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-brahmi.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-brahmi.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-brahmi.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-brahmi.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-glagolitic.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-glagolitic.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-glagolitic.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-glagolitic.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-lepcha.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-lepcha.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-lepcha.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-lepcha.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-lisu.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-lisu.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-lisu.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-lisu.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-samaritan.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-samaritan.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-samaritan.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-samaritan.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-sinhala.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-sinhala.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-sinhala.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-sinhala.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-sundanese.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-sundanese.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-sundanese.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-sundanese.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-tagalog.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-tagalog.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-tagalog.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-tagalog.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-tagbanwa.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-tagbanwa.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-tagbanwa.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-tagbanwa.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-tai-le.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-tai-le.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-tai-le.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-tai-le.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-tai-tham.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-sans-tai-tham.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-sans-tai-tham.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-sans-tai-tham.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-serif-tibetan.ttf b/gdxapp4d-tos4/src/main/resources/font/noto-serif-tibetan.ttf similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/font/noto-serif-tibetan.ttf rename to gdxapp4d-tos4/src/main/resources/font/noto-serif-tibetan.ttf diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/idtech-doom-sigil.mp3 b/gdxapp4d-tos4/src/main/resources/idtech-doom-sigil.mp3 similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/music/idtech-doom-sigil.mp3 rename to gdxapp4d-tos4/src/main/resources/idtech-doom-sigil.mp3 diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/shader/color.fragment.glsl b/gdxapp4d-tos4/src/main/resources/shader/color.fragment.glsl similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/shader/color.fragment.glsl rename to gdxapp4d-tos4/src/main/resources/shader/color.fragment.glsl diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/shader/color.vertex.glsl b/gdxapp4d-tos4/src/main/resources/shader/color.vertex.glsl similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/shader/color.vertex.glsl rename to gdxapp4d-tos4/src/main/resources/shader/color.vertex.glsl diff --git a/gdxapp4d-vrgem4/pom.xml b/gdxapp4d-vrgem4/pom.xml new file mode 100644 index 00000000..514cbd8c --- /dev/null +++ b/gdxapp4d-vrgem4/pom.xml @@ -0,0 +1,106 @@ + + 4.0.0 + + love.distributedrebirth.gdxapp4d + gdxapp4d + 0.0.1-SNAPSHOT + + gdxapp4d-vrgem4 + bundle + + + love.distributedrebirth.gdxapp4d + gdxapp4d-tos4 + ${project.version} + + + + + + org.apache.felix + maven-bundle-plugin + true + + + <_donotcopy>(.git) + + love.distributedrebirth.gdxapp4d.tos4.service, + org.osgi.framework, + com.badlogic.gdx, + com.badlogic.gdx.assets, + com.badlogic.gdx.assets.loaders, + com.badlogic.gdx.assets.loaders.resolvers, + com.badlogic.gdx.audio, + com.badlogic.gdx.files, + com.badlogic.gdx.graphics, + com.badlogic.gdx.graphics.g2d, + com.badlogic.gdx.graphics.g3d, + com.badlogic.gdx.graphics.g3d.attributes, + com.badlogic.gdx.graphics.g3d.decals, + com.badlogic.gdx.graphics.g3d.environment, + com.badlogic.gdx.graphics.g3d.loader, + com.badlogic.gdx.graphics.g3d.model, + com.badlogic.gdx.graphics.g3d.model.data, + com.badlogic.gdx.graphics.g3d.particles, + com.badlogic.gdx.graphics.g3d.particles.bactches, + com.badlogic.gdx.graphics.g3d.particles.emitters, + com.badlogic.gdx.graphics.g3d.particles.influencers, + com.badlogic.gdx.graphics.g3d.particles.renderers, + com.badlogic.gdx.graphics.g3d.particles.values, + com.badlogic.gdx.graphics.g3d.shaders, + com.badlogic.gdx.graphics.g3d.utils, + com.badlogic.gdx.graphics.g3d.utils.shapebuilders, + com.badlogic.gdx.graphics.glutils, + com.badlogic.gdx.graphics.profiling, + com.badlogic.gdx.input, + com.badlogic.gdx.maps, + com.badlogic.gdx.maps.objects, + com.badlogic.gdx.maps.tiled, + com.badlogic.gdx.maps.tiled.objects, + com.badlogic.gdx.maps.tiled.renderers, + com.badlogic.gdx.maps.tiled.tiles, + com.badlogic.gdx.math, + com.badlogic.gdx.math.collision, + com.badlogic.gdx.net, + com.badlogic.gdx.scenes.scene2d, + com.badlogic.gdx.scenes.scene2d.actions, + com.badlogic.gdx.scenes.scene2d.ui, + com.badlogic.gdx.scenes.scene2d.utils, + com.badlogic.gdx.utils, + com.badlogic.gdx.utils.async, + com.badlogic.gdx.utils.compression, + com.badlogic.gdx.utils.compression.lz, + com.badlogic.gdx.utils.compression.lzma, + com.badlogic.gdx.utils.compression.rangecoder, + com.badlogic.gdx.utils.reflect, + com.badlogic.gdx.utils.viewport, + imgui, + imgui.flag, + imgui.glfw, + imgui.gl3, + imgui.type, + net.spookygames.gdx.nativefilechooser, + love.distributedrebirth.bassboonyd, + love.distributedrebirth.bassboonyd.jmx, + love.distributedrebirth.numberxd, + love.distributedrebirth.numberxd.base2t, + love.distributedrebirth.numberxd.base2t.part, + love.distributedrebirth.numberxd.base2t.part.warp, + love.distributedrebirth.numberxd.base2t.type, + love.distributedrebirth.numberxd.base2t.typexl, + love.distributedrebirth.numberxd.glyph, + love.distributedrebirth.numberxd.x4o, + + love.distributedrebirth.gdxapp4d.vrgem4.service + love.distributedrebirth.gdxapp4d.vrgem4.* + + love.distributedrebirth.gdxapp4d.vrgem4.GDXAppVrGem4Activator + distributedrebirth.love + + + + + + \ No newline at end of file diff --git a/gdxapp4d-vrgem4/src/chain/warp-sea.xml b/gdxapp4d-vrgem4/src/chain/warp-sea.xml new file mode 100644 index 00000000..52e89601 --- /dev/null +++ b/gdxapp4d-vrgem4/src/chain/warp-sea.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/FontAwesomeIcons.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/FontAwesomeIcons.java similarity index 99% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/FontAwesomeIcons.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/FontAwesomeIcons.java index 2cef9495..739249e2 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/FontAwesomeIcons.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/FontAwesomeIcons.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp; +package love.distributedrebirth.gdxapp4d.vrgem4; @SuppressWarnings("unused") public class FontAwesomeIcons { diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/GDXAppLauncher.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppLauncher.java similarity index 77% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/GDXAppLauncher.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppLauncher.java index 05686f26..c63ad39a 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/GDXAppLauncher.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppLauncher.java @@ -1,8 +1,8 @@ -package love.distributedrebirth.gdxapp; +package love.distributedrebirth.gdxapp4d.vrgem4; import java.util.function.Supplier; -import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DefaultDeskApp; public final class GDXAppLauncher { diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4.java new file mode 100644 index 00000000..776622c9 --- /dev/null +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4.java @@ -0,0 +1,43 @@ +package love.distributedrebirth.gdxapp4d.vrgem4; + +import java.util.List; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; +import love.distributedrebirth.bassboonyd.BãßBȍőnClassInfoʸᴰ; +import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ; +import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinʸᴰ; +import love.distributedrebirth.bassboonyd.BãßBȍőnPackageInfoʸᴰ; +import love.distributedrebirth.bassboonyd.jmx.DefaultEnumInstanceᴶᴹˣ; +import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpTerminal; +import love.distributedrebirth.gdxapp4d.vrgem4.music.MusicManager; + + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +@BãßBȍőnClassInfoʸᴰ(name = "GDXAppMain", purpose = "Main loop render dispatcher and bootup.") +@BãßBȍőnPackageInfoʸᴰ(name = "love.distributedrebirth.gdxapp") +public enum GDXAppVrGem4 implements DefaultEnumInstanceᴶᴹˣ { + + INSTANCE; + + public SystemWarpTerminal terminal; + public MusicManager music; + //public FontAtlas basePlane; + private final BãßBȍőnCoffinOpenʸᴰ BBC = BãßBȍőnCoffinOpenʸᴰ.newInstance(); + public BãßBȍőnCoffinʸᴰ GET_BBC() { return BBC; } + + private GDXAppVrGem4() { + BBC.BOON_INIT(this); + BȍőnJmxInit(GDXAppVrGem4Keyʸᴰ.JMX); + } + + public void init(List args, SystemWarpTerminal terminal) { + boolean musicStop = args.contains("music-stop"); + if (musicStop) { + System.out.println("music-stop: requested"); + } + music = new MusicManager(); + music.init(musicStop); + + this.terminal = terminal; + } +} diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4Activator.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4Activator.java new file mode 100644 index 00000000..b245fc03 --- /dev/null +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4Activator.java @@ -0,0 +1,159 @@ +package love.distributedrebirth.gdxapp4d.vrgem4; + +import java.util.List; + +import org.osgi.framework.BundleActivator; +import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceReference; + +import com.badlogic.gdx.Gdx; + +import imgui.type.ImBoolean; +import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinOpenʸᴰ; +import love.distributedrebirth.bassboonyd.jmx.DefaultEnumBaseᴶᴹˣ; +import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpBootArgs; +import love.distributedrebirth.gdxapp4d.tos4.service.SystemWarpTerminal; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenCredits; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenDesktop1; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenDesktop2; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenDesktop3; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenDesktop4; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenHelp; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenIntro; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenIntroMission; +import love.distributedrebirth.numberxd.base2t.Base2PartsFactory; +import love.distributedrebirth.numberxd.base2t.Base2Terminator; +import love.distributedrebirth.numberxd.base2t.part.warp.TOSWarpCore; +import love.distributedrebirth.numberxd.glyph.BaseGlyphSet; +import love.distributedrebirth.warpme.core.WaterBucket; +import love.distributedrebirth.warpme.core.WaterBucketDriver; + +public class GDXAppVrGem4Activator implements BundleActivator { + +// private static final Logger LOG = LoggerFactory.getLogger(GDXAppVrGem4Activator.class); + + @Override + public void stop(final BundleContext context) { + } + + @Override + public void start(final BundleContext context) { +// LOG.info("GDXAppVrGem4Activator started"); + + ServiceReference termRef = context.getServiceReference(SystemWarpTerminal.class); + SystemWarpTerminal terminal = context.getService(termRef); + + GDXAppVrGem4BootScreen bootScreen = new GDXAppVrGem4BootScreen(); + Gdx.app.postRunnable(new Runnable() { + @Override + public void run() { + bootScreen.create(); + terminal.registrateScreen(bootScreen); + terminal.selectScreen(GDXAppVrGem4BootScreen.class); + } + }); + try { + Thread.sleep(100); + } catch (InterruptedException ignored) { + } + bootScreen.bootLine("vrGEM4 Booting..."); + + // ref to init +// LOG.debug("BãßBȍőnCoffinʸᴰ init......"); + for (DefaultEnumBaseᴶᴹˣ coffin:coffinInstances()) { + BãßBȍőnCoffinOpenʸᴰ.lockCoffin(coffin); + } + bootScreen.bootLine("BãßBȍőnCoffinʸᴰ init done."); + + bootScreen.bootLine("ImGui Setup"); + ImBoolean imLoaded = new ImBoolean(false); + Gdx.app.postRunnable(new Runnable() { + @Override + public void run() { + ImGuiSetup.init(); + imLoaded.set(true); + } + }); + while (!imLoaded.get()) { + try { + Thread.sleep(100); + } catch (InterruptedException ignored) { + } + } + bootScreen.bootLine("ImGui Loaded"); + + + ServiceReference bootArgsRef = context.getServiceReference(SystemWarpBootArgs.class); + SystemWarpBootArgs bootArgs = context.getService(bootArgsRef); + List args = bootArgs.getBootArgs(); + + try { + if (args.contains("warpcore-load")) { + bootScreen.bootLine("warpcore-load: requested"); + WaterBucket bucket = WaterBucketDriver.newInstance().createReader().readFile("./warpcore.xml"); + TOSWarpCore.INSTANCE.BãßArmWarpCore(bucket); + } + if (args.contains("warpcore-save")) { + bootScreen.bootLine("warpcore-save: requested"); + WaterBucket bucket = TOSWarpCore.INSTANCE.BãßCurrentWarpCore(); + WaterBucketDriver.newInstance().createWriter().writeFile(bucket, "./warpcore.xml"); + } + } catch (Exception e) { + throw new RuntimeException(e); + } + if (!args.contains("warpcore-nolock")) { + bootScreen.bootLine("warpcore-lock: BãßLockWarpCipher"); + TOSWarpCore.INSTANCE.BãßLockWarpCipher(); + } else { + bootScreen.bootLine("warpcore-nolock: requested"); + } + + if (args.contains("full-screen")) { + System.out.println("full-screen: requested"); + Gdx.app.postRunnable(new Runnable() { + @Override + public void run() { + Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode()); + } + }); + } + + GDXAppVrGem4.INSTANCE.init(args, terminal); + + Gdx.app.postRunnable(new Runnable() { + @Override + public void run() { + terminal.registrateScreen(new ScreenIntro()); + terminal.registrateScreen(new ScreenIntroMission()); + terminal.registrateScreen(new ScreenDesktop1()); + terminal.registrateScreen(new ScreenDesktop2()); + terminal.registrateScreen(new ScreenDesktop3()); + terminal.registrateScreen(new ScreenDesktop4()); + terminal.registrateScreen(new ScreenCredits()); + terminal.registrateScreen(new ScreenHelp()); + + if (args.contains("intro-skip")) { + System.out.println("intro-skip: requested"); + terminal.selectScreen(ScreenDesktop1.class); +// music.play(MusicSongType.BACKGROUND); + } else { + terminal.selectScreen(ScreenIntro.class); + } + } + }); + } + + + + //TODO: add layer or ?? private ,DefaultAuthorInfoʸᴰ> T[] storeInstances() { + @SuppressWarnings("unchecked") + private > T[] coffinInstances() { + return (T[]) new DefaultEnumBaseᴶᴹˣ[] { + GDXAppVrGem4.INSTANCE, + BaseGlyphSet.values()[0], + Base2Terminator.INSTANCE, + Base2PartsFactory.INSTANCE, + TOSWarpCore.INSTANCE + }; + } +} diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4BootListener.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4BootListener.java new file mode 100644 index 00000000..1aad4659 --- /dev/null +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4BootListener.java @@ -0,0 +1,6 @@ +package love.distributedrebirth.gdxapp4d.vrgem4; + +public interface GDXAppVrGem4BootListener { + + void bootLine(String message); +} diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4BootScreen.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4BootScreen.java new file mode 100644 index 00000000..325a3b5c --- /dev/null +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4BootScreen.java @@ -0,0 +1,56 @@ +package love.distributedrebirth.gdxapp4d.vrgem4; + +import java.util.ArrayList; +import java.util.List; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.ScreenAdapter; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; + +public class GDXAppVrGem4BootScreen extends ScreenAdapter implements GDXAppVrGem4BootListener { + + private BitmapFont font; + private SpriteBatch batch; + private Texture backgroundImage; + private List messages = new ArrayList<>(); + + public GDXAppVrGem4BootScreen() { + } + + public void create() { + batch = new SpriteBatch(); + backgroundImage = new Texture(Gdx.files.internal("background/temple-os.png")); + font = new BitmapFont(); + } + + @Override + public void render(float delta) { + int textX = 40; + int textY = Gdx.graphics.getHeight(); + int textYStep = 20; + batch.begin(); + synchronized (messages) { + for (String message:messages) { + font.draw(batch, message, textX, textY-=textYStep); + } + batch.draw(backgroundImage, textY, textY, textY, textY); + } + batch.end(); + } + + @Override + public void dispose() { + batch.dispose(); + backgroundImage.dispose(); + font.dispose(); + } + + @Override + public void bootLine(String message) { + synchronized (messages) { + messages.add(message); + } + } +} diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4Keyʸᴰ.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4Keyʸᴰ.java new file mode 100644 index 00000000..50be6318 --- /dev/null +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/GDXAppVrGem4Keyʸᴰ.java @@ -0,0 +1,12 @@ +package love.distributedrebirth.gdxapp4d.vrgem4; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; +import love.distributedrebirth.bassboonyd.BãßBȍőnCoffinStoreKeyʸᴰ; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public enum GDXAppVrGem4Keyʸᴰ implements BãßBȍőnCoffinStoreKeyʸᴰ { + + JMX, + + ; +} diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/ImGuiSetup.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/ImGuiSetup.java similarity index 98% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/ImGuiSetup.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/ImGuiSetup.java index 742a48ae..92ea6074 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/ImGuiSetup.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/ImGuiSetup.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp; +package love.distributedrebirth.gdxapp4d.vrgem4; import com.badlogic.gdx.Gdx; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DefaultDeskApp.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DefaultDeskApp.java similarity index 92% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DefaultDeskApp.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DefaultDeskApp.java index 98c4f197..daa610d4 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DefaultDeskApp.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DefaultDeskApp.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskApp.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskApp.java similarity index 82% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskApp.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskApp.java index 5c37f9a6..7c284e36 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskApp.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskApp.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppContour.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppContour.java similarity index 91% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppContour.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppContour.java index dec6b397..4bd81512 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppContour.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppContour.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop; import java.util.HashMap; import java.util.Map; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppContourSection.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppContourSection.java similarity index 87% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppContourSection.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppContourSection.java index 4f9e1f5b..78822a31 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppContourSection.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppContourSection.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppRenderer.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppRenderer.java similarity index 78% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppRenderer.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppRenderer.java index 9a72c2e8..87721ae6 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppRenderer.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppRenderer.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppScreen.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppScreen.java similarity index 96% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppScreen.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppScreen.java index f338ee35..1845746b 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppScreen.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppScreen.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop; import java.util.ArrayList; import java.util.List; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppScreenListener.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppScreenListener.java similarity index 80% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppScreenListener.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppScreenListener.java index f8d6ca01..6ad7817e 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskAppScreenListener.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskAppScreenListener.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskTopInputProcessor.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskTopInputProcessor.java similarity index 97% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskTopInputProcessor.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskTopInputProcessor.java index df485f78..3c2512ed 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskTopInputProcessor.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskTopInputProcessor.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop; import com.badlogic.gdx.InputProcessor; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskTopScreen.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskTopScreen.java similarity index 82% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskTopScreen.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskTopScreen.java index 9b762ce9..3a7d1085 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskTopScreen.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskTopScreen.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop; import com.badlogic.gdx.Screen; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskTopScreenMenu.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskTopScreenMenu.java similarity index 77% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskTopScreenMenu.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskTopScreenMenu.java index 70f5b4b4..a354c978 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/DeskTopScreenMenu.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/DeskTopScreenMenu.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop; import java.util.ArrayList; import java.util.List; @@ -8,41 +8,32 @@ import com.badlogic.gdx.Gdx; import imgui.ImGui; import imgui.type.ImBoolean; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.FontAwesomeIcons; -import love.distributedrebirth.gdxapp.GDXAppLauncher; -import love.distributedrebirth.gdxapp.GDXAppMain; -import love.distributedrebirth.gdxapp.desktop.apps.BasicConsoleApp; -import love.distributedrebirth.gdxapp.desktop.apps.HebrewWalletApp; -import love.distributedrebirth.gdxapp.desktop.apps.MusicPlayerApp; -import love.distributedrebirth.gdxapp.desktop.apps.SystemBaseGlyphApp; -import love.distributedrebirth.gdxapp.desktop.apps.SystemBasePartApp; -import love.distributedrebirth.gdxapp.desktop.apps.SystemBaseUnicodePlaneApp; -import love.distributedrebirth.gdxapp.desktop.apps.Unicode4DApp; -import love.distributedrebirth.gdxapp.screen.ScreenCredits; -import love.distributedrebirth.gdxapp.screen.ScreenDesktop1; -import love.distributedrebirth.gdxapp.screen.ScreenDesktop2; -import love.distributedrebirth.gdxapp.screen.ScreenDesktop3; -import love.distributedrebirth.gdxapp.screen.ScreenDesktop4; -import love.distributedrebirth.gdxapp.screen.ScreenHelp; +import love.distributedrebirth.gdxapp4d.tos4.GDXAppTos4; +import love.distributedrebirth.gdxapp4d.vrgem4.FontAwesomeIcons; +import love.distributedrebirth.gdxapp4d.vrgem4.GDXAppLauncher; +import love.distributedrebirth.gdxapp4d.vrgem4.GDXAppVrGem4; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps.BasicConsoleApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps.HebrewWalletApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps.MusicPlayerApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps.SystemBaseGlyphApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps.SystemBasePartApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps.SystemBaseUnicodePlaneApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps.Unicode4DApp; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenCredits; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenDesktop1; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenDesktop2; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenDesktop3; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenDesktop4; +import love.distributedrebirth.gdxapp4d.vrgem4.screen.ScreenHelp; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") public class DeskTopScreenMenu { - private final DeskTopScreen desktop1; - private final DeskTopScreen desktop2; - private final DeskTopScreen desktop3; - private final DeskTopScreen desktop4; private List apps; private ImBoolean fileMinimizeSelected = new ImBoolean(false); private ImBoolean fileCloseSelected = new ImBoolean(false); - public DeskTopScreenMenu(DeskTopScreen desktop1, DeskTopScreen desktop2, - DeskTopScreen desktop3, DeskTopScreen desktop4) { - this.desktop1 = desktop1; - this.desktop2 = desktop2; - this.desktop3 = desktop3; - this.desktop4 = desktop4; - + public DeskTopScreenMenu() { apps = new ArrayList<>(); apps.add(new GDXAppLauncher("Basic Console", () -> new BasicConsoleApp())); apps.add(new GDXAppLauncher("Sys Glyph Set", () -> new SystemBaseGlyphApp())); @@ -204,16 +195,16 @@ public class DeskTopScreenMenu { infix4 = FontAwesomeIcons.Eye + " "; } if (ImGui.menuItem(infix1+"Desktop1")) { - GDXAppMain.INSTANCE.selectScreen(ScreenDesktop1.class); + GDXAppVrGem4.INSTANCE.terminal.selectScreen(ScreenDesktop1.class); } if (ImGui.menuItem(infix2+"Desktop2")) { - GDXAppMain.INSTANCE.selectScreen(ScreenDesktop2.class); + GDXAppVrGem4.INSTANCE.terminal.selectScreen(ScreenDesktop2.class); } if (ImGui.menuItem(infix3+"Desktop3")) { - GDXAppMain.INSTANCE.selectScreen(ScreenDesktop3.class); + GDXAppVrGem4.INSTANCE.terminal.selectScreen(ScreenDesktop3.class); } if (ImGui.menuItem(infix4+"Desktop4")) { - GDXAppMain.INSTANCE.selectScreen(ScreenDesktop4.class); + GDXAppVrGem4.INSTANCE.terminal.selectScreen(ScreenDesktop4.class); } ImGui.separator(); if (ImGui.beginMenu(FontAwesomeIcons.PlusSquare + " Start App")) { @@ -229,27 +220,27 @@ public class DeskTopScreenMenu { ImGui.separator(); if (Gdx.graphics.isFullscreen()) { if (ImGui.menuItem(FontAwesomeIcons.Wheelchair + " Window Mode")) { - Gdx.graphics.setWindowedMode(GDXAppMain.INSTANCE.viewWidth, GDXAppMain.INSTANCE.viewHeight); +// Gdx.graphics.setWindowedMode(GDXAppVrGem4.INSTANCE.viewWidth, GDXAppVrGem4.INSTANCE.viewHeight); } } else { if (ImGui.menuItem(FontAwesomeIcons.FighterJet + " Full Screen")) { - Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode()); +// Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode()); } } ImGui.separator(); if (ImGui.menuItem(FontAwesomeIcons.CreditCard + " Credits")) { - GDXAppMain.INSTANCE.selectScreen(ScreenCredits.class); + GDXAppVrGem4.INSTANCE.terminal.selectScreen(ScreenCredits.class); } if (ImGui.menuItem(FontAwesomeIcons.HandsHelping + " Help")) { - GDXAppMain.INSTANCE.selectScreen(ScreenHelp.class); + GDXAppVrGem4.INSTANCE.terminal.selectScreen(ScreenHelp.class); } ImGui.separator(); if (ImGui.menuItem(FontAwesomeIcons.Trademark + " ImGui Demo")) { - GDXAppMain.INSTANCE.showImGuiDemo.set(true); +// GDXAppVrGem4.INSTANCE.showImGuiDemo.set(true); } if (ImGui.menuItem(FontAwesomeIcons.PowerOff + " Shutdown")) { - GDXAppMain.INSTANCE.dispose(); +// GDXAppVrGem4.INSTANCE.dispose(); System.exit(0); } ImGui.endMenu(); diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/BasicConsoleApp.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/BasicConsoleApp.java similarity index 76% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/BasicConsoleApp.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/BasicConsoleApp.java index 43e6ba32..006a357f 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/BasicConsoleApp.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/BasicConsoleApp.java @@ -1,10 +1,10 @@ -package love.distributedrebirth.gdxapp.desktop.apps; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps; import imgui.ImGui; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp; -import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection; -import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DefaultDeskApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppContourSection; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppRenderer; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") public class BasicConsoleApp extends DefaultDeskApp { diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/HebrewWalletApp.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/HebrewWalletApp.java similarity index 85% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/HebrewWalletApp.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/HebrewWalletApp.java index 3a45410d..2468448f 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/HebrewWalletApp.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/HebrewWalletApp.java @@ -1,11 +1,11 @@ -package love.distributedrebirth.gdxapp.desktop.apps; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps; import imgui.ImGui; import imgui.flag.ImGuiTableFlags; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp; -import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection; -import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DefaultDeskApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppContourSection; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppRenderer; import love.distributedrebirth.numberxd.Gê̄ldGetậl; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/MusicPlayerApp.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/MusicPlayerApp.java similarity index 73% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/MusicPlayerApp.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/MusicPlayerApp.java index c3d85d79..c3905f97 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/MusicPlayerApp.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/MusicPlayerApp.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop.apps; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps; import java.util.function.Consumer; @@ -10,12 +10,13 @@ import imgui.flag.ImGuiSelectableFlags; import imgui.flag.ImGuiTableColumnFlags; import imgui.flag.ImGuiTableFlags; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.FontAwesomeIcons; -import love.distributedrebirth.gdxapp.GDXAppMain; -import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp; -import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection; -import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer; -import love.distributedrebirth.gdxapp.music.MusicSong; +import love.distributedrebirth.gdxapp4d.tos4.GDXAppTos4; +import love.distributedrebirth.gdxapp4d.vrgem4.FontAwesomeIcons; +import love.distributedrebirth.gdxapp4d.vrgem4.GDXAppVrGem4; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DefaultDeskApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppContourSection; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppRenderer; +import love.distributedrebirth.gdxapp4d.vrgem4.music.MusicSong; import net.spookygames.gdx.nativefilechooser.NativeFileChooserCallback; import net.spookygames.gdx.nativefilechooser.NativeFileChooserConfiguration; @@ -35,8 +36,8 @@ public class MusicPlayerApp extends DefaultDeskApp implements DeskAppRenderer { @Override public void render() { if (ImGui.menuItem(FontAwesomeIcons.Plus + " Add")) { - GDXAppMain.INSTANCE.fileChooser.chooseFile(fileChooserConfig, - NativeFileChooserCallbackAdapter.onFileChosen(v -> GDXAppMain.INSTANCE.music.addBackgroundMusic(v))); +// GDXAppVrGem4.INSTANCE.terminal.getFileChooser().chooseFile(fileChooserConfig, +// NativeFileChooserCallbackAdapter.onFileChosen(v -> GDXAppVrGem4.INSTANCE.music.addBackgroundMusic(v))); } } @@ -50,7 +51,7 @@ public class MusicPlayerApp extends DefaultDeskApp implements DeskAppRenderer { @Override public void render() { ImGui.text("Current Song:"); - MusicSong currentSong = GDXAppMain.INSTANCE.music.getCurrentSong(); + MusicSong currentSong = GDXAppVrGem4.INSTANCE.music.getCurrentSong(); if (currentSong != null) { ImGui.sameLine(); ImGui.text(currentSong.getName()); @@ -58,22 +59,22 @@ public class MusicPlayerApp extends DefaultDeskApp implements DeskAppRenderer { ImGui.separator(); if (currentSong != null) { if (ImGui.button("Play")) { - GDXAppMain.INSTANCE.music.play(currentSong); + GDXAppVrGem4.INSTANCE.music.play(currentSong); } } else { ImGui.text("Play"); } ImGui.sameLine(); if (ImGui.button("<")) { - GDXAppMain.INSTANCE.music.prev(); + GDXAppVrGem4.INSTANCE.music.prev(); } ImGui.sameLine(); if (ImGui.button(">")) { - GDXAppMain.INSTANCE.music.next(); + GDXAppVrGem4.INSTANCE.music.next(); } ImGui.sameLine(); if (ImGui.button("Stop")) { - GDXAppMain.INSTANCE.music.stop(); + GDXAppVrGem4.INSTANCE.music.stop(); } int flags = ImGuiTableFlags.ScrollX | ImGuiTableFlags.RowBg | ImGuiTableFlags.BordersOuter | ImGuiTableFlags.BordersV; ImGui.beginTable("playlist", 3, flags); @@ -82,14 +83,14 @@ public class MusicPlayerApp extends DefaultDeskApp implements DeskAppRenderer { ImGui.tableSetupColumn("Name"); ImGui.tableHeadersRow(); int i=1; - for (MusicSong song:GDXAppMain.INSTANCE.music.getBackgroundSongs()) { + for (MusicSong song:GDXAppVrGem4.INSTANCE.music.getBackgroundSongs()) { ImGui.pushID(i); ImGui.tableNextRow(); ImGui.tableNextColumn(); ImGui.selectable(""+i, song.isPlaying(), ImGuiSelectableFlags.None); ImGui.tableNextColumn(); if (ImGui.smallButton(">")) { - GDXAppMain.INSTANCE.music.play(song); + GDXAppVrGem4.INSTANCE.music.play(song); } ImGui.tableNextColumn(); ImGui.selectable(song.getName(), song.isPlaying(), ImGuiSelectableFlags.None); diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/SystemBaseGlyphApp.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/SystemBaseGlyphApp.java similarity index 90% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/SystemBaseGlyphApp.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/SystemBaseGlyphApp.java index 0c889514..95f8bc4d 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/SystemBaseGlyphApp.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/SystemBaseGlyphApp.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop.apps; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps; import java.util.Locale; import java.util.ResourceBundle; @@ -7,9 +7,9 @@ import imgui.ImGui; import imgui.flag.ImGuiTableFlags; import imgui.type.ImBoolean; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp; -import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection; -import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DefaultDeskApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppContourSection; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppRenderer; import love.distributedrebirth.numberxd.glyph.BaseGlyphSet; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/SystemBasePartApp.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/SystemBasePartApp.java similarity index 95% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/SystemBasePartApp.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/SystemBasePartApp.java index 365b044d..d1a39a7e 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/SystemBasePartApp.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/SystemBasePartApp.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop.apps; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps; import java.util.ArrayList; import java.util.List; @@ -10,9 +10,9 @@ import imgui.flag.ImGuiTableFlags; import imgui.type.ImBoolean; import imgui.type.ImInt; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp; -import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection; -import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DefaultDeskApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppContourSection; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppRenderer; import love.distributedrebirth.numberxd.base2t.Base2PartsFactory; import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt1ʸᴰ; import love.distributedrebirth.numberxd.base2t.part.BãßBȍőnPartAlt2ʸᴰ; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/SystemBaseUnicodePlaneApp.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/SystemBaseUnicodePlaneApp.java similarity index 84% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/SystemBaseUnicodePlaneApp.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/SystemBaseUnicodePlaneApp.java index 12689a56..af1358a9 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/SystemBaseUnicodePlaneApp.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/SystemBaseUnicodePlaneApp.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop.apps; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps; import java.util.Locale; import java.util.ResourceBundle; @@ -6,9 +6,9 @@ import java.util.ResourceBundle; import imgui.ImGui; import imgui.flag.ImGuiTableFlags; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp; -import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection; -import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DefaultDeskApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppContourSection; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppRenderer; import love.distributedrebirth.unicode4d.UnicodePlaneᶻᴰ; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/Unicode4DApp.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/Unicode4DApp.java similarity index 87% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/Unicode4DApp.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/Unicode4DApp.java index 6a1b5bb6..0c8330b5 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/desktop/apps/Unicode4DApp.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/desktop/apps/Unicode4DApp.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.desktop.apps; +package love.distributedrebirth.gdxapp4d.vrgem4.desktop.apps; import java.util.List; @@ -7,10 +7,10 @@ import imgui.ImDrawList; import imgui.ImGui; import imgui.ImVec2; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.GDXAppMain; -import love.distributedrebirth.gdxapp.desktop.DefaultDeskApp; -import love.distributedrebirth.gdxapp.desktop.DeskAppContourSection; -import love.distributedrebirth.gdxapp.desktop.DeskAppRenderer; +import love.distributedrebirth.gdxapp4d.vrgem4.GDXAppVrGem4; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DefaultDeskApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppContourSection; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppRenderer; import love.distributedrebirth.numberxd.base2t.type.V072Tong; import love.distributedrebirth.unicode4d.atlas.FontAtlasStore; import love.distributedrebirth.unicode4d.atlas.FontAtlasStoreGlyph; diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/M3UParser.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/M3UParser.java new file mode 100644 index 00000000..b10d962f --- /dev/null +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/M3UParser.java @@ -0,0 +1,38 @@ +package love.distributedrebirth.gdxapp4d.vrgem4.music; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +public class M3UParser { + + private static final String M3U_HEADER = "#EXTM3U"; + + public class M3UPlaylist { + + private List tracks = new ArrayList<>(); + } + + public class M3UTrack { + + } + + public M3UPlaylist parse(InputStream stream) throws IOException { + M3UPlaylist result = new M3UPlaylist(); + + BufferedReader buffer = new BufferedReader(new InputStreamReader(stream)); + String line = buffer.readLine(); + if (!line.startsWith(M3U_HEADER)) { + throw new IOException("Missing header"); + } + + while ((line = buffer.readLine()) != null) { + + } + + return result; + } +} diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/music/MusicManager.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicManager.java similarity index 83% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/music/MusicManager.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicManager.java index bc744042..c5b8b496 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/music/MusicManager.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicManager.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.music; +package love.distributedrebirth.gdxapp4d.vrgem4.music; import java.util.ArrayList; import java.util.List; @@ -16,8 +16,8 @@ import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") public class MusicManager { - private final MusicSong introSong; - private final MusicSong creditsSong; +// private final MusicSong introSong; +// private final MusicSong creditsSong; private final List backgroundSongs; private final NextSongListener nextSongListener; private MusicSong currentSong = null; @@ -25,8 +25,8 @@ public class MusicManager { public MusicManager() { backgroundSongs = new ArrayList<>(); - introSong = new MusicSong(Gdx.audio.newMusic(Gdx.files.internal("music/panoramacircle-waterfowl.mp3")),"panoramacircle-waterfowl"); - creditsSong = new MusicSong(Gdx.audio.newMusic(Gdx.files.internal("music/idtech-doom-sigil.mp3")), "idtech-doom-sigil"); + // introSong = new MusicSong(Gdx.audio.newMusic(Gdx.files.internal("music/panoramacircle-waterfowl.mp3")),"panoramacircle-waterfowl"); + // creditsSong = new MusicSong(Gdx.audio.newMusic(Gdx.files.internal("music/idtech-doom-sigil.mp3")), "idtech-doom-sigil"); nextSongListener = new NextSongListener(); } @@ -38,17 +38,19 @@ public class MusicManager { public void init(boolean noMusic) { this.noMusic = noMusic; + /* addBackgroundMusic(Gdx.files.internal("music/sanctumwave-risen.mp3")); addBackgroundMusic(Gdx.files.internal("music/sanctumwave-devine-intellect.mp3")); addBackgroundMusic(Gdx.files.internal("music/theselfhelpgroup-temple-os.mp3")); addBackgroundMusic(Gdx.files.internal("music/sanctumwave-nightwalk.mp3")); addBackgroundMusic(Gdx.files.internal("music/beeble-i-used-temple-os-to-write.mp3")); addBackgroundMusic(Gdx.files.internal("music/ryanfarran-risen-temple-os.mp3")); + */ } public void dispose() { - introSong.music.dispose(); - creditsSong.music.dispose(); + // introSong.music.dispose(); + // creditsSong.music.dispose(); for (MusicSong song:backgroundSongs) { song.music.dispose(); } @@ -71,19 +73,19 @@ public class MusicManager { public void play(MusicSongType type) { MusicSong nextSong = null; if (MusicSongType.INTRO.equals(type)) { - nextSong = introSong; - play(nextSong); +// nextSong = introSong; +// play(nextSong); } else if (MusicSongType.CREDITS.equals(type)) { - nextSong = creditsSong; - play(nextSong); +// nextSong = creditsSong; +// play(nextSong); } else { int currentBackground = backgroundSongs.indexOf(currentSong); - if (currentBackground == -1) { + if (currentBackground == -1 && !backgroundSongs.isEmpty()) { nextSong = backgroundSongs.get(0); } else { nextSong = currentSong; } - if (!noMusic) { + if (!noMusic && nextSong!=null) { play(nextSong); } } diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/music/MusicSong.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicSong.java similarity index 90% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/music/MusicSong.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicSong.java index ffb7d0d1..7e7b6eab 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/music/MusicSong.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicSong.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.music; +package love.distributedrebirth.gdxapp4d.vrgem4.music; import com.badlogic.gdx.audio.Music; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/music/MusicSongType.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicSongType.java similarity index 81% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/music/MusicSongType.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicSongType.java index 5b70d32a..28ed2aad 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/music/MusicSongType.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/music/MusicSongType.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.music; +package love.distributedrebirth.gdxapp4d.vrgem4.music; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/AbstractScreenDesktop.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/AbstractScreenDesktop.java new file mode 100644 index 00000000..f5860469 --- /dev/null +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/AbstractScreenDesktop.java @@ -0,0 +1,168 @@ +package love.distributedrebirth.gdxapp4d.vrgem4.screen; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.ScreenAdapter; +import com.badlogic.gdx.graphics.OrthographicCamera; +import com.badlogic.gdx.graphics.PerspectiveCamera; +import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.graphics.g3d.ModelBatch; +import com.badlogic.gdx.graphics.g3d.ModelInstance; +import com.badlogic.gdx.graphics.g3d.utils.FirstPersonCameraController; +import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder; +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.ScreenUtils; + +import imgui.ImGui; +import imgui.flag.ImGuiCond; +import imgui.flag.ImGuiWindowFlags; +import imgui.type.ImBoolean; +import love.distributedrebirth.gdxapp4d.vrgem4.ImGuiSetup; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskApp; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppContourSection; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppRenderer; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppScreen; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppScreenListener; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskTopInputProcessor; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskTopScreen; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskTopScreenMenu; + +public abstract class AbstractScreenDesktop extends ScreenAdapter implements DeskTopScreen { + + protected SpriteBatch batch; + protected BitmapFont font; + protected OrthographicCamera camera; + protected ImBoolean showImGuiDemo = new ImBoolean(false); + private DeskTopScreenMenu screenMenu; + private final DeskAppScreen deskAppScreen; + private PerspectiveCamera cam; + private FirstPersonCameraController camController; + private DeskTopInputProcessor inputFilter; + private ModelBatch modelBatch; + private Array modelInstances = new Array(); + + public AbstractScreenDesktop(String name) { + this.create(); + deskAppScreen = new DeskAppScreen(name); + deskAppScreen.addDeskAppListener(new DeskAppScreenListener() { + + @Override + public void selectDeskApp(DeskApp deskApp) { + if (deskApp == null) { + inputFilter.setFiltering(false); + } else { + inputFilter.setFiltering(true); + } + } + }); + } + + protected void createModel(ModelBuilder modelBuilder, Array modelInstances) { + + } + + private void create() { + batch = new SpriteBatch(); + font = new BitmapFont(); + camera = new OrthographicCamera(); + + camera.setToOrtho(false, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); + camera.update(); + batch.setProjectionMatrix(camera.combined); + + screenMenu = new DeskTopScreenMenu(); + + modelBatch = new ModelBatch(); + + cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); + cam.position.set(10f, 10f, 10f); + cam.lookAt(0, 0, 0); + cam.near = 1f; + cam.far = 300f; + cam.update(); + + ModelBuilder modelBuilder = new ModelBuilder(); + createModel(modelBuilder, modelInstances); + + camController = new FirstPersonCameraController(cam); + //camController = new CameraInputController(cam); + + inputFilter = new DeskTopInputProcessor(camController); + } + + @Override + public final void show() { + Gdx.input.setInputProcessor(inputFilter); + showDesktop(); + } + + protected void showDesktop() { + } + + @Override + public final void hide() { + Gdx.input.setInputProcessor(null); + hideDesktop(); + } + + protected void hideDesktop() { + } + + @Override + public final void dispose() { + batch.dispose(); + font.dispose(); + modelBatch.dispose(); + disposeDesktop(); + } + + protected void disposeDesktop() { + } + + @Override + public final void render(float delta) { + ScreenUtils.clear(0f, 0f, 0f, 1f, true); + ImGuiSetup.imGuiImp.newFrame(); + ImGui.newFrame(); + + DeskTopScreen appScreen = this; + screenMenu.renderMenu(appScreen); + if (showImGuiDemo.get()) { + ImGui.showDemoWindow(showImGuiDemo); + } + if (appScreen != null && appScreen.getDeskAppScreen().getCurrentDeskApp() != null) { + int sizeFlags = ImGuiCond.Always; + ImGui.setNextWindowPos(0, 28, sizeFlags); + ImGui.setNextWindowSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() - 28, sizeFlags); + int windowFlags = ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoTitleBar; + if (ImGui.begin(appScreen.getDeskAppScreen().getCurrentDeskApp().getTitle(), windowFlags)) { + DeskAppRenderer renderer = appScreen.getDeskAppScreen().getCurrentDeskApp().getContours().getContour(DeskAppContourSection.MAIN); + if (renderer != null) { + renderer.render(); + } + } + ImGui.end(); + } + + camController.update(); + renderDesktop(delta, modelBatch, cam, modelInstances); + + ImGui.render(); + ImGuiSetup.imGuiGlImp.renderDrawData(ImGui.getDrawData()); + //Gdx.gl.glViewport(0, 0, Gdx.graphics.getBackBufferWidth(), Gdx.graphics.getBackBufferHeight()); + //Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); + } + + protected void renderDesktop(float delta, ModelBatch modelBatch, PerspectiveCamera cam, Array modelInstances) { + modelBatch.begin(cam); + for (ModelInstance instance : modelInstances) { + modelBatch.render(instance); + } + modelBatch.end(); + } + + @Override + public DeskAppScreen getDeskAppScreen() { + return deskAppScreen; + } +} diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/AbstractScrollScreen.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/AbstractScrollScreen.java similarity index 69% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/AbstractScrollScreen.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/AbstractScrollScreen.java index 325e2106..6006cef9 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/AbstractScrollScreen.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/AbstractScrollScreen.java @@ -1,14 +1,17 @@ -package love.distributedrebirth.gdxapp.screen; +package love.distributedrebirth.gdxapp4d.vrgem4.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Screen; import com.badlogic.gdx.ScreenAdapter; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.utils.ScreenUtils; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.GDXAppMain; +import love.distributedrebirth.gdxapp4d.tos4.GDXAppTos4; +import love.distributedrebirth.gdxapp4d.vrgem4.GDXAppVrGem4; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") abstract public class AbstractScrollScreen extends ScreenAdapter { @@ -18,20 +21,24 @@ abstract public class AbstractScrollScreen extends ScreenAdapter { private int scrollIndex = 0; private int scrollLine = LINE_HEIGHT; private final Texture backgroundImage; + protected SpriteBatch batch; + protected BitmapFont font; public AbstractScrollScreen(String background) { + batch = new SpriteBatch(); + font = new BitmapFont(); backgroundImage = new Texture(Gdx.files.internal(background)); } abstract protected String getScrollText(); - abstract protected Class getNextScreen(GDXAppMain main); + abstract protected Class getNextScreen(GDXAppVrGem4 main); @Override public final void render(float delta) { ScreenUtils.clear(0f, 0f, 0f, 1f); - GDXAppMain.INSTANCE.batch.begin(); - GDXAppMain.INSTANCE.batch.draw(backgroundImage, 0, 0, GDXAppMain.INSTANCE.viewWidth, GDXAppMain.INSTANCE.viewHeight); + batch.begin(); + batch.draw(backgroundImage, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); scrollDeltaTime += delta; if (scrollDeltaTime > 0.04f) { @@ -50,14 +57,14 @@ abstract public class AbstractScrollScreen extends ScreenAdapter { String[] lines = scrollText.split("\n"); for (int i=lines.length;i>0;i--) { String line = lines[i-1]; - GDXAppMain.INSTANCE.font.draw(GDXAppMain.INSTANCE.batch, line, 100, scrollLine + (drawLine*LINE_HEIGHT)); + font.draw(batch, line, 100, scrollLine + (drawLine*LINE_HEIGHT)); drawLine++; } - GDXAppMain.INSTANCE.batch.end(); + batch.end(); if (scrollText.length() >= 33) { - if (scrollLine >=GDXAppMain.INSTANCE.viewHeight || Gdx.input.isTouched() || Gdx.input.isKeyPressed(Keys.ENTER) || Gdx.input.isKeyPressed(Keys.SPACE)) { - GDXAppMain.INSTANCE.selectScreen(getNextScreen(GDXAppMain.INSTANCE)); + if (scrollLine >=Gdx.graphics.getHeight() || Gdx.input.isTouched() || Gdx.input.isKeyPressed(Keys.ENTER) || Gdx.input.isKeyPressed(Keys.SPACE)) { + GDXAppVrGem4.INSTANCE.terminal.selectScreen(getNextScreen(GDXAppVrGem4.INSTANCE)); } } } @@ -83,6 +90,8 @@ abstract public class AbstractScrollScreen extends ScreenAdapter { @Override public final void dispose() { + batch.dispose(); + font.dispose(); backgroundImage.dispose(); disposeScroll(); } diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenCredits.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenCredits.java similarity index 84% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenCredits.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenCredits.java index ccaff4c3..bde0def1 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenCredits.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenCredits.java @@ -1,10 +1,10 @@ -package love.distributedrebirth.gdxapp.screen; +package love.distributedrebirth.gdxapp4d.vrgem4.screen; import com.badlogic.gdx.Screen; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.GDXAppMain; -import love.distributedrebirth.gdxapp.music.MusicSongType; +import love.distributedrebirth.gdxapp4d.vrgem4.GDXAppVrGem4; +import love.distributedrebirth.gdxapp4d.vrgem4.music.MusicSongType; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") public class ScreenCredits extends AbstractScrollScreen { @@ -73,17 +73,17 @@ public class ScreenCredits extends AbstractScrollScreen { } @Override - protected Class getNextScreen(GDXAppMain main) { + protected Class getNextScreen(GDXAppVrGem4 main) { return ScreenDesktop1.class; } @Override public void showScroll() { - GDXAppMain.INSTANCE.music.play(MusicSongType.CREDITS); + GDXAppVrGem4.INSTANCE.music.play(MusicSongType.CREDITS); } @Override public void hideScroll() { - GDXAppMain.INSTANCE.music.play(MusicSongType.BACKGROUND); + GDXAppVrGem4.INSTANCE.music.play(MusicSongType.BACKGROUND); } } diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop1.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop1.java new file mode 100644 index 00000000..f175af6d --- /dev/null +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop1.java @@ -0,0 +1,37 @@ +package love.distributedrebirth.gdxapp4d.vrgem4.screen; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.ScreenAdapter; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.VertexAttributes.Usage; +import com.badlogic.gdx.graphics.g3d.Material; +import com.badlogic.gdx.graphics.g3d.Model; +import com.badlogic.gdx.graphics.g3d.ModelInstance; +import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute; +import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder; +import com.badlogic.gdx.utils.Array; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; +import love.distributedrebirth.gdxapp4d.vrgem4.GDXAppVrGem4; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppScreen; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskTopScreen; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public class ScreenDesktop1 extends AbstractScreenDesktop { + private Model grid; + + public ScreenDesktop1() { + super("Desktop1"); + //backgroundImage = new Texture(Gdx.files.internal("background/terrydavis-front.png")); + } + + protected void createModel(ModelBuilder modelBuilder, Array modelInstances) { + grid = modelBuilder.createLineGrid(33, 33, 1f, 1f, new Material(ColorAttribute.createDiffuse(1f,1f,1f,.1f)), Usage.Position | Usage.Normal); + modelInstances.add(new ModelInstance(grid, 0, 0, 0)); + } + + @Override + protected void disposeDesktop() { + grid.dispose(); + } +} diff --git a/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop2.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop2.java new file mode 100644 index 00000000..7db8d3a4 --- /dev/null +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop2.java @@ -0,0 +1,37 @@ +package love.distributedrebirth.gdxapp4d.vrgem4.screen; + +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.ScreenAdapter; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.VertexAttributes.Usage; +import com.badlogic.gdx.graphics.g3d.Material; +import com.badlogic.gdx.graphics.g3d.Model; +import com.badlogic.gdx.graphics.g3d.ModelInstance; +import com.badlogic.gdx.graphics.g3d.attributes.ColorAttribute; +import com.badlogic.gdx.graphics.g3d.utils.ModelBuilder; +import com.badlogic.gdx.utils.Array; + +import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; +import love.distributedrebirth.gdxapp4d.vrgem4.GDXAppVrGem4; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskAppScreen; +import love.distributedrebirth.gdxapp4d.vrgem4.desktop.DeskTopScreen; + +@BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") +public class ScreenDesktop2 extends AbstractScreenDesktop { + private Model grid; + + public ScreenDesktop2() { + super("Desktop2"); + //backgroundImage = new Texture(Gdx.files.internal("background/terrydavis-nose.png")); + } + + protected void createModel(ModelBuilder modelBuilder, Array modelInstances) { + grid = modelBuilder.createLineGrid(33, 33, 1f, 1f, new Material(ColorAttribute.createDiffuse(1f,1f,1f,.1f)), Usage.Position | Usage.Normal); + modelInstances.add(new ModelInstance(grid, 0, 0, 0)); + } + + @Override + protected void disposeDesktop() { + grid.dispose(); + } +} diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop3.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop3.java similarity index 94% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop3.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop3.java index 0550a5d1..24b6df4f 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop3.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop3.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.screen; +package love.distributedrebirth.gdxapp4d.vrgem4.screen; import com.badlogic.gdx.graphics.VertexAttributes.Usage; import com.badlogic.gdx.graphics.g3d.Material; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop4.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop4.java similarity index 99% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop4.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop4.java index 46edc628..c9b49d33 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenDesktop4.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenDesktop4.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.screen; +package love.distributedrebirth.gdxapp4d.vrgem4.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.PerspectiveCamera; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenHelp.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenHelp.java similarity index 84% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenHelp.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenHelp.java index 728934fb..260d6a01 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenHelp.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenHelp.java @@ -1,10 +1,10 @@ -package love.distributedrebirth.gdxapp.screen; +package love.distributedrebirth.gdxapp4d.vrgem4.screen; import com.badlogic.gdx.Screen; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.GDXAppMain; -import love.distributedrebirth.gdxapp.music.MusicSongType; +import love.distributedrebirth.gdxapp4d.vrgem4.GDXAppVrGem4; +import love.distributedrebirth.gdxapp4d.vrgem4.music.MusicSongType; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") public class ScreenHelp extends AbstractScrollScreen { @@ -56,17 +56,17 @@ public class ScreenHelp extends AbstractScrollScreen { } @Override - protected Class getNextScreen(GDXAppMain main) { + protected Class getNextScreen(GDXAppVrGem4 main) { return ScreenDesktop1.class; } @Override public void showScroll() { - GDXAppMain.INSTANCE.music.play(MusicSongType.INTRO); + GDXAppVrGem4.INSTANCE.music.play(MusicSongType.INTRO); } @Override public void hideScroll() { - GDXAppMain.INSTANCE.music.play(MusicSongType.BACKGROUND); + GDXAppVrGem4.INSTANCE.music.play(MusicSongType.BACKGROUND); } } diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenIntro.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenIntro.java similarity index 59% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenIntro.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenIntro.java index 455942c8..9ff4ccf6 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenIntro.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenIntro.java @@ -1,22 +1,29 @@ -package love.distributedrebirth.gdxapp.screen; +package love.distributedrebirth.gdxapp4d.vrgem4.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.ScreenAdapter; import com.badlogic.gdx.Input.Keys; import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.BitmapFont; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.utils.ScreenUtils; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.GDXAppMain; -import love.distributedrebirth.gdxapp.music.MusicSongType; +import love.distributedrebirth.gdxapp4d.tos4.GDXAppTos4; +import love.distributedrebirth.gdxapp4d.vrgem4.GDXAppVrGem4; +import love.distributedrebirth.gdxapp4d.vrgem4.music.MusicSongType; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") public class ScreenIntro extends ScreenAdapter { private Texture backgroundImage; private float colorDeltaTime = 0f; private boolean colorPositive = true; - + protected SpriteBatch batch; + protected BitmapFont font; + public ScreenIntro() { + batch = new SpriteBatch(); + font = new BitmapFont(); backgroundImage = new Texture(Gdx.files.internal("background/temple-os.png")); } @@ -34,24 +41,26 @@ public class ScreenIntro extends ScreenAdapter { } ScreenUtils.clear(0.333f, colorDeltaTime, colorDeltaTime, 1); - GDXAppMain.INSTANCE.batch.begin(); - GDXAppMain.INSTANCE.batch.draw(backgroundImage, 0, 0, GDXAppMain.INSTANCE.viewWidth, GDXAppMain.INSTANCE.viewHeight); - GDXAppMain.INSTANCE.font.draw(GDXAppMain.INSTANCE.batch, "Tap anywhere to begin!", GDXAppMain.INSTANCE.viewWidth/2 - 73, 33); - GDXAppMain.INSTANCE.batch.end(); + batch.begin(); + batch.draw(backgroundImage, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); + font.draw(batch, "Tap anywhere to begin!", Gdx.graphics.getWidth()/2 - 73, 33); + batch.end(); if (Gdx.input.isTouched() || Gdx.input.isKeyPressed(Keys.ENTER) || Gdx.input.isKeyPressed(Keys.SPACE)) { - GDXAppMain.INSTANCE.selectScreen(ScreenIntroMission.class); + GDXAppVrGem4.INSTANCE.terminal.selectScreen(ScreenIntroMission.class); dispose(); } } @Override public void show() { - GDXAppMain.INSTANCE.music.play(MusicSongType.INTRO); + GDXAppVrGem4.INSTANCE.music.play(MusicSongType.INTRO); } @Override public void dispose() { + //batch.dispose(); + font.dispose(); backgroundImage.dispose(); } } diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenIntroMission.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenIntroMission.java similarity index 86% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenIntroMission.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenIntroMission.java index b20c9cf6..3b1bd2e1 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/ScreenIntroMission.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/ScreenIntroMission.java @@ -1,10 +1,10 @@ -package love.distributedrebirth.gdxapp.screen; +package love.distributedrebirth.gdxapp4d.vrgem4.screen; import com.badlogic.gdx.Screen; import love.distributedrebirth.bassboonyd.BãßBȍőnAuthorInfoʸᴰ; -import love.distributedrebirth.gdxapp.GDXAppMain; -import love.distributedrebirth.gdxapp.music.MusicSongType; +import love.distributedrebirth.gdxapp4d.vrgem4.GDXAppVrGem4; +import love.distributedrebirth.gdxapp4d.vrgem4.music.MusicSongType; @BãßBȍőnAuthorInfoʸᴰ(name = "willemtsade", copyright = "©Δ∞ 仙上主天") public class ScreenIntroMission extends AbstractScrollScreen { @@ -66,12 +66,12 @@ public class ScreenIntroMission extends AbstractScrollScreen { } @Override - protected Class getNextScreen(GDXAppMain main) { + protected Class getNextScreen(GDXAppVrGem4 main) { return ScreenDesktop1.class; } @Override public void hideScroll() { - GDXAppMain.INSTANCE.music.play(MusicSongType.BACKGROUND); + GDXAppVrGem4.INSTANCE.music.play(MusicSongType.BACKGROUND); } } diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/UserColorShader.java b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/UserColorShader.java similarity index 97% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/UserColorShader.java rename to gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/UserColorShader.java index 6e80d8b4..6dda3d25 100644 --- a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/java/love/distributedrebirth/gdxapp/screen/UserColorShader.java +++ b/gdxapp4d-vrgem4/src/main/java/love/distributedrebirth/gdxapp4d/vrgem4/screen/UserColorShader.java @@ -1,4 +1,4 @@ -package love.distributedrebirth.gdxapp.screen; +package love.distributedrebirth.gdxapp4d.vrgem4.screen; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Camera; diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/love/distributedrebirth/gdxapp/Main.properties b/gdxapp4d-vrgem4/src/main/resources/love/distributedrebirth/gdxapp/Main.properties similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/love/distributedrebirth/gdxapp/Main.properties rename to gdxapp4d-vrgem4/src/main/resources/love/distributedrebirth/gdxapp/Main.properties diff --git a/gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/love/distributedrebirth/gdxapp/Main_hiero.properties b/gdxapp4d-vrgem4/src/main/resources/love/distributedrebirth/gdxapp/Main_hiero.properties similarity index 100% rename from gdxapp4d-boot/gdxapp4d-boot-tos4/src/main/resources/love/distributedrebirth/gdxapp/Main_hiero.properties rename to gdxapp4d-vrgem4/src/main/resources/love/distributedrebirth/gdxapp/Main_hiero.properties diff --git a/pom.xml b/pom.xml index 6e6c3549..63e907aa 100644 --- a/pom.xml +++ b/pom.xml @@ -9,10 +9,16 @@ 3.0.1 - unitxc-converter - gdxapp4d-chain gdxapp4d-lib - gdxapp4d-boot + gdxapp4d-tos4 + gdxapp4d-vrgem4 + gdxapp4d-boot-desktop + gdxapp4d-app-notepad + gdxapp4d-app-tosamp + gdxapp4d-chain-music-templeos + gdxapp4d-chain-music-msx + gdxapp4d-chain-sys-engine + gdxapp4d-chain-sys-ocean UTF-8 @@ -26,7 +32,7 @@ org.slf4j slf4j-api - 1.7.21 + 1.7.36 org.apache.commons @@ -41,7 +47,7 @@ ch.qos.logback logback-classic - 1.1.7 + 1.2.10 org.x4o @@ -98,6 +104,11 @@ gdx-nativefilechooser-desktop ${nativefilechooser.version} + + org.apache.felix + org.apache.felix.framework + 7.0.3 + @@ -106,11 +117,6 @@ junit-jupiter test - - ch.qos.logback - logback-classic - test - @@ -135,6 +141,11 @@ maven-source-plugin 2.2.1 + + org.apache.felix + maven-bundle-plugin + 5.1.4 +