! Copyright (C) 2015 Sankaranarayanan Viswanathan.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs calendar combinators
-combinators.short-circuit destructors formatting fry kernel math
+combinators.short-circuit destructors formatting kernel math
math.vectors namespaces opengl opengl.textures sequences sets
snake-game.game snake-game.sprites timers ui ui.gadgets
ui.gadgets.worlds ui.gestures ui.render ;
: toggle-game-pause ( snake-gadget -- )
snake-game>> [ not ] change-paused? drop ;
-: load-game-textures ( snake-gadget -- textures )
- dup textures>> [ ] [ snake-textures >>textures textures>> ] ?if ;
-
M: snake-gadget graft*
- [ '[ _ do-updates ] 200 milliseconds every ] keep timer<< ;
+ dup '[ _ do-updates ] 200 milliseconds every >>timer
+ snake-textures >>textures
+ drop ;
M: snake-gadget ungraft*
[ stop-timer f ] change-timer
+ dup find-gl-context ! so texture disposing works properly
[ values dispose-each f ] change-textures
drop ;
drop snake-game-dim [ snake-game-cell-size * 20 + ] map ;
M: snake-gadget draw-gadget*
- [ load-game-textures game-textures ] keep '[
+ [ textures>> game-textures ] keep '[
draw-background
{ 10 10 } [
_ snake-game>>