-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplayersselection.lua
More file actions
128 lines (111 loc) · 3.39 KB
/
Copy pathplayersselection.lua
File metadata and controls
128 lines (111 loc) · 3.39 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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
local gamestate = require("gamestate")
local fonts = require("fonts")
local settings = require("settings")
local playersselection = {}
playersselection.new = function(self,name)
local _playstate = gamestate:new(name or "mainmenu")
setmetatable(_playstate,{__index = self})
return _playstate
end
playersselection.initialize = function(self)
self.width, self.height = settings.width,settings.height
self.R,self.G,self.B,self.A = love.graphics.getColor()
--self.background = love.graphics.newImage("background.png")
self.pointTimer = 0
local rb = 32
local gb = 32
local bb = 32
love.graphics.setBackgroundColor(rb,gb,bb)
self.options = {}
self.options[1] = "Singleplayer"
self.options[2] = "Multiplayer"
self.options[3] = "Back"
self.actions = {}
self.actions[1] = function()
self.manager:switchToState(self.manager.states["level1"],1)
end
self.actions[2] = function()
self.manager:switchToState(self.manager.states["level1"],2)
end
self.actions[3] = function()
self.manager:switchToState(self.manager.states["mainmenu"])
end
self.selected = 1
end
playersselection.terminate = function(self)
end
playersselection.update = function(self,dt)
self.pointTimer = self.pointTimer + dt
end
playersselection.draw = function(self)
--love.graphics.draw(self.background,0,0)
local npoints = math.min(math.floor(self.pointTimer*30),38)+2
local spread = self.width/2
--bottom left
xpoints = {}
ypoints = {}
originx = 0
originy = self.height
for i=1,npoints do
table.insert(xpoints,originx+i*spread/npoints+10*math.sin(2*math.pi*self.pointTimer/20))
table.insert(ypoints,originy-i*spread/npoints+10*math.sin(2*math.pi*self.pointTimer/20))
end
love.graphics.setColor(0,255,255,31)
for i=1,#xpoints do
love.graphics.line(xpoints[i],originy,originx,ypoints[#ypoints-i+1])
end
--top right
local xpoints = {}
local ypoints = {}
local originx = self.width
local originy = 0
for i=1,npoints do
table.insert(xpoints,originx-i*spread/npoints+10*math.sin(2*math.pi*self.pointTimer/20))
table.insert(ypoints,originy+i*spread/npoints+10*math.sin(2*math.pi*self.pointTimer/20))
end
love.graphics.setColor(255,255,0,31)
for i=1,#xpoints do
love.graphics.line(xpoints[i],originy,originx,ypoints[#ypoints-i+1])
end
love.graphics.setFont(fonts.mainmenu)
for i=1,#self.options do
if i == self.selected then
love.graphics.setColor(0,255,255)
else
love.graphics.setColor(255,255,0)
end
love.graphics.printf(self.options[i],self.width/3,self.height/2+i*30-60,self.width/3,"center")
end
love.graphics.setColor(self.R,self.G,self.B,self.A)
end
playersselection.selectionUp = function(self)
self.selected = self.selected-1
if self.selected < 1 then self.selected = #self.options end
end
playersselection.selectionDown = function(self)
self.selected = self.selected+1
if self.selected > #self.options then self.selected = 1 end
end
playersselection.keypressed = function(self, key, isrepeat )
if key == "up" then
self:selectionUp()
elseif key == "down" then
self:selectionDown()
elseif key == "return" then
self.actions[self.selected]()
elseif key == "escape" then
self.actions[3]()
end
end
playersselection.gamepadpressed = function(self,joystick,button)
if button == "a" then
self.actions[self.selected]()
elseif button == "dpup" then
self:selectionUp()
elseif button == "dpdown" then
self:selectionDown()
elseif button == "b" then
self.actions[3]()
end
end
return playersselection