36 lines
922 B
Fennel
36 lines
922 B
Fennel
(local name "travis")
|
|
|
|
(local levels [
|
|
{:image-path "assets/level_002.png" :walls []}
|
|
])
|
|
|
|
; "20 x 20 array with the outter edge set to 1 (walls) and the inner edge set to 0 (floor)"
|
|
(local empty-level
|
|
(let [level []]
|
|
(for [y 0 19 1] (table.insert level [])) ; empty rows
|
|
(each [y row (ipairs level)]
|
|
(for [x 0 19 1] (table.insert row 0)))
|
|
level
|
|
)
|
|
)
|
|
|
|
(lambda load-walls [level]
|
|
(let [image-data (love.image.newImageData (. level :image-path))]
|
|
(each [y row (ipairs (. level :walls))]
|
|
(each [x wall (ipairs row)]
|
|
(let [(r g b) (image-data:getPixel (- x 1) (- y 1))]
|
|
; (print (.. x "," y " -> " r "," g "," b))
|
|
(tset row x (if (= (.. r g b) "111") 0 1)))))))
|
|
|
|
(fn load []
|
|
"load levels"
|
|
(each [_ level (pairs levels)]
|
|
(tset level :walls empty-level)
|
|
(load-walls level))
|
|
; (print (fennel.view levels))
|
|
)
|
|
|
|
{
|
|
:load load
|
|
:levels levels
|
|
}
|