diff --git a/images/assets/11_sprites.png b/images/assets/11_sprites.png index d1ba08e..3a39a64 100644 Binary files a/images/assets/11_sprites.png and b/images/assets/11_sprites.png differ diff --git a/main.py b/main.py index fdf59c1..4ac977b 100644 --- a/main.py +++ b/main.py @@ -616,23 +616,6 @@ def play_sound(): sound.set_volume(volume) pygame.mixer.Sound.play(sound) -def render_settings(): - size_to_y = {"small": 15, "medium": 25, "big": 55} - y = size_to_y[settings_data["size"]] - - for setting in enumerate(settings_data): - render_text(setting[1], (size[1]-20, y), screen) - setting_rect = pygame.Rect(size[0], y, size[2], size[3]) - setting_hover = setting_rect.collidepoint(pygame.mouse.get_pos()) - - if setting_hover and pygame.mouse.get_pressed()[0]: - setting_name = setting - if setting_name != setting: - setting_name = None - - return setting - - y += cons[0] def set_hue(): global hue_value @@ -855,6 +838,13 @@ def data_check(current_mode): return background_image, current_buttons +scroll_offset = 0 +space_between_settings = 5 +settings_x_position = size[1] - 18 +settings_y_offset = 5 +total_settings_height = len(settings_data) * (cons[0] + space_between_settings) +max_scroll_offset = max(0, total_settings_height - non_movable_area.height) + # Game state run = True current_mode = "menu" @@ -963,6 +953,14 @@ while run: clicked_piece = False can_move = False + elif event.type == pygame.MOUSEBUTTONDOWN and current_mode == "settings": + if event.button == 4: + scroll_offset -= 20 + scroll_offset = max(0, scroll_offset) + elif event.button == 5: + scroll_offset += 20 + scroll_offset = min(scroll_offset, max_scroll_offset) + if current_mode == "game": if timer_running: current_time = pygame.time.get_ticks() - timer_start_time @@ -1052,7 +1050,14 @@ while run: pygame.time.delay(16) if current_mode == "settings": - render_settings() + clipped_rect = pygame.Rect(settings_x_position, non_movable_area.y, size[2], non_movable_area.height) + screen.set_clip(clipped_rect) + + for index, setting_name in enumerate(settings_data): + y = size[1] - scroll_offset + index * (cons[0] + space_between_settings) + render_text(setting_name, (settings_x_position, y - settings_y_offset), screen) + + screen.set_clip(None) pygame.display.flip() diff --git a/main_data.json b/main_data.json index 5011883..9a6adb6 100644 --- a/main_data.json +++ b/main_data.json @@ -5,10 +5,10 @@ 0, 0, 0, - 194, - "00:00:09", - "00:00:09", - 13 + 1094, + "00:00:11", + "00:00:11", + 16 ], "2.png": [ 0, diff --git a/main_puzzle.json b/main_puzzle.json index 2e72898..3c04bfb 100644 --- a/main_puzzle.json +++ b/main_puzzle.json @@ -1 +1 @@ -{"puzzle 4x4": [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 0]], "puzzle 3x3": [[1, 2, 3], [4, 5, 6], [7, 8, 0]], "current 4x4": {"matrix": [[0, 4, 9, 7], [13, 1, 8, 3], [2, 12, 5, 11], [15, 14, 6, 10]], "selected_image": "images/albums/Original images/1.png"}, "current 3x3": {"matrix": [[3, 6, 7], [5, 4, 1], [0, 8, 2]], "selected_image": "/images/albums/Birds/1.png"}} \ No newline at end of file +{"puzzle 4x4": [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 0]], "puzzle 3x3": [[1, 2, 3], [4, 5, 6], [7, 8, 0]], "current 4x4": {"matrix": [[4, 9, 7, 0], [13, 1, 8, 3], [2, 12, 5, 11], [15, 14, 6, 10]], "selected_image": "images/albums/Original images/1.png"}, "current 3x3": {"matrix": [[3, 6, 7], [5, 4, 1], [0, 8, 2]], "selected_image": "/images/albums/Birds/1.png"}} \ No newline at end of file