shithub: puzzles

Download patch

ref: 0c88256a22bc27737ff0a50ab5a42425534dba3b
parent: 82b6a6fd39fc49ab511b3b4d748b415eb6af704a
author: Simon Tatham <[email protected]>
date: Thu Jun 26 15:09:07 EDT 2008

Handle a <param name="game_id"> by passing it in to the C side as
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]

--- a/PuzzleApplet.java
+++ b/PuzzleApplet.java
@@ -33,6 +33,7 @@
     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 @@
                     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();
                 }
             });
--- a/nestedvm.c
+++ b/nestedvm.c
@@ -376,6 +376,8 @@
     _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) {