0  ,]']>S}Wup8d%qyY;]AHVl3<W
0          2TvͫgE#2Tv2Tv ffffffffffffffffffffffffffffffffff"ffflffflffflfffffffff        2#  #2  #2  2#        ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffoffoffofffofffofffffffffffffffffffofffofffffffffffffffofffffoffofffffffffffffoffoffoofffffofffoffffffffffffofffffffffffffffffffffffofffffoffofffffffffffffffffffffffffffffffffffffffoffffoffoffffffffffffffoffffffffffffffffffffffoffoffoffofffffff                                #L#L  0       @  0   22                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    0<ݠ=ݠ:==303333    ̪
<ݬ

3    ̠à=3    ̬
ê<
ӣ
=3
333=3
        :
:3
38


    ,,,,,ʬʬ    """"
"""
""
"


                





 
    ʠ̠    



,
"
""
        






     """ "" " "       """"","",,,<<<>0>    >

    >    
>




    ުݪݪݭ    






    ʬʬʬ:ʬʬ:33333    

:



3
    ,,      

 
 
 

 
    ,,̪̪ʬʬ̪    ""
""
"""
""
*"


    `f``-    
hfh݈ߍ      " " "  " "" """    ,"," ,",""""""    DDDD                DDDD @ 0 @ @  @0  @0  @   @        






    0333P^U    


33



                                                                                                                                                                                                                                                                                                                                                   DDDD   @   @  @
  @  @  @ 
 @DDDDڍ:ݠݠݠ:3ݠ333    
:


>
3
333
    P^UP^UP^UP^UP^U    






	>                                                                ?                                                                 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff        ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
                        ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff  
            ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff   
            ffffffffffffffffffffffffffffffffff  
        ffffffffffffffffffffffffffffffffff 
        ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 
        ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 
        ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
            ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, 
            ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 
            ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, 
            ffffffffffffffffffffffffffffffffff
                        ffffffffffffffffffffffffffffffffff  
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff        ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff                                       ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff                         ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff          ffffffffffffffffffffffffffffffffff        ffffffffffffffffffffffffffffffffff          ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff          ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff      ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff                         ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33333333333333333333cfffffffffffffffffffffffffffffffffcfffffffffffffffffffffff333333333333333333cfffffffffffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffcfffffffffffffffffffff              ffffffffffffffffffffffcfffffffffffffffffffff..ffffffffffffffffffffffcfffffffffffffffffffff..:ffffffffffffffffffffff        cfffffffffffffffffffff.23#:ffffffffffffffffffffff̪
cfffffffffffffffffffff.23#333333ffffffffffff0<<ݬ
cfffffffffff>#"2:ffffffffffff=
cfffffffffff>#"2:ffffffffffffffffffffff:==cfffffffffffffffffffff>#"2U^:ffffffffffffffffffffff3cfffffffffffffffffffff>#"2U^:ffffffffffffffffffffff03333cfffffffffffffffffffff.23#:ffffffffffffffffffffffffff3cfffffffffffffffffffff.23#U^:ffffffffffffffffffffffff<<<cfffffffffffffffffffff..U^:"ݍhffffffffffffffffffffff>cfffffffffffffffffffff..:݈ffffffffffff0>>cfffffffffffU^:ffffffffffffcfffffffffffU^:ffffffffffffffffffffffcfffffffffffffffffffff              ffffffffffffffffffffff
cfffffffffffffffffffffffffffffffffffffffffff
cfffffffffffffffffffffffffffffffffffffffffff        cfffffffffffffffffffff>3ffffffffffffffffffffffcfffffffffffffffffffff3ffffffffffffffffffffffcfffffffffffffffffffff3ffffffffffffcfffffffffff33ffffffffffffcfffffffffffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffff/"/""""/"""cfffffffffffffffffffffffffffffffffffffffffff////"""cfffffffffffffffffffff                    ffffffffffffffffffffff/"/"/"""""cfffffffffffffffffffff        ffffffffffff/////""/cfffffffffff  ffffffffffff/"/""""/"""cfffffffffff33  ffffffffffffffffffffffcfffffffffffffffffffff3>        ffffffffffffffffffffffcfffffffffffffffffffff        ffffffffffffffffffffff333333333333333333cfffffffffffffffffffff                    ffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffff33333333333333333333cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff>3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3>ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff>3              ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83ffffffffffffffffffffffffffffffffff3ʪffffffffffffffffffffffffffffffffff̢ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff,"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff>3,"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3>""ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3"""ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff>3ʬ*""ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffʬ*"ffffffffffffffffffffffffffffffffffޭ̪"ffffffffffffffffffffffffffffffffffݭ̪*ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffݪʬffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff              ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff33ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffffffff33ffffffffffffffffffffffffffffffffff3                                       ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff                                ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff̪

̬
,"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff>30<<ݬ

ê,"""
ffffffffffffffffffffffffffffffffff3>=

=<
,"""
ffffffffffffffffffffffffffffffffff3:==
ӣ
,""
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff>33
=3
,"
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03333
3333ʬ
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3
=3
ʬ
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff<<<

ʬ
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff>ڍ:
>>
ʬ
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0>>:
ʬ:
ffffffffffffffffffffffffffffffffff

:ʬ
ffffffffffffffffffffffffffffffffff33>

ʬ
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3
:33

:33
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3
333333

3333
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3                                ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff                                                                ) ;; title:   TICsweeper
;; author:  Bill Niblock
;; desc:    Minesweeper clone
;; site:    https://vagabondazulien.itch.io/ticsweeper
;; license: MIT License
;; version: 1.5
;; script:  fennel
;; strict:  true

;; Game State:
;;		0 - Start
;;		1 - Play
;;		2 - Game Over
;;  3 - Victory!
(var (game-state gtime ptime digs flags) (values 0 0 0 0 0))

(var grid 15) ;;Grid size
(var diff 30) ;;Difficulty (number of mines)
(var victory-count (- (* grid grid) diff))
(var mines (fcollect [i 1 (* grid grid)] {:s true :m false :f false :d false :n 0}))
(var mined_spots [])

(fn mx [n] (if (= 0 (% n grid)) grid (% n grid)))
(fn my [n] (if (= 0 (% n grid)) (// n grid) (+ (// n grid) 1)))
(fn mn [x y] (+ (* (- y 1) grid) x))
(fn tile [x] (- x (% x 8)))
(fn map-tile [x] (// (tile x) 8))
(fn in-bounds [x y] (and (<= 1 (map-tile x) 15)
																									(<= 1 (map-tile y) 15)))

(fn number_in [t n]
 (var is_in false)
	(each [_ v (pairs t)] (if (= v n) (set is_in true)))
	is_in)
(fn update_neighbors [t]
	; This covers every row/column except first and last of each
	(when (and (> (% t grid) 1)
												(> (- (* grid grid) (- grid 1)) t grid))
		(tset mines (- t 1) :n (+ (?. mines (- t 1) :n) 1))
		(tset mines (+ t 1) :n (+ (?. mines (+ t 1) :n) 1))
		(tset mines (- t grid) :n (+ (?. mines (- t grid) :n) 1))
		(tset mines (- t (- grid 1)) :n (+ (?. mines (- t (- grid 1)) :n) 1))
		(tset mines (- t (+ grid 1)) :n (+ (?. mines (- t (+ grid 1)) :n) 1))
		(tset mines (+ t grid) :n (+ (?. mines (+ t grid) :n) 1))
		(tset mines (+ t (- grid 1)) :n (+ (?. mines (+ t (- grid 1)) :n) 1))
		(tset mines (+ t (+ grid 1)) :n (+ (?. mines (+ t (+ grid 1)) :n) 1)))

	; This covers the first column
	(when (= (% t grid) 1)
		(tset mines (+ t 1) :n (+ (?. mines (+ t 1) :n) 1))
		(if 
		; This covers space 1-1
			(= t 1)
			(do
				(tset mines (+ t grid) :n (+ (?. mines (+ t grid) :n) 1))
				(tset mines (+ t (+ grid 1)) :n (+ (?. mines (+ t (+ grid 1)) :n) 1)))
		; This covers space grid-1
			(< (- (* grid grid) grid) t)
			(do
				(tset mines (- t grid) :n (+ (?. mines (- t grid) :n) 1))
				(tset mines (- t (- grid 1)) :n (+ (?. mines (- t (- grid 1)) :n) 1)))			
		; This covers the spaces in-between
			(do
				(tset mines (+ t grid) :n (+ (?. mines (+ t grid) :n) 1))
				(tset mines (+ t (+ grid 1)) :n (+ (?. mines (+ t (+ grid 1)) :n) 1))				
				(tset mines (- t grid) :n (+ (?. mines (- t grid) :n) 1))
				(tset mines (- t (- grid 1)) :n (+ (?. mines (- t (- grid 1)) :n) 1)))				
		)
	)

	; This covers the last column
	(when (= (% t grid) 0)
		(tset mines (- t 1) :n (+ (?. mines (- t 1) :n) 1))
		(if 
		; This covers space 1-grid
			(= t grid)
			(do
				(tset mines (+ t grid) :n (+ (?. mines (+ t grid) :n) 1))
				(tset mines (+ t (- grid 1)) :n (+ (?. mines (+ t (- grid 1)) :n) 1)))		
		; This covers space grid-grid
			(< (- (* grid grid) grid) t)
			(do
				(tset mines (- t grid) :n (+ (?. mines (- t grid) :n) 1))
				(tset mines (- t (+ grid 1)) :n (+ (?. mines (- t (+ grid 1)) :n) 1)))
		; This covers the spaces in-between
			(do
				(tset mines (+ t grid) :n (+ (?. mines (+ t grid) :n) 1))
				(tset mines (+ t (- grid 1)) :n (+ (?. mines (+ t (- grid 1)) :n) 1))
				(tset mines (- t grid) :n (+ (?. mines (- t grid) :n) 1))
				(tset mines (- t (+ grid 1)) :n (+ (?. mines (- t (+ grid 1)) :n) 1)))
		)			
	)
	; This covers the top row, except 1-1 and 1-grid
	(when (< 1 t grid)
		(tset mines (+ t 1) :n (+ (?. mines (+ t 1) :n) 1))
		(tset mines (- t 1) :n (+ (?. mines (- t 1) :n) 1))
		(tset mines (+ t grid) :n (+ (?. mines (+ t grid) :n) 1))
		(tset mines (+ t (+ grid 1)) :n (+ (?. mines (+ t (+ grid 1)) :n) 1))	
		(tset mines (+ t (- grid 1)) :n (+ (?. mines (+ t (- grid 1)) :n) 1)))	
	; This covers the top row, except 1-1 and 1-grid
	(when (< (+ (- (* grid grid) grid) 1) t (* grid grid))
		(tset mines (+ t 1) :n (+ (?. mines (+ t 1) :n) 1))
		(tset mines (- t 1) :n (+ (?. mines (- t 1) :n) 1))
		(tset mines (- t grid) :n (+ (?. mines (- t grid) :n) 1))
		(tset mines (- t (+ grid 1)) :n (+ (?. mines (- t (+ grid 1)) :n) 1))	
		(tset mines (- t (- grid 1)) :n (+ (?. mines (- t (- grid 1)) :n) 1)))	
)

(fn reset-game []
	(set mines (fcollect [i 1 (* grid grid)] {:s true :m false :f false :d false :n 0}))
	;(set mined_spots [1 6 15 75 76 100 211 219 225])
	(set victory-count (- (* grid grid) diff))
	(set (gtime ptime digs flags) (values 0 0 0 0))
	(set mined_spots []))

(fn generate-mines [s]
	(while (< (length mined_spots) diff)
		(let [rnd (math.random 1 (* grid grid))]
			(when (and (not (= rnd s)) (not (number_in mined_spots rnd)))
  		(table.insert mined_spots rnd))))

	(each [_ v (pairs mined_spots)]
		(tset mines v :m true)
 	(update_neighbors v)))

(fn mt [t]
	(case t
		{:f false :d false} 256
		{:f true :d false} 257
		{:m true :f false :d true} 258
		{:f false :d true} (+ 260 t.n)))

		
(fn check-win []
	; Count spaces dug
	; If spaces dug = grid - mines => victory!
	;		- Set game state victory
	(local count 
		(length (icollect [k v (pairs mines)]
			(case v {:s true :m false :d true} k))))
	(if (>= count victory-count) (set game-state 3)))

(fn generate_neighbors [x]
	(if
		(= (% x grid) 0)
			[(- x grid) (- x (+ grid 1)) (- x 1) (+ x grid) (+ x (- grid 1))]
		(= (% x grid) 1)
			[(- x grid) (- x (- grid 1)) (+ x 1) (+ x grid) (+ x (+ grid 1))]
		;else
			[(- x (+ grid 1)) (- x grid) (- x (- grid 1)) (- x 1) (+ x 1) (+ x (- grid 1)) (+ x grid) (+ x (+ grid 1))]))
		
(fn check_empty_neighbors [spot]
	(local neighbors (generate_neighbors spot))
 		(each [_ v (ipairs neighbors)]
   	(case (?. mines v)
    	{:n 0 :d false} (do
						(tset mines v :d true)
						(set digs (+ digs 1))
						(check_empty_neighbors v))
					{:d false} (do
						(tset mines v :d true)
						(set digs (+ digs 1))))))

(var toggle-dig-gate true)
(fn toggle-dig [t s x]
	(when toggle-dig-gate
		(set toggle-dig-gate false)
		(case t
			{:s true :f true} (do (tset t :f false) (set flags (- flags 1)))
			{:s true :m true :f false} (do (tset t :d true) (set game-state 2))
			{:s true :m false :f false :d false} (do 
				(tset t :d true) (set digs (+ digs 1))
				(if (>= 1 digs) (generate-mines x))
				(if (= (?. t :n) 0) (check_empty_neighbors x))))
			(check-win)))
(var toggle-flag-gate true)
(fn toggle-flag [t s]
	(when toggle-flag-gate
		(set toggle-flag-gate false)
		(case t
			{:f false :d false} (do (tset t :f true) (set flags (+ flags 1))))))
		

(var debug false)
(fn show-debug [x y]
	(when debug
		(print (.. "Mouse: " x "," y) 150 90 2)
		(print (.. "Tile: " (map-tile x) "," (map-tile y)) 150 97 2)
		(each [k v (pairs mined_spots)]
   (spr 272 (* (mx v) 8) (* (my v) 8) 0 1)
   (print "Mines Marked" 150 106 2))
  (print (.. "Victory Count: " victory-count) 150 115 2)))

(fn start-menu [x y b]
	(rect 48 44 41 40 15)
	(rectb 48 44 41 40 3)
	(rectb 49 45 39 38 10)
	(rectb 50 46 37 36 3)
	(spr 304 60 51 -1 1 0 0 2 2) 
	(print "BEGIN!" 53 74 2)
	(when b (set game-state 1)))
	
(var toggle-new-gate true)
(fn game-over-menu [x y b]
	(rect 16 12 104 24 15)
	(rectb 16 12 104 24 3)
	(rectb 17 13 102 22 10)
	(rectb 18 14 100 20 3)
	(spr 318 20 16 -1 1 0 0 2 2)
	(print "GAME" 57 19 2)
	(print "OVER" 57 25 2)
	(spr 318 100 16 -1 1 0 0 2 2)
	(rect 48 44 41 40 15)
	(rectb 48 44 41 40 3)
	(rectb 49 45 39 38 10)
	(rectb 50 46 37 36 3)
	(spr 306 60 51 -1 1 0 0 2 2) 
	(print "AGAIN?" 52 74 2)	
	(when b
		(reset-game)
		(set game-state 1)))
			
(fn victory-menu [x y b]
	(rect 16 12 104 24 15)
	(rectb 16 12 104 24 3)
	(rectb 17 13 102 22 10)
	(rectb 18 14 100 20 3)
	(spr 336 20 16 -1 1 0 0 2 2)
	(print "VICTORY" 50 22 2)
	(spr 336 100 16 -1 1 1 0 2 2)
	(rect 48 44 41 40 15)
	(rectb 48 44 41 40 3)
	(rectb 49 45 39 38 10)
	(rectb 50 46 37 36 3)
	(spr 306 60 51 -1 1 0 0 2 2) 
	(print "AGAIN?" 52 74 2)
	(when b 
		(reset-game)
		(set game-state 1)))

(fn _G.TIC []
 (cls 14)
	(var (mx my m1 m3 m2 mh mv) (values (mouse)))
	(when (btnp 5) (set debug (not debug)))
 (rect 4 4 129 129 6)
 (rectb 3 3 130 130 0)
 (for [x 1 grid]
 	(for [y 1 grid]
   (var (rx ry) (values (* x 8) (* y 8)))
   (spr (mt (?. mines (mn x y))) rx ry 0 1)))
 (print "T" 140 6 10 false 2) 
 (print "I" 140 20 10 false 2)
 (print "C" 140 34 10 false 2)
 (spr 258 137 47 0 2)
 (print "s" 142 65 3 false 1)
 (print "w" 142 75 3 false 1)
 (print "e" 142 85 3 false 1)
 (print "e" 142 95 3 false 1)
 (print "p" 142 105 3 false 1)
 (print "e" 142 115 3 false 1)
 (print "r" 142 125 3 false 1)
	;Time
	;(line 158 10 235 10 0)
 (rect 158 4 78 23 15)
	(spr 312 162 8 -1 1 0 0 2 2)
 (rect 180 8 52 16 0)
 (rectb 180 8 53 16 13)
 (rectb 181 9 51 14 13)
 (print (string.format "%04d" ptime) 184 11 11 true 2)
	(line 158 28 235 28 0)
	;Grid
	(rect 158 31 38 37 15)
	(rect 159 33 36 11 0)
 (rectb 159 33 36 11 13)
 (rectb 160 34 34 9 13)
 (print (.. (string.format "%02d" grid) "x" (string.format "%02d" grid)) 162 36 11 true 1)
	(spr 340 169 48 -1 1 0 0 2 2)
	;Mines 
	(rect 198 31 38 37 15)
	(rect 204 33 25 11 0)
 (rectb 204 33 25 11 13)
 (rectb 205 34 23 9 13)
 (print (string.format "%03d" diff) 208 36 11 true 1)
	(spr 316 209 48 -1 1 0 0 2 2)
	;Digs
	(rect 158 71 38 37 15)
	(rect 164 73 25 11 0)
 (rectb 164 73 25 11 13)
 (rectb 165 74 23 9 13)
 (print (string.format "%03d" digs) 168 76 11 true 1)
	(spr 308 169 89 -1 1 0 0 2 2)
	;Flags
	(rect 198 71 38 37 15)
	(rect 204 73 25 11 0)
 (rectb 204 73 25 11 13)
 (rectb 205 74 23 9 13)
 (print (string.format "%03d" flags) 208 76 11 true 1)
	(spr 314 209 89 -1 1 0 0 2 2)
	;Controls
	(line 158 110 235 110 0)
 (rect 158 112 38 20 15)
	(spr 304 160 114 -1 1 0 0 2 2) 
	(spr 338 178 114 -1 1 0 0 2 2) 
 (rect 198 112 38 20 15)
	(spr 306 200 114 -1 1 0 0 2 2) 
	(spr 310 218 114 -1 1 0 0 2 2) 

 (when (= game-state 0)
 	(set toggle-dig-gate false)
 	(set toggle-flag-gate false)
 	(start-menu mx my m1))
  
	(when (= game-state 1)
 	(if (= (% gtime 60) 0) (set ptime (+ ptime 1)))
		(if (not m1) (set toggle-dig-gate true))
		(when m1 
			(if (in-bounds mx my)
				(do
				 (local square (mn (map-tile mx) (map-tile my)))
					(toggle-dig (?. mines square) true square))))
		(if (not m2) (set toggle-flag-gate true))
		(when m2 (if (in-bounds mx my) (toggle-flag (?. mines (mn (map-tile mx) (map-tile my))) true))))
	
	(when (= game-state 2)
 	(set toggle-dig-gate false)
 	(set toggle-flag-gate false)
  (set toggle-new-gate false)
 	(game-over-menu mx my m2))
  
 (when (= game-state 3)
 	(set toggle-dig-gate false)
 	(set toggle-flag-gate false)
  (victory-menu mx my m2))
  
 (set gtime (+ gtime 1))
 (show-debug mx my)
)