restructure toward ecs
This commit is contained in:
parent
842a9899ca
commit
e7197f93fc
7 changed files with 120 additions and 90 deletions
|
|
@ -2,36 +2,15 @@
|
||||||
(local levels (. (require "levels.fnl") :levels))
|
(local levels (. (require "levels.fnl") :levels))
|
||||||
(local bump (require "libs/bump"))
|
(local bump (require "libs/bump"))
|
||||||
(local tiny (require "libs/tiny"))
|
(local tiny (require "libs/tiny"))
|
||||||
(local assets (require "assets.fnl"))
|
(local assets (require "src/assets.fnl"))
|
||||||
|
(local utils (require "src/utils.fnl"))
|
||||||
|
(local colors (require "src/colors.fnl"))
|
||||||
|
(local tutorial (require "src/levels/tutorial.fnl"))
|
||||||
|
|
||||||
(lambda debug-print [obj]
|
; (utils.debug-print assets)
|
||||||
(print (fennel.view obj)))
|
|
||||||
(debug-print assets)
|
|
||||||
; (local network (require "network.fnl"))
|
; (local network (require "network.fnl"))
|
||||||
|
|
||||||
;; colors
|
(var world nil)
|
||||||
; (lambda color [full-r full-g full-b]
|
|
||||||
; (let [(r g b) (love.math.colorFromBytes full-r full-g full-b)]
|
|
||||||
; [r g b]
|
|
||||||
; ))
|
|
||||||
; (local color-pallet {
|
|
||||||
; :cream (color 255 238 204)
|
|
||||||
; :dark-purple (color 70 66 94)
|
|
||||||
; :dark-pink (color 255 105 115)
|
|
||||||
; :dark-blue (color 21 120 140)
|
|
||||||
; :light-blue (color 0 185 190)
|
|
||||||
; :light-pink (color 255 176 163)
|
|
||||||
; :black [0 0 0]
|
|
||||||
; :black-half-tone [0 0 0 0.25]
|
|
||||||
; })
|
|
||||||
|
|
||||||
; (fn reset-color []
|
|
||||||
; "reset color to white (no tinting)"
|
|
||||||
; (love.graphics.setColor 1 1 1))
|
|
||||||
|
|
||||||
; (lambda set-color [color]
|
|
||||||
; "set color to the given color from the color pallet"
|
|
||||||
; (love.graphics.setColor (unpack (. color-pallet color))))
|
|
||||||
|
|
||||||
;; global vars
|
;; global vars
|
||||||
; (var level-key "tutorial")
|
; (var level-key "tutorial")
|
||||||
|
|
@ -49,16 +28,14 @@
|
||||||
; :list []
|
; :list []
|
||||||
; })
|
; })
|
||||||
|
|
||||||
; (local screen
|
(local screen
|
||||||
; (let [scale 2 canvas-w 800 canvas-h 450]
|
(let [scale 2 canvas-w 800 canvas-h 450]
|
||||||
; { :screen-w (* canvas-w scale)
|
{ :screen-w (* canvas-w scale)
|
||||||
; :screen-h (* canvas-h scale)
|
:screen-h (* canvas-h scale)
|
||||||
; :canvas-w canvas-w
|
:canvas-w canvas-w
|
||||||
; :canvas-h canvas-h
|
:canvas-h canvas-h
|
||||||
; :scale scale
|
:scale scale}))
|
||||||
; :canvas nil}))
|
(local debug true)
|
||||||
; (local camera {:x 0 :y 0})
|
|
||||||
; (local debug true)
|
|
||||||
|
|
||||||
; (local collider-debug-boxes [])
|
; (local collider-debug-boxes [])
|
||||||
; (lambda add-collider-debug-box [x y w h]
|
; (lambda add-collider-debug-box [x y w h]
|
||||||
|
|
@ -194,18 +171,20 @@
|
||||||
; )
|
; )
|
||||||
|
|
||||||
|
|
||||||
; (fn love.load []
|
(fn love.load []
|
||||||
; (love.window.setMode screen.screen-w screen.screen-h)
|
(love.window.setMode screen.screen-w screen.screen-h)
|
||||||
; (tset screen :canvas (love.graphics.newCanvas screen.canvas-w screen.canvas-h))
|
; (tset screen :canvas (love.graphics.newCanvas screen.canvas-w screen.canvas-h))
|
||||||
|
(set world (tutorial.load screen))
|
||||||
|
(utils.debug-print world)
|
||||||
; (load-assets)
|
; (load-assets)
|
||||||
; (load-level :tutorial)
|
; (load-level :tutorial)
|
||||||
; ;; Initialize network
|
;; Initialize network
|
||||||
; (network.init)
|
; (network.init)
|
||||||
; (network.send-msg "REGISTER")
|
; (network.send-msg "REGISTER")
|
||||||
|
|
||||||
; ;; start a thread listening on stdin
|
;; start a thread listening on stdin
|
||||||
; (: (love.thread.newThread "require('love.event')
|
(: (love.thread.newThread "require('love.event')
|
||||||
; while 1 do love.event.push('stdin', io.read('*line')) end") :start))
|
while 1 do love.event.push('stdin', io.read('*line')) end") :start))
|
||||||
|
|
||||||
(fn love.handlers.stdin [line]
|
(fn love.handlers.stdin [line]
|
||||||
;; evaluate lines read from stdin as fennel code
|
;; evaluate lines read from stdin as fennel code
|
||||||
|
|
@ -223,7 +202,10 @@
|
||||||
; (love.graphics.rectangle "line" collider.x collider.y collider.width collider.height))))
|
; (love.graphics.rectangle "line" collider.x collider.y collider.width collider.height))))
|
||||||
|
|
||||||
|
|
||||||
(fn love.update [dt] nil)
|
(fn love.update [dt]
|
||||||
|
(let [filter (tiny.requireAll :update)]
|
||||||
|
; (utils.debug-print filter)
|
||||||
|
(tiny.update world dt filter)))
|
||||||
|
|
||||||
; (fn love.update [dt]
|
; (fn love.update [dt]
|
||||||
; (each [_ obj (pairs objects.list)]
|
; (each [_ obj (pairs objects.list)]
|
||||||
|
|
@ -335,7 +317,11 @@
|
||||||
; ; (print (fennel.view obj))
|
; ; (print (fennel.view obj))
|
||||||
; (obj:draw)))
|
; (obj:draw)))
|
||||||
|
|
||||||
(fn love.draw [] nil)
|
(fn love.draw [dt]
|
||||||
|
(tiny.update world dt (tiny.requireAll :pre-draw))
|
||||||
|
(tiny.update world dt (tiny.requireAll :draw))
|
||||||
|
; (world:update dt (tiny.requireAll "post-draw"))
|
||||||
|
)
|
||||||
; (fn love.draw []
|
; (fn love.draw []
|
||||||
; (love.graphics.setCanvas screen.canvas)
|
; (love.graphics.setCanvas screen.canvas)
|
||||||
; (love.graphics.clear)
|
; (love.graphics.clear)
|
||||||
|
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
(local name "travis")
|
|
||||||
|
|
||||||
(local levels [
|
|
||||||
{:image-path "assets/level_002.png" :player-start [10 19] :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
|
|
||||||
}
|
|
||||||
|
|
@ -6,7 +6,4 @@
|
||||||
(set assets.battery-bar-sprite (love.graphics.newImage "assets/battery_bar.png"))
|
(set assets.battery-bar-sprite (love.graphics.newImage "assets/battery_bar.png"))
|
||||||
(set assets.player-sprite (love.graphics.newImage "assets/player.png"))
|
(set assets.player-sprite (love.graphics.newImage "assets/player.png"))
|
||||||
|
|
||||||
|
assets
|
||||||
{
|
|
||||||
: assets
|
|
||||||
}
|
|
||||||
30
two_player_cleaning_game/src/colors.fnl
Normal file
30
two_player_cleaning_game/src/colors.fnl
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
;; colors
|
||||||
|
(lambda color [full-r full-g full-b]
|
||||||
|
(let [(r g b) (love.math.colorFromBytes full-r full-g full-b)]
|
||||||
|
[r g b]
|
||||||
|
))
|
||||||
|
|
||||||
|
(local colors {
|
||||||
|
:cream (color 255 238 204)
|
||||||
|
:dark-purple (color 70 66 94)
|
||||||
|
:dark-pink (color 255 105 115)
|
||||||
|
:dark-blue (color 21 120 140)
|
||||||
|
:light-blue (color 0 185 190)
|
||||||
|
:light-pink (color 255 176 163)
|
||||||
|
:black [0 0 0]
|
||||||
|
:black-half-tone [0 0 0 0.25]
|
||||||
|
})
|
||||||
|
|
||||||
|
(fn reset-color []
|
||||||
|
"reset color to white (no tinting)"
|
||||||
|
(love.graphics.setColor 1 1 1))
|
||||||
|
|
||||||
|
(lambda set-color [color]
|
||||||
|
"set color to the given color from the color pallet"
|
||||||
|
(love.graphics.setColor (unpack (. colors color))))
|
||||||
|
|
||||||
|
{
|
||||||
|
:reset-color reset-color
|
||||||
|
:set-color set-color
|
||||||
|
: colors
|
||||||
|
}
|
||||||
47
two_player_cleaning_game/src/levels/tutorial.fnl
Normal file
47
two_player_cleaning_game/src/levels/tutorial.fnl
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
(local color (require "src/colors.fnl"))
|
||||||
|
(local tiny (require "libs/tiny"))
|
||||||
|
(local utils (require "src/utils.fnl"))
|
||||||
|
|
||||||
|
(local level {})
|
||||||
|
|
||||||
|
|
||||||
|
; function HudSystem:init(layerFlag)
|
||||||
|
; self.filter = tiny.requireAll("drawHud", layerFlag)
|
||||||
|
; end
|
||||||
|
|
||||||
|
; function HudSystem:process(e, dt)
|
||||||
|
; e:drawHud(dt)
|
||||||
|
; end
|
||||||
|
(fn bg-render [screen]
|
||||||
|
(let [system (tiny.system {: screen})]
|
||||||
|
(fn system.draw [self]
|
||||||
|
(print "Drawing BG")
|
||||||
|
(color.set-color color.colors.cream)
|
||||||
|
(love.graphics.rectangle "fill" 0 0 self.screen.canvas-w self.screen.canvas-h))
|
||||||
|
(utils.debug-print system)
|
||||||
|
system
|
||||||
|
))
|
||||||
|
|
||||||
|
(local root-render (tiny.system))
|
||||||
|
(fn root-render.pre-draw [self]
|
||||||
|
(print "Pre-drawing root")
|
||||||
|
; use canvas
|
||||||
|
(love.graphics.setCanvas level.canvas)
|
||||||
|
; clear the screen
|
||||||
|
(love.graphics.clear))
|
||||||
|
|
||||||
|
|
||||||
|
(local camera {:x 0 :y 0})
|
||||||
|
|
||||||
|
(local debug true)
|
||||||
|
|
||||||
|
(fn load [screen]
|
||||||
|
(set level.canvas (love.graphics.newCanvas screen.canvas-w screen.canvas-h))
|
||||||
|
(tiny.world
|
||||||
|
root-render
|
||||||
|
(bg-render screen)))
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
: load
|
||||||
|
}
|
||||||
6
two_player_cleaning_game/src/utils.fnl
Normal file
6
two_player_cleaning_game/src/utils.fnl
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
(lambda debug-print [obj]
|
||||||
|
(print (fennel.view obj)))
|
||||||
|
|
||||||
|
{
|
||||||
|
: debug-print
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue