init defold game
This commit is contained in:
parent
925d375313
commit
26e88c8f03
20 changed files with 381 additions and 9 deletions
|
|
@ -31,7 +31,8 @@
|
|||
(local height 15)
|
||||
(local player {
|
||||
:x 50 :y 50 :speed 80 :battery 100 :rot 0
|
||||
:vision-pts []
|
||||
:vision-pts [] ; the points that make a polygon around the player's cone of vision
|
||||
:vision-hitboxes [] ; the hitboxes that are visible to the player's cone of vision
|
||||
:hitbox [50 50 width height]
|
||||
:ever-moved false ; useful for inital update
|
||||
})
|
||||
|
|
@ -74,6 +75,7 @@
|
|||
(let [pts (self:cal-vision-points)
|
||||
(ox oy) (self:origin-pt)
|
||||
poly-pts [ox oy]
|
||||
visable-hitboxes []
|
||||
]
|
||||
(each [_ pt (ipairs pts)]
|
||||
(let [
|
||||
|
|
@ -81,12 +83,14 @@
|
|||
first-item (. items 1)]
|
||||
(if first-item
|
||||
(do
|
||||
(table.insert visable-hitboxes (. first-item :item))
|
||||
(table.insert poly-pts (. first-item :x1))
|
||||
(table.insert poly-pts (. first-item :y1)))
|
||||
(do
|
||||
(table.insert poly-pts (. pt 1))
|
||||
(table.insert poly-pts (. pt 2))))))
|
||||
(set self.vision-pts poly-pts)
|
||||
(set self.vision-hitboxes visable-hitboxes)
|
||||
))
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
camera
|
||||
walls
|
||||
fog-of-war
|
||||
radar
|
||||
; radar
|
||||
(hud {: screen})
|
||||
]
|
||||
})]
|
||||
|
|
|
|||
|
|
@ -7,7 +7,9 @@
|
|||
(local fow
|
||||
{
|
||||
:player-vision-pts []
|
||||
:player-pos [0 0]
|
||||
:player-vision-hitboxes []
|
||||
:player-pt [0 0]
|
||||
:player-origin-pt [0 0]
|
||||
:font nil
|
||||
:canvas nil
|
||||
:main-canvas nil
|
||||
|
|
@ -16,8 +18,11 @@
|
|||
(lambda fow.load [self]
|
||||
(set self.canvas (love.graphics.newCanvas 1000 1000))
|
||||
(beholder.observe "PLAYER.MOVED" (lambda [player]
|
||||
(set self.player-pos [player.x player.y])
|
||||
(set self.player-vision-pts player.vision-pts)))
|
||||
(let [(ox oy) (player:origin-pt)]
|
||||
(set self.player-origin-pt [ox oy]))
|
||||
(set self.player-pt [player.x player.y])
|
||||
(set self.player-vision-hitboxes player.vision-hitboxes)
|
||||
(set self.player-vision-pts player.vision-pts)))
|
||||
|
||||
(let [previousCanvas (love.graphics.getCanvas)]
|
||||
(love.graphics.setCanvas self.canvas)
|
||||
|
|
@ -35,19 +40,25 @@
|
|||
|
||||
|
||||
(lambda fow.draw15 [self]
|
||||
(let [
|
||||
previousBlendMode (love.graphics.getBlendMode)
|
||||
[x y] self.player-pos]
|
||||
(let [previousBlendMode (love.graphics.getBlendMode)]
|
||||
(love.graphics.setBlendMode "replace")
|
||||
(love.graphics.setColor 0 0 0 0) ; transparent
|
||||
(love.graphics.push)
|
||||
(love.graphics.translate (- x 3) (- y 7))
|
||||
(love.graphics.translate (unpack self.player-pt))
|
||||
(love.graphics.translate -3 -7)
|
||||
(love.graphics.polygon "fill" 3 11 3 17 7 21 17 21 21 17 21 11 17 7 7 7)
|
||||
(love.graphics.pop)
|
||||
; draw the vision cone
|
||||
(when (> (length self.player-vision-pts) 2)
|
||||
(love.graphics.polygon "fill" self.player-vision-pts))
|
||||
; draw the vision hitboxes
|
||||
(each [_ hitbox (pairs self.player-vision-hitboxes)]
|
||||
(love.graphics.rectangle "fill" hitbox.x hitbox.y hitbox.w hitbox.h))
|
||||
(love.graphics.setBlendMode previousBlendMode))
|
||||
|
||||
(color.set-color :white)
|
||||
(each [_ hitbox (pairs self.player-vision-hitboxes)]
|
||||
(love.graphics.rectangle "line" hitbox.x hitbox.y hitbox.w hitbox.h))
|
||||
(love.graphics.setCanvas self.main-canvas))
|
||||
|
||||
(lambda fow.draw80 [self]
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@
|
|||
(set self.debug-pt [tip-x tip-y])))
|
||||
|
||||
(lambda radar.draw11 [self]
|
||||
"Draw radar boxes"
|
||||
(color.set-color :light-pink)
|
||||
(each [_ box (pairs self.boxes)]
|
||||
(love.graphics.rectangle "line" box.x box.y box.w box.h)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue