From 5bb01a919ebed3a66c604a4c42745bd69c4c41e6 Mon Sep 17 00:00:00 2001
From: Zeno Rogue <zeno@attnam.com>
Date: Fri, 14 Mar 2025 12:28:04 +0100
Subject: [PATCH] rogueviz::fifteen:: quitter instead of quit_from_menu

---
 rogueviz/fifteen.cpp | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/rogueviz/fifteen.cpp b/rogueviz/fifteen.cpp
index 9585a2df..172cd37f 100644
--- a/rogueviz/fifteen.cpp
+++ b/rogueviz/fifteen.cpp
@@ -36,7 +36,7 @@ vector<puzzle> puzzles = {
   };
 
 puzzle *current_puzzle;
-bool quit_from_menu;
+reaction_t quitter;
 
 static constexpr int Empty = 0;
 
@@ -62,13 +62,12 @@ bool show_triangles = false;
 bool show_dots = true;
 
 void init_fifteen(int q = 20) {  
-  println(hlog, "init_fifteen");
   auto ac = currentmap->allcells();
   for(int i=0; i<min(isize(ac), q); i++) {
     fif[ac[i]] = {i, 0, false, i, 0, false};
     }  
   cwt.at = ac[0];
-  println(hlog, "ok");
+  quitter = [] {};
   }
 
 void compute_triangle_markers() {
@@ -286,10 +285,7 @@ void edit_fifteen() {
       });
     }
 
-  if(quit_from_menu) {
-    dialog::addItem("quit", 'Q');
-    dialog::add_action([] { quitmainloop = true; });
-    }
+  if(quitter) quitter();
 
   dialog::addBack();
   
@@ -517,7 +513,10 @@ void fifteen_menu() {
       pushScreen([]{ quitmainloop = true; });
       pushScreen(fifteen_play);
       current_puzzle = &p;
-      quit_from_menu = true;
+      quitter = [] {
+        dialog::addItem("quit", 'Q');
+        dialog::add_action([] { quitmainloop = true; });
+        };
       });
     dialog::addInfo(p.desc);
     }