-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmenu.lua
More file actions
98 lines (85 loc) · 2.01 KB
/
menu.lua
File metadata and controls
98 lines (85 loc) · 2.01 KB
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Menu = {}
Menu.buttons = {}
Menu.selected = 1
Menu.activated = false
Menu.buttonHeight = 64
Menu.buttonPadding = 16
Menu.buttonOffset = 64
Menu.allowJoyMove = true
Menu.font = nil
function Menu:button(text)
table.insert(self.buttons, text)
if self.activated and table.getn(self.buttons) == self.selected then
self.activated = false
return true
end
return false
end
function Menu:mousemoved(x, y, dx, dy)
Menu.selected = math.floor((canvasMouseY - self.buttonOffset)/self.buttonHeight)
end
function Menu:keypressed(key)
if key == "up" then
self:moveUp()
elseif key == "down" then
self:moveDown()
elseif key == "space" then
self.activated = true
end
end
function Menu:joypressed(button)
if button == 1 then
self.activated = true
end
end
function Menu:joyMove(axis)
if self.allowJoyMove then
if axis > 0 then
self:moveDown()
elseif axis < 0 then
self:moveUp()
end
self.allowJoyMove = false
end
end
function Menu:mousepressed(x, y, button)
if button == 1 then
Menu.activated = true
end
end
function Menu:moveUp()
self.selected = self.selected - 1
if self.selected < 1 then
self.selected = table.getn(self.buttons)
end
end
function Menu:moveDown()
self.selected = self.selected + 1
if self.selected > table.getn(self.buttons) then
self.selected = 1
end
end
function Menu:load()
self.font = love.graphics.newFont(self.buttonHeight - self.buttonPadding)
end
function Menu:update()
end
function Menu:draw()
love.graphics.setFont(self.font)
local number = table.getn(self.buttons)
for i=1,number,1 do
love.graphics.setColor(0, 0, 0, 150)
love.graphics.rectangle("fill", 0, self.buttonOffset + i*self.buttonHeight, canvasW, self.buttonHeight)
if i == self.selected then
love.graphics.setColor(255, 255, 0)
else
love.graphics.setColor(255, 255, 255)
end
love.graphics.printf(self.buttons[i], 0, self.buttonOffset + i*self.buttonHeight, canvasW, "center")
love.graphics.setColor(255, 255, 255)
end
--love.graphics.setFont(nil)
end
function Menu:clear()
self.buttons = {}
end