forked from hawkthorne/hawkthorne-journey
-
Notifications
You must be signed in to change notification settings - Fork 0
/
hud.lua
75 lines (57 loc) · 2.41 KB
/
hud.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
local window = require 'window'
local camera = require 'camera'
local fonts = require 'fonts'
local HUD = {}
HUD.__index = HUD
local lens = love.graphics.newImage('images/hud_lens.png')
local chevron = love.graphics.newImage('images/hud_chevron.png')
local energy = love.graphics.newImage('images/hud_energy.png')
lens:setFilter('nearest', 'nearest')
chevron:setFilter('nearest', 'nearest')
energy:setFilter('nearest', 'nearest')
function HUD.new(level)
local hud = {}
setmetatable(hud, HUD)
local character = level.player.character:current()
hud.sheet = level.player.character:sheet()
hud.character_quad = love.graphics.newQuad( 0, character.offset or 5, 48, 48, hud.sheet:getWidth(), hud.sheet:getHeight() )
hud.character_stencil = function( x, y )
love.graphics.circle( 'fill', x + 31, y + 31, 21 )
end
hud.energy_stencil = function( x, y )
love.graphics.rectangle( 'fill', x + 31, y + 46, 80, 9 )
end
return hud
end
function HUD:draw( player )
if not window.dressing_visible then
return
end
fonts.set( 'big' )
self.x, self.y = camera.x + 10, camera.y
love.graphics.setColor(
math.min( map( player.health, player.max_health, player.max_health / 2 + 1, 0, 255 ), 255 ), -- green to yellow
math.min( map( player.health, player.max_health / 2, 0, 255, 0), 255), -- yellow to red
0,
255
)
love.graphics.setStencil( self.energy_stencil, self.x, self.y )
love.graphics.draw( energy, self.x - ( player.max_health - player.health ) * 10, self.y)
love.graphics.setStencil( )
love.graphics.setColor( 255, 255, 255, 255 )
love.graphics.draw( chevron, self.x, self.y)
love.graphics.setStencil( self.character_stencil, self.x, self.y )
love.graphics.drawq( self.sheet, self.character_quad, self.x + 7, self.y + 17 )
love.graphics.setStencil( )
love.graphics.draw( lens, self.x, self.y)
love.graphics.setColor( 0, 0, 0, 255 )
love.graphics.print( player.money, self.x + 75, self.y + 18, 0, 0.5, 0.5 )
love.graphics.print( player.lives, self.x + 83, self.y + 29, 0, 0.5, 0.5 )
if window.showfps then
love.graphics.setColor( 255, 255, 255, 255 )
love.graphics.print( love.timer.getFPS() .. ' FPS', self.x + window.width - 50, self.y + 5, 0, 0.5, 0.5 )
end
love.graphics.setColor( 255, 255, 255, 255 )
fonts.revert()
end
return HUD