Fix display mode crash

This commit is contained in:
csd4ni3l
2025-06-19 19:02:48 +02:00
parent 03b4fbd7ac
commit 481be8ef33
3 changed files with 13 additions and 10 deletions

View File

@@ -27,16 +27,15 @@ class Shape():
tile.visible = False tile.visible = False
for offset_col, offset_row in SHAPES[self.shape_type]: for offset_col, offset_row in SHAPES[self.shape_type]:
x = self.x + (offset_col * (CELL_SIZE + OUTLINE_WIDTH)) tile_x = self.x + (offset_col * (CELL_SIZE + OUTLINE_WIDTH))
y = self.y + (offset_row * (CELL_SIZE + OUTLINE_WIDTH)) tile_y = self.y + (offset_row * (CELL_SIZE + OUTLINE_WIDTH))
if n < len(self.tiles): if n < len(self.tiles):
self.tiles[n].position = x, y, 0 self.tiles[n].position = tile_x, tile_y, 0
self.tiles[n].color = color self.tiles[n].color = color
self.tiles[n].visible = True self.tiles[n].visible = True
else: else:
self.tiles.append(arcade.SpriteSolidColor(width=CELL_SIZE, height=CELL_SIZE, self.tiles.append(arcade.SpriteSolidColor(width=CELL_SIZE, height=CELL_SIZE, color=color, center_x=tile_x, center_y=tile_y))
color=color, center_x=x, center_y=y))
self.sprite_list.append(self.tiles[-1]) self.sprite_list.append(self.tiles[-1])
n += 1 n += 1
@@ -45,6 +44,5 @@ class Shape():
for offset_col, offset_row in SHAPES[self.shape_type]: for offset_col, offset_row in SHAPES[self.shape_type]:
x = self.x + (offset_col * (CELL_SIZE + OUTLINE_WIDTH)) x = self.x + (offset_col * (CELL_SIZE + OUTLINE_WIDTH))
y = self.y + (offset_row * (CELL_SIZE + OUTLINE_WIDTH)) y = self.y + (offset_row * (CELL_SIZE + OUTLINE_WIDTH))
self.tiles.append(arcade.SpriteSolidColor(width=CELL_SIZE, height=CELL_SIZE, self.tiles.append(arcade.SpriteSolidColor(width=CELL_SIZE, height=CELL_SIZE, color=self.shape_color, center_x=x, center_y=y))
color=self.shape_color, center_x=x, center_y=y))
self.sprite_list.append(self.tiles[-1]) self.sprite_list.append(self.tiles[-1])

View File

@@ -160,7 +160,10 @@ class Settings(arcade.gui.UIView):
if self.settings_dict['vsync']: if self.settings_dict['vsync']:
self.window.set_vsync(True) self.window.set_vsync(True)
display_mode = self.window.display.get_default_screen().get_mode() display_mode = self.window.display.get_default_screen().get_mode()
refresh_rate = display_mode.rate if display_mode:
refresh_rate = display_mode.rate
else:
refresh_rate = 60
self.window.set_update_rate(1 / refresh_rate) self.window.set_update_rate(1 / refresh_rate)
self.window.set_draw_rate(1 / refresh_rate) self.window.set_draw_rate(1 / refresh_rate)
@@ -215,7 +218,6 @@ class Settings(arcade.gui.UIView):
file.write(json.dumps(self.settings_dict, indent=4)) file.write(json.dumps(self.settings_dict, indent=4))
def update(self, setting=None, button_state=None, setting_type="bool"): def update(self, setting=None, button_state=None, setting_type="bool"):
setting_dict = settings[self.current_category][setting]
config_key = settings[self.current_category][setting]["config_key"] config_key = settings[self.current_category][setting]["config_key"]
if setting_type == "option": if setting_type == "option":

5
run.py
View File

@@ -77,7 +77,10 @@ window = arcade.Window(width=resolution[0], height=resolution[1], title='Shatter
if vsync: if vsync:
window.set_vsync(True) window.set_vsync(True)
display_mode = window.display.get_default_screen().get_mode() display_mode = window.display.get_default_screen().get_mode()
refresh_rate = display_mode.rate if display_mode:
refresh_rate = display_mode.rate
else:
refresh_rate = 60
window.set_update_rate(1 / refresh_rate) window.set_update_rate(1 / refresh_rate)
window.set_draw_rate(1 / refresh_rate) window.set_draw_rate(1 / refresh_rate)
elif not fps_limit == 0: elif not fps_limit == 0: