Skip to content

Commit 6c5da9c

Browse files
Added Fast graphics for low specification PC
1 parent ba08ba5 commit 6c5da9c

File tree

5 files changed

+75
-22
lines changed

5 files changed

+75
-22
lines changed

game.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ def calc_song_progress_percent(song_length,song_start_time,current_time): # ret
118118
return progress
119119

120120

121-
def run_FGHJ(screen,clock,song_name,stage_speed,offset,judgement_shown,guide_line_shown):
121+
def run_FGHJ(screen,clock,song_name,stage_speed,offset,judgement_shown,guide_line_shown,high_quality_verifying_graphics):
122122
global bar_color, wait_delay, change_background_color
123123
game_run = True
124124
score = [0]
@@ -142,7 +142,7 @@ def run_FGHJ(screen,clock,song_name,stage_speed,offset,judgement_shown,guide_lin
142142
game_run = False
143143
view_score_menu(screen, clock, song_name, score, song_difficulty, total_points)
144144
return
145-
verifier = Verifier(screen,score,stage_speed,judgement_shown,song_bpm)
145+
verifier = Verifier(screen,score,stage_speed,judgement_shown,song_bpm,high_quality_verifying_graphics)
146146

147147

148148

@@ -261,6 +261,7 @@ def run_FGHJ(screen,clock,song_name,stage_speed,offset,judgement_shown,guide_lin
261261
change_background_color = 1
262262
screen.fill(background_color[change_background_color])
263263
tile.fix_loc()
264+
verifier.draw_judgement()
264265
for T in tiles_off_screen + nodes_on_screen + holds_on_screen:
265266
T.draw(screen,screen_freeze)
266267
draw_frame(screen)

main.py

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -134,13 +134,18 @@ def update_song_info():
134134
stage_speed = boundary_checker(min_speed,max_speed,stage_speed)
135135

136136
if abs(xp - width//2) < big_text*3: # toggle judgement
137-
if abs(yp - (mode_y_level + mode_location_offset['huge'] + big_text))< big_text//2:
137+
if abs(yp - (mode_y_level + mode_location_offset['huge'] + big_text + big_text//2))< big_text//2:
138138
judgement_shown = not judgement_shown #not judgement_shown
139139

140-
if abs(xp - width//2) < big_text*3: # toggle judgement
141-
if abs(yp - (mode_y_level + mode_location_offset['huge'] + big_text*3))< big_text//2:
140+
if abs(xp - width//2) < big_text*3: # toggle guide line
141+
if abs(yp - (mode_y_level + mode_location_offset['huge'] + big_text*2 + big_text//2))< big_text//2:
142142
guide_line_shown = not guide_line_shown
143143

144+
if abs(xp - width // 2) < big_text * 3: # toggle graphics
145+
if abs(yp - (mode_y_level + mode_location_offset['huge'] + big_text * 3 + big_text//2)) < big_text // 2:
146+
high_quality_verifying_graphics = not high_quality_verifying_graphics
147+
148+
144149
if event.type == pygame.MOUSEBUTTONDOWN:
145150
if event.button == 4:
146151
music_pointer -= 1
@@ -163,7 +168,7 @@ def update_song_info():
163168
run, meta_run = exit()
164169
break
165170
elif event.key == pygame.K_RETURN:
166-
run_FGHJ(screen,clock,song_name,stage_speed,offset,judgement_shown,guide_line_shown)
171+
run_FGHJ(screen,clock,song_name,stage_speed,offset,judgement_shown,guide_line_shown,high_quality_verifying_graphics)
167172
run = False
168173
break
169174

@@ -208,19 +213,29 @@ def update_song_info():
208213
highlight_text_color)
209214

210215
if judgement_shown:
211-
write_text(screen, width // 2, mode_y_level + mode_location_offset['Giant'] + big_text, 'Hide judgement detail', small_text, background_color[0],
216+
write_text(screen, width // 2, mode_y_level + mode_location_offset['Giant'] + big_text, 'Judgement detail: On', small_text, background_color[0],
212217
highlight_text_color)
213218
else:
214-
write_text(screen, width // 2, mode_y_level + mode_location_offset['Giant'] + big_text, 'Show judgement detail', small_text, background_color[0],
219+
write_text(screen, width // 2, mode_y_level + mode_location_offset['Giant'] + big_text, 'Judgement detail: Off', small_text, background_color[0],
215220
highlight_text_color)
216221

217222
if guide_line_shown:
218-
write_text(screen, width // 2, mode_y_level + mode_location_offset['Giant'] + big_text*3, 'Hide guide lines', small_text, background_color[0],
223+
write_text(screen, width // 2, mode_y_level + mode_location_offset['Giant'] + big_text*2, 'Guide line: On', small_text, background_color[0],
224+
highlight_text_color)
225+
else:
226+
write_text(screen, width // 2, mode_y_level + mode_location_offset['Giant'] + big_text*2, 'Guide line: Off', small_text, background_color[0],
227+
highlight_text_color)
228+
229+
230+
if high_quality_verifying_graphics:
231+
write_text(screen, width // 2, mode_y_level + mode_location_offset['Giant'] + big_text*3, 'Graphics: Fancy', small_text, background_color[0],
219232
highlight_text_color)
220233
else:
221-
write_text(screen, width // 2, mode_y_level + mode_location_offset['Giant'] + big_text*3, 'Show guide lines', small_text, background_color[0],
234+
write_text(screen, width // 2, mode_y_level + mode_location_offset['Giant'] + big_text*3, 'Graphics: Fast', small_text, background_color[0],
222235
highlight_text_color)
223236

237+
238+
224239
for index in range(min_index,max_index+1):
225240
music = music_list[index]
226241
location = index - music_pointer

tiles.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def fix_loc(self, loc = None):
4848
self.y = self.judgement_line
4949

5050
def check_border(self):
51-
if self.special == 'BadApple' and self.y > self.judgement_line: # 'Late' for special node
51+
if self.special == 'BadApple' and self.y > self.judgement_line + 5: # 'Late' for special node
5252
#print('border cross for Bad apple!')
5353
return True # border crossed for special node
5454

variables.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
song_name = None # as a default
1919
song_info_list = []
2020

21-
high_quality_verifying_graphics = True
21+
high_quality_verifying_graphics = False
2222

2323

2424
# time settings

verifier_class.py

Lines changed: 47 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
from utility_functions import *
1313

1414
class Verifier():
15-
def __init__(self,screen, score,speed,judgement_shown,bpm):
16-
global fps, high_quality_verifying_graphics
15+
def __init__(self,screen, score,speed,judgement_shown,bpm,high_quality_verifying_graphics):
16+
global fps
1717
self.screen = screen
1818
self.speed = speed
1919
self.score = score
@@ -22,6 +22,7 @@ def __init__(self,screen, score,speed,judgement_shown,bpm):
2222
self.judgement_highest_pos = int((self.judgement_frames) *0.7)
2323
self.judgement_shown = judgement_shown
2424
self.high_quality_verifying_graphics = high_quality_verifying_graphics
25+
self.verification_show_time = 300 # ms
2526

2627
self.frame_error = int(((10/fps)*self.speed) + 1)
2728
self.song_bpm = bpm
@@ -78,10 +79,21 @@ def node_check(self,nodes_on_screen,tiles_off_screen,events):
7879
if node.check_border() or self.check_pressed(node,events):
7980
if node.special == 'BadApple':
8081
tiles_off_screen.append(node)
82+
nodes_on_screen.remove(node)
83+
if self.check_pressed(node,events):
84+
self.verify_judgement_node(node)
85+
else: # lost
86+
self.verify_judgement_node(node,enforce_Lost=True)
87+
continue
8188
nodes_on_screen.remove(node)
8289
self.verify_judgement_node(node)
8390

8491

92+
93+
94+
95+
96+
8597
def draw_guide_lines_node(self,nodes_on_screen,screen):
8698
for node in nodes_on_screen:
8799
for i in range(len(self.node_judgement_line_half_sizes)):
@@ -95,11 +107,18 @@ def append_verification_tile(self,tile_verification):
95107
if self.high_quality_verifying_graphics:
96108
self.tiles_to_verify.append(tile_verification)
97109
else:
98-
time_added_verification = tile_verification + [pygame.time.get_ticks()]
99-
self.tiles_to_verify.append(time_added_verification)
110+
tile_verification.append(pygame.time.get_ticks())
111+
#print(tile_verification)
112+
self.tiles_to_verify.append(tile_verification)
100113

101114

102-
def verify_judgement_node(self,node):
115+
def verify_judgement_node(self,node,enforce_Lost = False):
116+
if enforce_Lost:
117+
self.append_verification_tile([node, ("Lost", ''), self.judgement_frames])
118+
if self.judgement_shown:
119+
print("Enforced Lost")
120+
return
121+
103122
result = ''
104123
detail = ''
105124
human_error = node.y - judgement_line
@@ -124,7 +143,7 @@ def verify_judgement_node(self,node):
124143

125144
# print result of Lost/Hit/Perfect on the screen
126145
#print(result)
127-
self.tiles_to_verify.append([node,(result,detail),self.judgement_frames])
146+
self.append_verification_tile([node,(result,detail),self.judgement_frames])
128147

129148

130149
self.score[0] += point
@@ -175,7 +194,7 @@ def verify_judgement_hold(self,hold, events):
175194
return
176195
#print(result)
177196
#print("sending %s to"%hold.this_judgement_pos)
178-
self.tiles_to_verify.append([hold,(result,detail),self.judgement_frames])
197+
self.append_verification_tile([hold,(result,detail),self.judgement_frames])
179198
self.score[0] += point
180199
self.update_hold_judgement_pos(hold)
181200
if result=="Lost":
@@ -227,14 +246,32 @@ def draw_judgement(self):
227246
if verification[2] <= 1:
228247
self.tiles_to_verify.remove(verification)
229248
else:
230-
231249
write_text(self.screen, line_axes[verification[0].line-1], judgement_line -judgement_text*3 + self.calc_pos(verification[2]), "%s"%(verification[1][0]), judgement_text, background_color[0], highlight_text_color)
232250
write_text(self.screen, line_axes[verification[0].line - 1],
233251
judgement_line - judgement_text * 3 + self.calc_pos(verification[2])+judgement_text,
234252
"%s" % (verification[1][1]), detail_text, background_color[0], highlight_text_color)
235253
verification[2] -= 1
236254
else:
237-
pass
255+
cur_time = pygame.time.get_ticks()
256+
for i in range(len(self.tiles_to_verify) - 1, -1, -1):
257+
verification = self.tiles_to_verify[i]
258+
if cur_time - verification[3] > self.verification_show_time:
259+
self.tiles_to_verify.remove(verification)
260+
else:
261+
write_text(self.screen, line_axes[verification[0].line - 1],
262+
judgement_line - judgement_text * 3,
263+
"%s" % (verification[1][0]), judgement_text, background_color[0], highlight_text_color)
264+
265+
238266

239267
def calc_pos(self,note_stage):
240-
return (max(self.judgement_highest_pos, note_stage) - self.judgement_highest_pos)
268+
return (max(self.judgement_highest_pos, note_stage) - self.judgement_highest_pos)
269+
270+
271+
272+
273+
274+
275+
276+
277+

0 commit comments

Comments
 (0)