From 27b6a4d840d23994e8071cfe7ee226481c898e92 Mon Sep 17 00:00:00 2001
From: Amy Grinn <grinn.amy@gmail.com>
Date: Tue, 31 Dec 2024 13:14:17 -0500
Subject: [PATCH] Setting initial game state

Use matching for game state procedures
---
 game.scm | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/game.scm b/game.scm
index de64010..fc56b42 100644
--- a/game.scm
+++ b/game.scm
@@ -106,7 +106,7 @@
 (define audio:bg-music (load-music "cirkoban"))
 
 ;; Game state
-(define *state* '())
+(define *state* '(initial))
 
 (define (push-game-state! state)
   (set! *state* (cons state *state*)))
@@ -114,14 +114,12 @@
   (when (pair? *state*)
     (set! *state* (cdr *state*))))
 (define (replace-game-state! state)
-  (if (pair? *state*)
-      (set! *state* (cons state (cdr *state*)))
-      (set! *state* (list state))))
-
+  (match *state*
+    ((_ . rest)
+     (set! *state* (cons state rest)))))
 (define (current-game-state)
-  (when (pair? *state*)
-    (car *state*)))
-
+  (match *state*
+    ((state . _) state)))
 
 (define *actormap* (make-whactormap))
 (define (call-with-goblins thunk)
@@ -401,7 +399,7 @@
 (define (reset-game!)
   (run-script
    (lambda ()
-     (set! *state* '(interstitial))
+     (replace-game-state! 'interstitial)
      (yield
       (lambda (k)
         (show-effect! (make-fade-out+in-effect 2.0 k))))
@@ -1049,9 +1047,10 @@
        ('undo
         (rollback-snapshot!)
         (with-goblins (update-objects!)))
-           ;; REMOVE BEFORE RELEASE!!!!
+       ;; REMOVE BEFORE RELEASE!!!!
        ;; ('confirm (next-level!))
-       ('menu (show-menu!))))
+       ('menu (show-menu!))
+       (_ #f)))
     ('menu
      (match input
        ('up (menu-up!))
@@ -1061,11 +1060,12 @@
        (_ #f)))
     ;; Pressing any bound input resets the game.
     ;; If traveling to the credits via the menu, go back to '*level-last*'
-    ('credits (cond
-               (*level-last*
-                (load-level! *level-last*)
-                (set! *level-last* #f))
-               (else (reset-game!))))))
+    ('credits
+     (cond
+      (*level-last*
+       (load-level! *level-last*)
+       (set! *level-last* #f))
+      (else (reset-game!))))))
 
 ;; Canvas and event loop setup
 (define canvas (get-element-by-id "canvas"))