game.fnl 867 B

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