switch repo to just cleaning game focus
|
Before Width: | Height: | Size: 225 B After Width: | Height: | Size: 225 B |
|
Before Width: | Height: | Size: 91 B After Width: | Height: | Size: 91 B |
|
Before Width: | Height: | Size: 510 B After Width: | Height: | Size: 510 B |
|
Before Width: | Height: | Size: 220 B After Width: | Height: | Size: 220 B |
|
Before Width: | Height: | Size: 649 B After Width: | Height: | Size: 649 B |
|
Before Width: | Height: | Size: 436 B After Width: | Height: | Size: 436 B |
|
Before Width: | Height: | Size: 574 B After Width: | Height: | Size: 574 B |
|
Before Width: | Height: | Size: 419 B After Width: | Height: | Size: 419 B |
|
|
@ -1 +0,0 @@
|
|||
../fennel-1.5.3.lua
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
(fn love.load []
|
||||
;; start a thread listening on stdin
|
||||
(: (love.thread.newThread "require('love.event')
|
||||
while 1 do love.event.push('stdin', io.read('*line')) end") :start))
|
||||
|
||||
(fn love.handlers.stdin [line]
|
||||
;; evaluate lines read from stdin as fennel code
|
||||
(let [(ok val) (pcall fennel.eval line)]
|
||||
(print (if ok (fennel.view val) val))))
|
||||
|
||||
(fn love.draw []
|
||||
(love.graphics.print "Hello from Fennel!\nPress any key to quit" 10 10))
|
||||
|
||||
(fn love.keypressed [key]
|
||||
(love.event.quit))
|
||||
|
|
@ -1 +0,0 @@
|
|||
../fennel_bootstrap.lua
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
function love.draw()
|
||||
love.graphics.print("Hello World", 400, 300)
|
||||
end
|
||||
|
|
@ -1,119 +0,0 @@
|
|||
(local scale 6)
|
||||
(local canvas-w (* scale 88))
|
||||
(local canvas-h (* scale 31))
|
||||
(local canvas-x (* -1 (/ canvas-w 2)))
|
||||
(local canvas-y (* -1 (/ canvas-h 2)))
|
||||
(local app-state {
|
||||
:mode :draw ; draw or preview
|
||||
})
|
||||
(local theme {
|
||||
:white (lambda [cb] (cb (love.math.colorFromBytes 247 246 246)))
|
||||
:black (lambda [cb] (cb (love.math.colorFromBytes 60 54 51)))
|
||||
})
|
||||
|
||||
(lambda set-center-origin []
|
||||
(let [(w h f) (love.window.getMode)
|
||||
x (/ w 2)
|
||||
y (/ h 2)
|
||||
]
|
||||
(love.graphics.push)
|
||||
(love.graphics.translate x y)))
|
||||
|
||||
; setup pixels for image that we are drawing
|
||||
(var pixel-canvas nil)
|
||||
(local pixels {
|
||||
:export-ordered-keys []
|
||||
:drawn-ordered-keys []
|
||||
:cords {}
|
||||
})
|
||||
(for [y 1 31]
|
||||
(for [x 1 88]
|
||||
(let [key (.. x "," y)]
|
||||
(tset pixels.cords key {: x : y :val false})
|
||||
(table.insert pixels.export-ordered-keys key))))
|
||||
|
||||
(fn draw-canvases []
|
||||
"Draw main drawing canvas and preview canvas to screen"
|
||||
(pixel-canvas:setFilter "nearest" "nearest")
|
||||
(love.graphics.draw pixel-canvas canvas-x canvas-y 0 scale scale)
|
||||
(love.graphics.draw pixel-canvas canvas-x (- canvas-y 60)))
|
||||
|
||||
(fn update-canvas []
|
||||
(love.graphics.setCanvas pixel-canvas)
|
||||
(love.graphics.clear 0 0 0 0)
|
||||
(each [key {: x : y : val} (pairs pixels.cords)]
|
||||
(when val (love.graphics.points x y)))
|
||||
(love.graphics.setCanvas)
|
||||
)
|
||||
|
||||
(fn love.update []
|
||||
(let [
|
||||
(w h _) (love.window.getMode)
|
||||
(mouse-x-raw mouse-y-raw) (love.mouse.getPosition)
|
||||
mouse-x (- mouse-x-raw (/ w 2))
|
||||
mouse-y (- mouse-y-raw (/ h 2))
|
||||
]
|
||||
(when (and (> mouse-x canvas-x) (> mouse-y canvas-y) (< mouse-x (+ canvas-x canvas-w)) (< mouse-y (+ canvas-y canvas-h)))
|
||||
(let [
|
||||
x (+ 1 (math.floor (/ (+ (/ canvas-w 2) mouse-x) scale)))
|
||||
y (+ 1 (math.floor (/ (+ (/ canvas-h 2) mouse-y) scale)))
|
||||
key (.. x "," y)
|
||||
]
|
||||
(tset (. pixels.cords key) :val true)
|
||||
(table.insert pixels.drawn-ordered-keys key)
|
||||
(update-canvas)
|
||||
; (print (.. x "," y))
|
||||
))))
|
||||
|
||||
(fn love.load []
|
||||
;; 480p 720×480
|
||||
(love.window.setMode 720 480)
|
||||
|
||||
; prep canvas
|
||||
(set pixel-canvas (love.graphics.newCanvas 88 31))
|
||||
(update-canvas)
|
||||
|
||||
;; start a thread listening on stdin
|
||||
(: (love.thread.newThread "require('love.event')
|
||||
while 1 do love.event.push('stdin', io.read('*line')) end") :start))
|
||||
|
||||
(fn love.handlers.stdin [line]
|
||||
; evaluate lines read from stdin as fennel code
|
||||
(let [(ok val) (pcall fennel.eval line)]
|
||||
(print (if ok (fennel.view val) val))))
|
||||
|
||||
(lambda draw-static-bg []
|
||||
; canvas outline and text
|
||||
(love.graphics.print "Canvas:" canvas-x (- canvas-y 20))
|
||||
(love.graphics.rectangle "line" canvas-x canvas-y canvas-w canvas-h)
|
||||
; preview outline and text
|
||||
(love.graphics.print "Preview:" canvas-x (- canvas-y 80))
|
||||
(love.graphics.rectangle "line" canvas-x (- canvas-y 60) 89 32)
|
||||
|
||||
; future preview outlines and text
|
||||
(for [i 0 4]
|
||||
(let [
|
||||
gap (/ (- canvas-w (* 5 89)) 4)
|
||||
txt (case i
|
||||
0 "After 1 day"
|
||||
1 "After 2 days"
|
||||
2 "After 3 days"
|
||||
3 "After 4 days"
|
||||
4 "After 5 days")]
|
||||
(love.graphics.print txt (+ (* i (+ 89 gap)) canvas-x) (+ (+ 20 canvas-h) canvas-y))
|
||||
(love.graphics.rectangle "line" (+ (* i (+ 89 gap)) canvas-x) (+ (+ 40 canvas-h) canvas-y) 89 32)))
|
||||
)
|
||||
|
||||
(fn love.draw []
|
||||
(set-center-origin)
|
||||
(theme.white love.graphics.setBackgroundColor)
|
||||
(theme.black love.graphics.setColor)
|
||||
(draw-static-bg)
|
||||
(draw-canvases)
|
||||
(love.graphics.pop))
|
||||
|
||||
(fn love.keypressed [key]
|
||||
(match key
|
||||
"d" (tset app-state :mode "draw")
|
||||
"p" (tset app-state :mode "preview")))
|
||||
; (love.event.quit))
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
fennel = require("fennel")
|
||||
debug.traceback = fennel.traceback
|
||||
table.insert(package.loaders, function(filename)
|
||||
if love.filesystem.getInfo(filename) then
|
||||
return function(...)
|
||||
return fennel.eval(love.filesystem.read(filename), {env=_G, filename=filename}, ...), filename
|
||||
end
|
||||
end
|
||||
end)
|
||||
-- jump into Fennel
|
||||
require("main.fnl")
|
||||