49 lines
2.1 KiB
Lua
49 lines
2.1 KiB
Lua
Class = require 'hump/class'
|
|
require 'settings'
|
|
require 'utils'
|
|
|
|
local SCOREBOARD_FONT = love.graphics.newFont(16)
|
|
|
|
Scoreboard = Class{
|
|
init = function(self, x, y, getPlayer)
|
|
self.getPlayer = getPlayer
|
|
self.x = x
|
|
self.y = y
|
|
end;
|
|
|
|
draw = function(self)
|
|
local player = self.getPlayer()
|
|
if player.plane == nil then
|
|
return
|
|
end
|
|
|
|
local origWidth = love.graphics.getLineWidth()
|
|
|
|
love.graphics.setFont(SCOREBOARD_FONT)
|
|
love.graphics.setColor(128, 57, 75, 255)
|
|
love.graphics.setLineWidth(3)
|
|
love.graphics.rectangle("line", self.x, self.y, SCOREBOARD_WIDTH, SCOREBOARD_HEIGHT)
|
|
|
|
love.graphics.print(player.name, self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN)
|
|
love.graphics.print("Score", self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN + 20)
|
|
love.graphics.printf(player.score, self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN + 20, SCOREBOARD_WIDTH - 2 * SCOREBOARD_MARGIN, "right")
|
|
|
|
love.graphics.setLineWidth(origWidth)
|
|
|
|
local health_ratio = player.plane.health / PLANE_HEALTH
|
|
local start_color = {0, 255, 0}
|
|
local end_color = {255, 0, 0}
|
|
love.graphics.setColor(colorSlide(start_color, end_color, health_ratio))
|
|
love.graphics.rectangle("fill", self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN + 45, (SCOREBOARD_WIDTH - 2 * SCOREBOARD_MARGIN) * health_ratio, 20)
|
|
love.graphics.setColor({0, 0, 0, 255})
|
|
love.graphics.print("Health", self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN + 45)
|
|
|
|
local engine_ratio = player.plane.motorPower / ENGINE_MAX
|
|
local start_color = {0, 255, 0}
|
|
local end_color = {255, 0, 0}
|
|
love.graphics.setColor(colorSlide(start_color, end_color, engine_ratio))
|
|
love.graphics.rectangle("fill", self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN + 70, (SCOREBOARD_WIDTH - 2 * SCOREBOARD_MARGIN) * engine_ratio, 20)
|
|
love.graphics.setColor({0, 0, 0, 255})
|
|
love.graphics.print("Engine", self.x + SCOREBOARD_MARGIN, self.y + SCOREBOARD_MARGIN + 70)
|
|
end;
|
|
}
|