diff --git a/two_player_cleaning_game/.DS_Store b/two_player_cleaning_game/.DS_Store index ee089d4..3488215 100644 Binary files a/two_player_cleaning_game/.DS_Store and b/two_player_cleaning_game/.DS_Store differ diff --git a/two_player_cleaning_game/main.fnl b/two_player_cleaning_game/main.fnl index 1b7e742..e7ce215 100644 --- a/two_player_cleaning_game/main.fnl +++ b/two_player_cleaning_game/main.fnl @@ -1,11 +1,16 @@ +(local map-util (require "map-util.fnl")) + (var player-sprite nil) ; 20x20 pixels (local game-state { :player-pos [0 0] }) + (fn love.load [] + (map-util:load) (love.window.setMode 600 640) + (set player-sprite (love.graphics.newImage "assets/player_001.png")) ;; start a thread listening on stdin (: (love.thread.newThread "require('love.event') diff --git a/two_player_cleaning_game/map-util.fnl b/two_player_cleaning_game/map-util.fnl new file mode 100644 index 0000000..2c5aaf0 --- /dev/null +++ b/two_player_cleaning_game/map-util.fnl @@ -0,0 +1,36 @@ +(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 +}