summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEltrac <hi@guhub.cn>2025-03-13 14:04:56 +0800
committerEltrac <hi@guhub.cn>2025-03-13 14:04:56 +0800
commit5eb2eb9d6986bdd30c5f0cf65f7f08f96ce40d09 (patch)
treefba255be7c2bbd97b1eabf8e5fc60d28359c715c
parentc6e86ae57442b665d138bdb8bdbd2f7bbd9f5520 (diff)
feat: pokob show different appearances in each health state
-rw-r--r--objects/Enemy.lua1
-rw-r--r--render/draws/objects.lua18
2 files changed, 15 insertions, 4 deletions
diff --git a/objects/Enemy.lua b/objects/Enemy.lua
index 6bb3fce..5ee8793 100644
--- a/objects/Enemy.lua
+++ b/objects/Enemy.lua
@@ -20,6 +20,7 @@ function Enemy:new(name, location)
zoom = data.zoom or 1,
speed = data.speed or nil,
health = data.health or nil,
+ maxHealth = data.health or nil,
stunned = false,
frameTimer = FrameTimer:new(config.frameRate,
(data.sprite and data.sprite.totalFrames) or 1),
diff --git a/render/draws/objects.lua b/render/draws/objects.lua
index 1699077..fea8e63 100644
--- a/render/draws/objects.lua
+++ b/render/draws/objects.lua
@@ -38,9 +38,6 @@ function draws.enemies()
for _, enemy in pairs(G.currentRoom.objects.enemies) do
local data = enemyData[enemy.type]
if data.sprite then
- -- show enemy size
-
-
-- add filter to indicate enemy status
if enemy.stunned then
love.graphics.setColor({1,0.7,0.5})
@@ -48,8 +45,21 @@ function draws.enemies()
love.graphics.setColor({0.5,0.5,0.5})
end
- -- draw sprite
+ -- handle quad index
local index = data.sprite.frames[enemy:facing()][enemy.frameTimer.currentFrame]
+ if enemy.type == "pokob" then
+ -- pokob has different appearances in different health states
+ local healthRatio = enemy.health / enemy.maxHealth
+ local breakpoints = { 0.75, 0.5, 0.25, 0 }
+ for i, breakpoint in ipairs(breakpoints) do
+ if healthRatio >= breakpoint then
+ index = index + (i-1) * 12
+ break
+ end
+ end
+ end
+
+ -- draw sprite
local r = enemy.r
local graphicR = r * enemy.zoom
local x, y = enemy.x - r, enemy.y - r