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]
This commit is contained in:
Simon Tatham
2008-06-26 19:09:07 +00:00
parent 82b6a6fd39
commit 0c88256a22
2 changed files with 18 additions and 1 deletions

View File

@ -33,6 +33,7 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
private JLabel statusBar; private JLabel statusBar;
private PuzzlePanel pp; private PuzzlePanel pp;
private Runtime runtime; private Runtime runtime;
private String[] puzzle_args;
private Graphics2D gg; private Graphics2D gg;
private Timer timer; private Timer timer;
private int xarg1, xarg2, xarg3; private int xarg1, xarg2, xarg3;
@ -172,9 +173,23 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
runtimeCall("jcallback_timer_func", new int[0]); 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() { SwingUtilities.invokeLater(new Runnable() {
public void run() { public void run() {
runtime.start(); runtime.start(puzzle_args);
runtime.execute(); runtime.execute();
} }
}); });

View File

@ -376,6 +376,8 @@ int main(int argc, char **argv)
_fe = snew(frontend); _fe = snew(frontend);
_fe->timer_active = FALSE; _fe->timer_active = FALSE;
_fe->me = midend_new(_fe, &thegame, &nestedvm_drawing, _fe); _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); midend_new_game(_fe->me);
if ((n = midend_num_presets(_fe->me)) > 0) { if ((n = midend_num_presets(_fe->me)) > 0) {