diff --git a/ui/src/main/java/dev/quoije/umd/ui/PlayerApp.java b/ui/src/main/java/dev/quoije/umd/ui/PlayerApp.java index 19e49b3..084ec5e 100644 --- a/ui/src/main/java/dev/quoije/umd/ui/PlayerApp.java +++ b/ui/src/main/java/dev/quoije/umd/ui/PlayerApp.java @@ -8,6 +8,8 @@ import dev.quoije.umd.player.PlaybackEngine; import dev.quoije.umd.playlist.Playlist; import dev.quoije.umd.rco.RcoFile; import dev.quoije.umd.rco.vsmx.Vsmx; +import dev.quoije.umd.rco.vsmx.interpreter.VsmxBaseObject; +import dev.quoije.umd.rco.vsmx.interpreter.VsmxFunction; import dev.quoije.umd.rco.vsmx.interpreter.VsmxInterpreter; import dev.quoije.umd.rco.vsmx.interpreter.VsmxNativeObject; import dev.quoije.umd.rco.vsmx.objects.Controller; @@ -66,6 +68,9 @@ public final class PlayerApp extends Application { private int videoBufferIndex = 0; private volatile boolean skipRequested = false; + private volatile VsmxInterpreter menuInterpreter; + private volatile VsmxBaseObject mmActivate; + @Override public void start(Stage stage) { // Gradle's --args splits on whitespace; rejoin so paths with spaces work. @@ -119,6 +124,10 @@ public final class PlayerApp extends Application { skipRequested = true; return; } + case M -> { + openMenuDirectly(); + return; + } default -> { } } @@ -136,6 +145,15 @@ public final class PlayerApp extends Application { } } + private void openMenuDirectly() { + VsmxBaseObject fn = mmActivate; + VsmxInterpreter interpreter = menuInterpreter; + if (fn instanceof VsmxFunction function && interpreter != null) { + System.err.println("[debug] opening menu directly"); + interpreter.interpretFunction(function, null, new VsmxBaseObject[0]); + } + } + private void loadMenu(String isoPath) { try (UmdIsoReader iso = new UmdIsoReader(Path.of(isoPath))) { Playlist playlist = Playlist.parse(iso); @@ -189,6 +207,8 @@ public final class PlayerApp extends Application { interpreter.run(globals); controller = (Controller) controllerObject.getObject(); moviePlayer = (MoviePlayer) movieplayer.getObject(); + menuInterpreter = interpreter; + mmActivate = globals.getPropertyValue("mm_activate"); controller.callCallback(interpreter, "onAutoPlay", null); } catch (Exception e) { e.printStackTrace();