move objects out of bg tiles
" Press any key to quit" 10 10))
This commit is contained in:
parent
32ea10495e
commit
bbbe7bfe8a
14 changed files with 400 additions and 89 deletions
|
|
@ -1,6 +1,7 @@
|
|||
;; deps
|
||||
(local levels (. (require "levels.fnl") :levels))
|
||||
(local bump (require "bump"))
|
||||
(local network (require "network.fnl"))
|
||||
|
||||
;; colors
|
||||
(lambda color [full-r full-g full-b]
|
||||
|
|
@ -28,6 +29,7 @@
|
|||
(love.graphics.setColor (unpack (. color-pallet color))))
|
||||
|
||||
;; global vars
|
||||
(var level-key "tutorial")
|
||||
(var player-art nil) ; 25x50 pixels each player is 25x25
|
||||
(var dust-sprite nil) ; 35x35 pixels
|
||||
(var battery-bar-sprite nil)
|
||||
|
|
@ -59,24 +61,24 @@
|
|||
(lambda add-collider-debug-box [x y w h]
|
||||
(table.insert collider-debug-boxes {: x : y :width w :height h}))
|
||||
|
||||
(local bump-world (bump.newWorld 25))
|
||||
(var bump-world nil)
|
||||
(local player { :x 50 :y 50 :w 25 :h 25 :speed 80 :battery 100 :rot 0 })
|
||||
|
||||
(fn load-walls []
|
||||
(set walls.sprite (love.graphics.newImage "assets/walls.png"))
|
||||
(set walls.batch (love.graphics.newSpriteBatch walls.sprite 2500))
|
||||
;; load quads
|
||||
(let [(w h) (walls.sprite:getDimensions)]
|
||||
(for [i 0 19 1]
|
||||
(table.insert walls.quads (love.graphics.newQuad (* i 25) 0 25 25 w h))))
|
||||
;; fill batch
|
||||
(each [_ row (pairs (. levels :level01 :tiles))]
|
||||
;;
|
||||
(each [_ row (pairs (. levels :levels level-key :tiles))]
|
||||
(each [_ tile (pairs row)]
|
||||
(let [
|
||||
x tile.x
|
||||
y tile.y
|
||||
id tile.tile-id
|
||||
colliders (or (. levels.level01.wall-colliders (- id 1)) [])]
|
||||
colliders tile.colliders]
|
||||
(if (and (> id 0) (< id 21)) ;; 1-20 are wall tiles
|
||||
(do
|
||||
; (print (fennel.view {:quad (. walls.quads id) : x : y : id}))
|
||||
|
|
@ -122,13 +124,12 @@
|
|||
(table.insert objects.list station)))
|
||||
|
||||
(fn load-objects []
|
||||
(set objects.sprite (love.graphics.newImage "assets/objects.png"))
|
||||
(let [(w h) (objects.sprite:getDimensions)]
|
||||
(set objects.quads.charging-pad (love.graphics.newQuad 0 0 25 25 w h))
|
||||
(set objects.quads.charging-pad-active (love.graphics.newQuad 50 0 25 25 w h))
|
||||
(set objects.quads.charging-station (love.graphics.newQuad 25 0 25 25 w h)))
|
||||
|
||||
(each [_ row (pairs (. levels :level01 :tiles))]
|
||||
(each [_ row (pairs (. levels :levels level-key :tiles))]
|
||||
(each [_ tile (pairs row)]
|
||||
(let [
|
||||
x tile.x
|
||||
|
|
@ -137,18 +138,24 @@
|
|||
(when (> id 20) ;; 21+ are object tiles
|
||||
(when (= id 22) (create-charging-station x y)))))))
|
||||
|
||||
(fn load-player []
|
||||
(set player.battery 100)
|
||||
(set player.x (. levels :levels level-key :spawns :player-1 :x))
|
||||
(set player.y (. levels :levels level-key :spawns :player-1 :y))
|
||||
(bump-world:add player player.x player.y player.w player.h))
|
||||
|
||||
(fn love.load []
|
||||
(love.window.setMode screen.screen-w screen.screen-h)
|
||||
(tset screen :canvas (love.graphics.newCanvas screen.canvas-w screen.canvas-h))
|
||||
(bump-world:add player player.x player.y player.w player.h)
|
||||
|
||||
(lambda load-level [lvl-name]
|
||||
(set bump-world (bump.newWorld 25))
|
||||
(set level-key :tutorial)
|
||||
;; set player 1 location
|
||||
(load-player)
|
||||
(load-walls)
|
||||
(load-objects)
|
||||
(load-objects))
|
||||
|
||||
;; load world images
|
||||
(fn load-assets []
|
||||
(set objects.sprite (love.graphics.newImage "assets/objects.png"))
|
||||
(set walls.sprite (love.graphics.newImage "assets/walls.png"))
|
||||
(set battery-bar-sprite (love.graphics.newImage "assets/battery_bar.png"))
|
||||
|
||||
(set player-art
|
||||
(let [
|
||||
player-sprite (love.graphics.newImage "assets/player.png")
|
||||
|
|
@ -169,9 +176,18 @@
|
|||
}
|
||||
}
|
||||
))
|
||||
)
|
||||
|
||||
|
||||
(fn love.load []
|
||||
(love.window.setMode screen.screen-w screen.screen-h)
|
||||
(tset screen :canvas (love.graphics.newCanvas screen.canvas-w screen.canvas-h))
|
||||
(load-assets)
|
||||
(load-level :tutorial)
|
||||
;; Initialize network
|
||||
(network.init)
|
||||
(network.send-msg "REGISTER")
|
||||
|
||||
(set dust-sprite (love.graphics.newImage "assets/dust_001.png"))
|
||||
; (print (fennel.view game-state))
|
||||
;; start a thread listening on stdin
|
||||
(: (love.thread.newThread "require('love.event')
|
||||
while 1 do love.event.push('stdin', io.read('*line')) end") :start))
|
||||
|
|
@ -182,7 +198,6 @@ while 1 do love.event.push('stdin', io.read('*line')) end") :start))
|
|||
(print (if ok (fennel.view val) val))))
|
||||
|
||||
;; drawing
|
||||
|
||||
(fn draw-world []
|
||||
(reset-color)
|
||||
(love.graphics.draw walls.batch)
|
||||
|
|
@ -228,7 +243,15 @@ while 1 do love.event.push('stdin', io.read('*line')) end") :start))
|
|||
(let
|
||||
[(items len) (bump-world:queryRect player.x player.y 25 25 #(= $1.behavior "hover"))]
|
||||
(each [_ item (pairs items)]
|
||||
(item:hover-cb dt))))
|
||||
(item:hover-cb dt)))
|
||||
|
||||
;; Network updates
|
||||
(network.update dt))
|
||||
; (set net-state.net-update-timer (+ net-state.net-update-timer dt))
|
||||
; (when (>= net-state.net-update-timer net-state.net-update-interval)
|
||||
; (when net-state.connected
|
||||
; (network.send-update player.x player.y player.rot player.battery))
|
||||
; (set net-state.net-update-timer 0)))
|
||||
|
||||
(fn draw-ui []
|
||||
(love.graphics.push)
|
||||
|
|
@ -313,3 +336,8 @@ while 1 do love.event.push('stdin', io.read('*line')) end") :start))
|
|||
; (love.graphics.print "Hello from Fennel!\nPress any key to quit" 10 10))
|
||||
|
||||
(fn love.keypressed [key] nil )
|
||||
|
||||
(fn love.quit []
|
||||
"Clean up before game closes"
|
||||
(network.close)
|
||||
false)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue