shithub: puzzles

Download patch

ref: 1eba6388bfed72e21a4525ef7a1c6c18d857b703
parent: 81b6bccab601ff1c08c8f8306d83bd24677d9d6c
author: Ben Harris <bjh21@bjh21.me.uk>
date: Sun Dec 11 08:05:16 EST 2022

kaios: Hack out everything that needs dialogue boxes

They're proving to be a right nuisance and will probably require a
substantial overhaul to how they work across the entire JavaScript
front-end.  I don't think any of the functionality provided by the
dialogue boxes is critical, so in the interests of getting a minimum
viable product actually released I've disabled those features.

In most cases, this just involves commenting out bits of HTML.  The
"Custom..." menu item is added by C code, though, so there I've fallen
back to the standard Puzzles way to implement a nasty hack: an
environment variable.

--- a/emcc.c
+++ b/emcc.c
@@ -975,6 +975,7 @@
      */
     {
         struct preset_menu *menu = midend_get_presets(me, &npresets);
+        char *env;
         presets = snewn(npresets, game_params *);
         for (i = 0; i < npresets; i++)
             presets[i] = NULL;
@@ -981,7 +982,14 @@
 
         populate_js_preset_menu(0, menu);
 
-        if (thegame.can_configure)
+        /*
+         * Crude hack to allow the "Custom..." item to be hidden on
+         * KaiOS, where dialogs don't yet work.
+         */
+        env = getenv("PUZZLES_ALLOW_CUSTOM");
+
+        if (thegame.can_configure &&
+            (!env || env[0] == 'y' || env[0] == 'Y'))
             js_add_preset(0, "Custom...", -1);
 
         have_presets_dropdown = npresets > 0 || thegame.can_configure;
--- a/kaios/apppage.pl
+++ b/kaios/apppage.pl
@@ -16,7 +16,8 @@
 <script defer type="text/javascript" src="${name}.js"></script>
 <!-- Override some defaults for small screens -->
 <script id="environment" type="application/json">
-{ "PATTERN_DEFAULT": "10x10" }
+{ "PATTERN_DEFAULT": "10x10",
+  "PUZZLES_ALLOW_CUSTOM": "N" }
 </script>
 <style class="text/css">
 body {
@@ -299,6 +300,7 @@
 </div>
 <form id="gamemenu" class="transient">
  <ul>
+<!--
   <li><div tabindex="0">Game<ul class="transient">
     <li><button type="button" id="specific">Enter game ID...</button></li>
     <li><button type="button" id="random">Enter random seed...</button></li>
@@ -305,6 +307,7 @@
     <li><button type="button" id="save">Download save file...</button></li>
     <li><button type="button" id="load">Upload save file...</button></li>
   </ul></div></li>
+-->
   <li><div tabindex="0">Type<ul id="gametype" class="transient"></ul></div></li>
   <li role="separator"></li>
   <li><button type="button" id="new">