@ -273,7 +273,8 @@
;; - x wall (fixed obstacle)
;; - A primary piece (red car)
;; - B - Z all other pieces
;; I used lowercase ~o~ instead of periods ~.~ for the empty cells in the database so that the entire board description can be selected with a double-click.
;; I used lowercase ~o~ instead of periods ~.~ for the empty cells in the database so that the
;; entire board description can be selected with a double-click.
;; Example format:
;; 60 IBBxooIooLDDJAALooJoKEEMFFKooMGGHHHM 2332
( defun-local game-board-load ( board-string ( * ( const char ) ) &return bool )
@ -521,7 +522,7 @@
( SDL_WriteLE32 save-file g-progression-file-version )
( SDL_WriteLE32 save-file g-num-puzzles-won )
( SDL_RWclose save-file ) )
( printf "warning: failed to save progression file\n" ) ) )
( SDL_Log "warning: failed to save progression file\n" ) ) )
( defun-local read-progression-data ( )
( var save-file ( * SDL_RWops ) ( SDL_RWFromFile g-save-file-name "r" ) )
@ -529,12 +530,12 @@
( scope
( var version int ( SDL_ReadLE32 save-file ) )
( unless ( = version g-progression-file-version )
( printf "warning: failed to load progression file (version mismatch). Progress will be lost\n" )
( SDL_Log "warning: failed to load progression file (version mismatch). Progress will be lost\n" )
( SDL_RWclose save-file )
( return ) )
( set g-num-puzzles-won ( SDL_ReadLE32 save-file ) )
( SDL_RWclose save-file ) )
( printf "warning: failed to load progression file\n" ) ) )
( SDL_Log "warning: failed to load progression file\n" ) ) )
;;
;; UI (immediate-mode)
;;
@ -1032,12 +1033,15 @@ Rush Hour database from Michael Fogleman.\n\n")
( set exit-reason "Render error" ) )
( scope ;; UI
( when ( do-button ( addr in-state ) ( array 10.f 10.f ) ( array 166.f 166.f ) renderer theme-button-texture )
( when ( do-button ( addr in-state ) ( array 10.f 10.f ) ( array 166.f 166.f )
renderer theme-button-texture )
( set is-day-mode ( not is-day-mode ) ) )
( when ( do-button ( addr in-state ) ( array 190.f 1900.f ) ( array 166.f 166.f ) renderer undo-button-texture )
( when ( do-button ( addr in-state ) ( array 190.f 1900.f ) ( array 166.f 166.f )
renderer undo-button-texture )
( unless selected-piece ;; Don't allow undo while also moving another piece
( undo-action ) ) )
( when ( do-button ( addr in-state ) ( array 724.f 1900.f ) ( array 166.f 166.f ) renderer next-button-texture )
( when ( do-button ( addr in-state ) ( array 724.f 1900.f ) ( array 166.f 166.f )
renderer next-button-texture )
( game-board-load-next-puzzle ) ) )
;; (when (not is-day-mode) ;; Draw grid