game.fnl 877 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. (local fennel (require "lib.fennel"))
  2. (local repl (require "lib.stdio"))
  3. (var mode (: (require "mode.menu") :init))
  4. (fn set-mode [mn ...]
  5. (let [m (require mn)]
  6. (set mode (: m :init ...))))
  7. (fn love.load []
  8. (repl.start))
  9. (fn love.draw []
  10. (: mode :draw))
  11. (fn love.update [dt]
  12. (: mode :update dt set-mode))
  13. (fn love.keypressed [key]
  14. ;; LIVE RELOADING
  15. (when (= "f5" key)
  16. (let [name (.. "mode." (. mode :name))]
  17. (let [old (require name)
  18. _ (tset package.loaded name nil)
  19. new (require name)]
  20. (when (= (type new) :table)
  21. (each [k v (pairs new)]
  22. (tset old k v))
  23. (each [k v (pairs old)]
  24. (when (not (. new k))
  25. (tset old k nil)))
  26. (tset package.loaded name old))))
  27. )
  28. (when (= "escape" key)
  29. (love.event.quit))
  30. (: mode :keypressed key set-mode))