39 lines
1 KiB
Fennel
39 lines
1 KiB
Fennel
(local repl (require "lib.stdio"))
|
|
(local canvas (let [(w h) (love.window.getMode)]
|
|
(love.graphics.newCanvas w h)))
|
|
|
|
(var scale 1)
|
|
|
|
;; set the first mode
|
|
(var mode (require "mode-intro"))
|
|
|
|
(fn set-mode [mode-name ...]
|
|
(set mode (require mode-name))
|
|
(when mode.activate
|
|
(mode.activate ...)))
|
|
|
|
(fn love.load []
|
|
(: canvas :setFilter "nearest" "nearest")
|
|
(repl.start))
|
|
|
|
(fn love.draw []
|
|
;; the canvas allows you to get sharp pixel-art style scaling; if you
|
|
;; don't want that, just skip that and call mode.draw directly.
|
|
(love.graphics.setCanvas canvas)
|
|
(love.graphics.clear)
|
|
(love.graphics.setColor 1 1 1)
|
|
(mode.draw)
|
|
(love.graphics.setCanvas)
|
|
(love.graphics.setColor 1 1 1)
|
|
(love.graphics.draw canvas 0 0 0 scale scale))
|
|
|
|
(fn love.update[dt]
|
|
(mode.update dt set-mode))
|
|
|
|
(fn love.keypressed [key]
|
|
(if
|
|
(and (love.keyboard.isDown "lctrl" "rctrl" "capslock") (= key "q"))
|
|
(love.event.quit)
|
|
;; add what each keypress should do in each mode
|
|
(mode.keypressed key set-mode)))
|