(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 }