init defold game

This commit is contained in:
Travis Shears 2026-05-10 17:03:18 +02:00
parent 925d375313
commit 26e88c8f03
Signed by: travisshears
GPG key ID: CB9BF1910F3F7469
20 changed files with 381 additions and 9 deletions

View file

@ -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)
))

View file

@ -61,7 +61,7 @@
camera
walls
fog-of-war
radar
; radar
(hud {: screen})
]
})]

View file

@ -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]

View file

@ -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)