get player rendering
This commit is contained in:
parent
c4c33e4726
commit
c577295c3e
3 changed files with 51 additions and 27 deletions
|
|
@ -175,7 +175,9 @@
|
|||
(love.window.setMode screen.screen-w screen.screen-h)
|
||||
; (tset screen :canvas (love.graphics.newCanvas screen.canvas-w screen.canvas-h))
|
||||
(set pool (tutorial.load screen))
|
||||
(pool:flush)
|
||||
(pool:emit :load :tutorial)
|
||||
; (utils.debug-print pool)
|
||||
; (utils.debug-print world)
|
||||
; (load-assets)
|
||||
; (load-level :tutorial)
|
||||
|
|
@ -299,9 +301,10 @@ while 1 do love.event.push('stdin', io.read('*line')) end") :start))
|
|||
; (obj:draw)))
|
||||
|
||||
(fn love.draw []
|
||||
(pool:emit :pre-draw)
|
||||
(pool:emit :draw)
|
||||
(pool:emit :post-draw))
|
||||
(for [i 1 99 1]
|
||||
(let [draw-trigger (.. "draw" i)]
|
||||
(pool:emit draw-trigger))))
|
||||
|
||||
; (fn love.draw []
|
||||
; (love.graphics.setCanvas screen.canvas)
|
||||
; (love.graphics.clear)
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
(local beholder (require "libs/beholder"))
|
||||
(local colors (require "src/colors.fnl"))
|
||||
(local levels (require "levels.fnl"))
|
||||
(local assets (require "src/assets.fnl"))
|
||||
|
|
@ -16,6 +17,10 @@
|
|||
(. directions (+ (% section 8) 1)))
|
||||
|
||||
(local player { :x 50 :y 50 :w 25 :h 25 :speed 80 :battery 100 :rot 0 })
|
||||
|
||||
(fn player.update [self dt]
|
||||
(beholder.trigger "PLAYER.POS" self.x self.y))
|
||||
|
||||
(fn player.load [self level-key]
|
||||
(set self.battery 100)
|
||||
(set self.x (. levels :levels level-key :spawns :player-1 :x))
|
||||
|
|
@ -36,7 +41,7 @@
|
|||
}))
|
||||
)
|
||||
|
||||
(fn player.draw [self state]
|
||||
(fn player.draw50 [self]
|
||||
"draw player sprite and hitbox"
|
||||
(colors:reset-color)
|
||||
(love.graphics.draw
|
||||
|
|
@ -44,15 +49,16 @@
|
|||
(. self.quads (angle-to-direction player.rot))
|
||||
self.x self.y)
|
||||
;; draw player hitbox and direction line
|
||||
(when state.debug
|
||||
(colors:set-color :black)
|
||||
(love.graphics.rectangle "line" self.x self.y self.w self.h)
|
||||
(love.graphics.push)
|
||||
(let [ox (+ self.x (/ 25 2)) oy (+ self.y (/ 25 2))]
|
||||
(love.graphics.translate ox oy)
|
||||
(love.graphics.rotate self.rot)
|
||||
(love.graphics.line 0 0 35 0))
|
||||
(love.graphics.pop)))
|
||||
; (when state.debug
|
||||
; (colors:set-color :black)
|
||||
; (love.graphics.rectangle "line" self.x self.y self.w self.h)
|
||||
; (love.graphics.push)
|
||||
; (let [ox (+ self.x (/ 25 2)) oy (+ self.y (/ 25 2))]
|
||||
; (love.graphics.translate ox oy)
|
||||
; (love.graphics.rotate self.rot)
|
||||
; (love.graphics.line 0 0 35 0))
|
||||
; (love.graphics.pop))
|
||||
)
|
||||
|
||||
|
||||
player
|
||||
|
|
|
|||
|
|
@ -7,22 +7,34 @@
|
|||
|
||||
(lambda gen-renderer [screen canvas]
|
||||
(let [renderer {}]
|
||||
(fn renderer.draw [self]
|
||||
(color.set-color :cream)
|
||||
(love.graphics.rectangle "fill" 0 0 screen.canvas-w screen.canvas-h))
|
||||
(fn renderer.post-draw [self]
|
||||
(love.graphics.setCanvas)
|
||||
(fn renderer.draw99 [self]
|
||||
; (print "draw99 drawing canvas to screen")
|
||||
(love.graphics.pop) ; undo camera translation
|
||||
(love.graphics.setCanvas) ; reset to root canvas
|
||||
(color:reset-color)
|
||||
(love.graphics.draw canvas 0 0 0 screen.scale screen.scale))
|
||||
(fn renderer.pre-draw [self]
|
||||
(fn renderer.draw1 [self]
|
||||
; use canvas
|
||||
(love.graphics.setCanvas canvas)
|
||||
; clear the screen
|
||||
(love.graphics.clear))
|
||||
(love.graphics.clear)
|
||||
(color.set-color :cream)
|
||||
(love.graphics.rectangle "fill" 0 0 screen.canvas-w screen.canvas-h))
|
||||
renderer))
|
||||
|
||||
(lambda gen-camera [screen]
|
||||
(let [camera {:x 0 :y 0}]
|
||||
(fn camera.draw2 [self]
|
||||
(love.graphics.push)
|
||||
(love.graphics.translate (* -1 self.x) (* -1 self.y)))
|
||||
(fn camera.load [self]
|
||||
(beholder.observe "PLAYER.POS" (lambda [x y]
|
||||
;; Update camera to follow player (keep player centered on screen)
|
||||
(set self.x (- x (/ screen.canvas-w 2)))
|
||||
(set self.y (- y (/ screen.canvas-h 2))))))
|
||||
camera
|
||||
))
|
||||
|
||||
; (local camera {:x 0 :y 0})
|
||||
; (local debug true)
|
||||
|
||||
(fn load [screen]
|
||||
|
|
@ -31,13 +43,16 @@
|
|||
pool (nata.new {
|
||||
; :groups {
|
||||
; gravity = {filter = {'gravity'}},
|
||||
; },
|
||||
:systems [
|
||||
(gen-renderer screen canvas)
|
||||
]})]
|
||||
; :post-draw {:filter [:post-draw]}
|
||||
; }
|
||||
; :systems [
|
||||
; (gen-camera screen)
|
||||
; ]
|
||||
})]
|
||||
(pool:queue (gen-renderer screen canvas))
|
||||
(pool:queue player)
|
||||
pool
|
||||
))
|
||||
(pool:queue (gen-camera screen))
|
||||
pool))
|
||||
|
||||
{
|
||||
: load
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue