Patch from Mark Wooding to reorganise Loopy's redraw function to be
[sgt/puzzles] / PuzzleApplet.java
index ef7ca7e..b796aa4 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,22 @@ 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;
+           }
+           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();
                 }
             });
@@ -359,7 +373,7 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
             case 7: // string
                 gg.setColor(colors[arg2]);
                 {
-                    String text = runtime.cstring(arg3);
+                    String text = runtime.utfstring(arg3);
                     Font ft = new Font((xarg3 & 0x10) != 0 ? "Monospaced" : "Dialog",
                             Font.PLAIN, 100);
                     int height100 = this.getFontMetrics(ft).getHeight();
@@ -368,8 +382,6 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
                     int asc = fm.getAscent(), desc = fm.getDescent();
                     if ((xarg3 & ALIGN_VCENTRE) != 0)
                         xarg2 += asc - (asc+desc)/2;
-                    else
-                        xarg2 += asc;
                     int wid = fm.stringWidth(text);
                     if ((xarg3 & ALIGN_HCENTRE) != 0)
                         xarg1 -= wid / 2;
@@ -590,7 +602,7 @@ public class PuzzleApplet extends JApplet implements Runtime.CallJavaCB {
                     break;
                 case C_CHOICES:
                     JComboBox jcm = (JComboBox)cc.component;
-                    runtimeCall("jcallback_config_set_boolean", new int[] {cc.configItemPointer, jcm.getSelectedIndex()});
+                    runtimeCall("jcallback_config_set_choice", new int[] {cc.configItemPointer, jcm.getSelectedIndex()});
                     break;
                 }
             }