From fd986f6b30b1d8f52f3df05a57ff40293ef15488 Mon Sep 17 00:00:00 2001 From: Kazhnuz Date: Mon, 17 Jun 2019 12:16:32 +0200 Subject: [PATCH] refactor(levels): let the player manage itself its HUD --- .../scenes/levels/entities/player.lua | 43 +++++++++++++++++++ .../scenes/levels/players.lua | 29 +------------ 2 files changed, 44 insertions(+), 28 deletions(-) diff --git a/imperium-porcorum.love/scenes/levels/entities/player.lua b/imperium-porcorum.love/scenes/levels/entities/player.lua index ff595cc..50f5e58 100644 --- a/imperium-porcorum.love/scenes/levels/entities/player.lua +++ b/imperium-porcorum.love/scenes/levels/entities/player.lua @@ -25,6 +25,7 @@ function Player:new(world, x, y, playerID) self:lifeInit() self:initWeapon() self:initStats() + self:initHUD() self.currentWeapon = 1 @@ -224,6 +225,48 @@ self:setSpriteScallingX(self.direction) end end +-- HUD FUNCTIONS +-- All functions related to the HUD + +function Player:initHUD() + local mediumfont, smallfont + mediumfont = self.scene.assets.fonts["medium"] + smallfont = self.scene.assets.fonts["small"] + self.hpbar = game.gui.newProgressBar("greenbar", mediumfont, smallfont, "HP", 96) + self.mpbar = game.gui.newProgressBar("bluebar", mediumfont, smallfont, "MP", 96) + + self.itembox = game.gui.newTextBox("assets/sprites/gui/textbox/yellowbox.png", 24,24) +end + +function Player:drawHUD() + utils.graphics.resetColor() + local hp = 0 + local mp = 0 + local weapon = 0 + love.graphics.draw(self.itembox, 16, 16) + + if (true) then + hp = self.hp / self.stats.maxHP + mp = self.mp / self.stats.maxMP + weapon = self.weapon + end + + if (weapon ~= 0) and (weapon ~= nil) then + self.scene.assets.tileset["weapon"]:drawTile(weapon,28,28,0,1,1,8,8) + end + + self.hpbar:draw(68, 14, hp) + self.mpbar:draw(68, 30, mp) + + self.scene.assets.fonts["medium"]:set() + + love.graphics.printf( utils.math.numberToString(self.manager.score, 6), 373, 10, 96, "right") + love.graphics.printf( utils.math.numberToString(self.manager.gold, 4), 373, 25, 96-18, "right") + love.graphics.setColor(1, 1, 85/256) + love.graphics.printf( "G", 373, 25, 96, "right") + utils.graphics.resetColor() +end + -- DEATH and HIT functions -- All function related to damage management diff --git a/imperium-porcorum.love/scenes/levels/players.lua b/imperium-porcorum.love/scenes/levels/players.lua index c8e6427..ed3dfbb 100644 --- a/imperium-porcorum.love/scenes/levels/players.lua +++ b/imperium-porcorum.love/scenes/levels/players.lua @@ -11,13 +11,6 @@ function PlayerManager:new(scene) self.itemList = {} self.score = 0 self.gold = 0 - local mediumfont, smallfont - mediumfont = self.scene.assets.fonts["medium"] - smallfont = self.scene.assets.fonts["small"] - self.hpbar = game.gui.newProgressBar("greenbar", mediumfont, smallfont, "HP", 96) - self.mpbar = game.gui.newProgressBar("bluebar", mediumfont, smallfont, "MP", 96) - - self.itembox = game.gui.newTextBox("assets/sprites/gui/textbox/yellowbox.png", 24,24) end -- PLAYER FUNCTIONS @@ -106,32 +99,12 @@ end -- Functions made to draw the HUD function PlayerManager:drawHUD(dt) - utils.graphics.resetColor() - local hp = 0 - local mp = 0 - local weapon = 0 - love.graphics.draw(self.itembox, 16, 16) if self:playerHaveObject(1) then local player = self:getPlayerByID(1) - hp = player.hp / player.stats.maxHP - mp = player.mp / player.stats.maxMP - weapon = player.weapon + player:drawHUD() end - if (weapon ~= 0) and (weapon ~= nil) then - self.scene.assets.tileset["weapon"]:drawTile(weapon,28,28,0,1,1,8,8) - end - self.hpbar:draw(68, 14, hp) - self.mpbar:draw(68, 30, mp) - - self.scene.assets.fonts["medium"]:set() - - love.graphics.printf( utils.math.numberToString(self.score, 6), 373, 10, 96, "right") - love.graphics.printf( utils.math.numberToString(self.gold, 4), 373, 25, 96-18, "right") - love.graphics.setColor(1, 1, 85/256) - love.graphics.printf( "G", 373, 25, 96, "right") - utils.graphics.resetColor() end return PlayerManager