[ draw-cells ]
} cleave ;
-:: on-click ( gadget -- )
- gadget hand-rel first2 :> ( w h )
- h 58 < [
- h 3 55 between?
- gadget pref-dim first 2/ w - abs 26 < and [
- gadget [ reset-cells ] change-cells
- f >>start f >>end drop
- ] when
- ] [
- h 58 - w [ 32 /i ] bi@ :> ( row col )
- gadget cells>> :> cells
- cells game-over? [
- cells row col click-cell-at [
- gadget start>> [ now gadget start<< ] unless
- cells game-over? [ now gadget end<< ] when
- ] when
- ] unless
- ] if gadget relayout-1 ;
-
-:: on-mark ( gadget -- )
+:: on-grid ( gadget quot: ( cells row col -- ? ) -- )
gadget hand-rel first2 :> ( w h )
h 58 >= [
h 58 - w [ 32 /i ] bi@ :> ( row col )
gadget cells>> :> cells
cells game-over? [
- cells row col mark-cell-at [
+ cells row col quot call [
gadget start>> [ now gadget start<< ] unless
cells game-over? [ now gadget end<< ] when
] when
] unless
- ] when gadget relayout-1 ;
+ ] when gadget relayout-1 ; inline
-:: on-open ( gadget -- )
+:: on-click ( gadget -- )
gadget hand-rel first2 :> ( w h )
- h 58 >= [
- h 58 - w [ 32 /i ] bi@ :> ( row col )
- gadget cells>> :> cells
- cells game-over? [
- cells row col open-cell-at [
- gadget start>> [ now gadget start<< ] unless
- cells game-over? [ now gadget end<< ] when
- ] when
- ] unless
- ] when gadget relayout-1 ;
+ h 58 < [
+ h 3 55 between?
+ gadget pref-dim first 2/ w - abs 26 < and [
+ gadget [ reset-cells ] change-cells
+ f >>start f >>end drop
+ ] when
+ ] when gadget [ click-cell-at ] on-grid ;
+
+: on-mark ( gadget -- ) [ mark-cell-at ] on-grid ;
+
+: on-open ( gadget -- ) [ open-cell-at ] on-grid ;
: new-game ( gadget rows cols mines -- )
[ make-cells ] dip place-mines update-counts >>cells