chiark / gitweb /
Handle a <param name="game_id"> by passing it in to the C side as
authorSimon Tatham <anakin@pobox.com>
Thu, 26 Jun 2008 19:09:07 +0000 (19:09 +0000)
committerSimon Tatham <anakin@pobox.com>
Thu, 26 Jun 2008 19:09:07 +0000 (19:09 +0000)
argv[1], which in turn feeds it into the midend as a game ID. This
can of course take any of the forms supported by the native C
puzzles: a pure game parameter string, a params:description specific
game ID, or a params#seed random game ID.

[originally from svn r8095]

PuzzleApplet.java
nestedvm.c

index ef7ca7e507ae52d5a08daa8ab3dcfba5bfe135ab..f68dddf0afb15daca6701ff7b1ddc491f761c6e6 100644 (file)
@@ -33,6 +33,7 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
     private JLabel statusBar;
     private PuzzlePanel pp;
     private Runtime runtime;
+    private String[] puzzle_args;
     private Graphics2D  gg;
     private Timer timer;
     private int xarg1, xarg2, xarg3;
@@ -172,9 +173,23 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
                     runtimeCall("jcallback_timer_func", new int[0]);
                 }
             });
+           String gameid;
+           try {
+               gameid = getParameter("game_id");
+           } catch (java.lang.NullPointerException ex) {
+               gameid = null;
+           }
+           System.out.println("ooh " + gameid);
+           if (gameid == null) {
+               puzzle_args = null;
+           } else {
+               puzzle_args = new String[2];
+               puzzle_args[0] = "puzzle";
+               puzzle_args[1] = gameid;
+           }
             SwingUtilities.invokeLater(new Runnable() {
                 public void run() {
-                    runtime.start();
+                    runtime.start(puzzle_args);
                     runtime.execute();
                 }
             });
index 0a23a302f532deebc7ccd9fcbb3c174854550f21..757b65fd8a726a3e1c5d64e73c11b07fab9136ea 100644 (file)
@@ -376,6 +376,8 @@ int main(int argc, char **argv)
     _fe = snew(frontend);
     _fe->timer_active = FALSE;
     _fe->me = midend_new(_fe, &thegame, &nestedvm_drawing, _fe);
+    if (argc > 1)
+       midend_game_id(_fe->me, argv[1]);   /* ignore failure */
     midend_new_game(_fe->me);
 
     if ((n = midend_num_presets(_fe->me)) > 0) {