summaryrefslogtreecommitdiff
path: root/objects/Player.lua
diff options
context:
space:
mode:
authorEltrac <hi@guhub.cn>2025-02-27 15:03:31 +0800
committerEltrac <hi@guhub.cn>2025-02-27 15:03:31 +0800
commit9800e47436233ee68db23b9a2c40aebaca2705d2 (patch)
tree7cd598e7b47470e69bd0cd20336426f250b0b75e /objects/Player.lua
parentc5e55465634c8d5cff6cd5ac705b4b833d928486 (diff)
refactor: make player an object
in order to separate player-related game logic and player state management
Diffstat (limited to 'objects/Player.lua')
-rw-r--r--objects/Player.lua25
1 files changed, 25 insertions, 0 deletions
diff --git a/objects/Player.lua b/objects/Player.lua
new file mode 100644
index 0000000..a8a7d7b
--- /dev/null
+++ b/objects/Player.lua
@@ -0,0 +1,25 @@
+Player = {}
+Player.__index = Player
+
+function Player.new()
+ local player = setmetatable({
+ x = love.graphics.getWidth() / 2,
+ y = love.graphics.getHeight() / 2,
+ body = Body:new("circle", 20),
+ speed = config.defaultPlayerSpeed,
+ shieldedTill = 0,
+ hearts = { "redheart", "redheart", "redheart", "shinyheart", "shinyheart" },
+ facing = Direction.DOWN,
+ moving = false,
+ }, Player)
+
+ return player
+end
+
+function Player:isShielded()
+ return self.shieldedTill >= G.time
+end
+
+function Player:isAlive()
+ return #self.hearts ~= 0
+end