@@ -2,43 +2,107 @@ GameOverState = Class{__includes = BaseState}
22
33
44function GameOverState :init ()
5- self .name = ' '
6- end
7-
8- function GameOverState : textinput ( text )
9- if # self . name < 3 then
10- self . name = self . name .. text
11- end
5+ self .name = { }
6+ self . position = { }
7+ self . keys = {
8+ { left = " left " , right = " right " , up = " up " , down = " down " },
9+ { left = " a " , right = " d " , up = " w " , down = " s " }
10+ }
11+ self . delay = { 0 , 0 }
1212end
1313
1414function GameOverState :update (dt )
15- if love .keyboard .keyPressed [' return' ] then
16- if # self .name ~= 0 then
17- gStateMachine :change (' highscore' , {
18- new = {[' score' ] = self .score , [' name' ] = self .name }
19- })
20- end
21- end
22- if love .keyboard .keyPressed [' backspace' ] then
23- if # self .name ~= 0 then
24- self .name = string.sub (self .name , 1 , # self .name - 1 )
25- end
26- end
15+ for i , _ in pairs (self .score ) do
16+ self .delay [i ] = self .delay [i ] + dt
17+ if self .delay [i ] > 0.3 then
18+ if love .keyboard .isDown (self .keys [i ].left ) then
19+ if self .position [i ] ~= 4 and self .position [i ] > 1 then
20+ self .position [i ] = self .position [i ] - 1
21+ self .name [i ] = string.sub (self .name [i ], 1 , self .position [i ])
22+ end
23+ self .delay [i ] = 0
24+ elseif love .keyboard .isDown (self .keys [i ].right ) then
25+ if self .position [i ] ~= 4 then
26+ self .position [i ] = self .position [i ] + 1
27+ if self .position [i ] ~= 4 then
28+ self .name [i ] = self .name [i ] .. " "
29+ else
30+ done = true
31+ local new = {}
32+ for j , e in pairs (self .position ) do
33+ table.insert (new , {[' score' ] = self .score [j ], [' name' ] = self .name [j ]})
34+ if e ~= 4 then
35+ done = false
36+ end
37+ end
38+ if done then
39+ gStateMachine :change (' highscore' , {
40+ new = new
41+ })
42+ end
43+ end
44+ end
45+ self .delay [i ] = 0
46+ elseif love .keyboard .isDown (self .keys [i ].up ) then
47+ if self .position [i ] ~= 4 then
48+ lastchar = string.sub (self .name [i ], # self .name [i ])
49+ if # self .name [i ] == 1 then
50+ self .name [i ] = ' '
51+ else
52+ self .name [i ] = string.sub (self .name [i ], 1 , # self .name [i ] - 1 )
53+ end
54+ self .name [i ] = self .name [i ] .. (' ABCDEFGHIJKLMNOPQRSTUVWXYZ A' ):match (lastchar .. ' (.)' )
55+ end
56+ self .delay [i ] = 0
57+ elseif love .keyboard .isDown (self .keys [i ].down ) then
58+ if self .position [i ] ~= 4 then
59+ lastchar = string.sub (self .name [i ], # self .name [i ])
60+ if # self .name [i ] == 1 then
61+ self .name [i ] = ' '
62+ else
63+ self .name [i ] = string.sub (self .name [i ], 1 , # self .name [i ] - 1 )
64+ end
65+ self .name [i ] = self .name [i ] .. (' ZYXWUVTSRQPONMLKJIHGFEDCBA ' ):match (lastchar .. ' (.)' )
66+ end
67+ self .delay [i ] = 0
68+ end
69+ end
70+ end
2771end
2872
2973function GameOverState :draw ()
30- w , h = VIRTUAL_WIDTH , VIRTUAL_HEIGHT
31- love .graphics .setFont (largeFont )
32- love .graphics .printf ({{1 , 0 , 0 }, " New high score!" }, 0 , h / 3 , w , " center" )
33- -- love.graphics.setFont(smallFont)
34- love .graphics .printf ({{1 , 1 , 1 }, " Your Score: " , {0 , 1 , 0 }, self .score }, 0 , h - h / 4 - 50 , w , " center" )
35- love .graphics .printf ({{1 , 1 , 0 }, " Enter Your Initials" }, 0 , h - h / 4 , w , " center" )
36- love .graphics .printf (self .name , 0 , h - (h / 4 ) + 10 , w , " center" )
74+ w , h = VIRTUAL_WIDTH , VIRTUAL_HEIGHT / table .getn (self .score )
75+ base = 0
76+ for i , e in pairs (self .score ) do
77+ love .graphics .setFont (largeFont )
78+ if (not highscores [10 ]) or (e > highscores [10 ][1 ]) then
79+ love .graphics .printf ({{1 , 0 , 0 }, " New high score!" }, 0 , base + h / 3 , w , " center" )
80+ end
81+ -- love.graphics.setFont(smallFont)
82+ love .graphics .printf ({{1 , 1 , 1 }, " Player " , {1 , 1 , 1 }, i , {1 , 1 , 1 }, " Score: " , {0 , 1 , 0 }, e }, 0 , base + h - h / 4 - 50 / table .getn (self .score ), w , " center" )
83+ if (not highscores [10 ]) or (e > highscores [10 ][1 ]) then
84+ love .graphics .printf ({{1 , 1 , 0 }, " Enter Your Initials" }, 0 , base + h - h / 4 , w , " center" )
85+ if self .position [i ] ~= 4 then
86+ love .graphics .printf (self .name [i ] .. " _" , 0 , base + h - (h / 4 ) + 10 , w , " center" )
87+ else
88+ love .graphics .printf (self .name [i ], 0 , base + h - (h / 4 ) + 10 , w , " center" )
89+ end
90+ end
91+ base = base + h
92+ end
3793end
3894
3995function GameOverState :enter (params )
4096 self .score = params .score
97+ for i , e in pairs (self .score ) do
98+ table.insert (self .name , ' ' )
99+ if (not highscores [10 ]) or (e > highscores [10 ][1 ]) then
100+ table.insert (self .position , 1 )
101+ else
102+ table.insert (self .position , 4 )
103+ end
104+ end
41105end
42106
43107function GameOverState :exit ()
44- end
108+ end
0 commit comments