master
parent
b67e05107a
commit
2cf93a7f12
219
main.py
219
main.py
|
@ -40,6 +40,14 @@ puzzle_data = load_data(PUZZLE_FILE)
|
||||||
settings_data = load_data(SETTINGS_FILE)
|
settings_data = load_data(SETTINGS_FILE)
|
||||||
stats_data = load_data(STATS_FILE)
|
stats_data = load_data(STATS_FILE)
|
||||||
|
|
||||||
|
gui = "gui color"
|
||||||
|
sensitivity = "sensitivity"
|
||||||
|
music = "music"
|
||||||
|
sound = "sound"
|
||||||
|
style = "style"
|
||||||
|
current_size = settings_data["size"]
|
||||||
|
current_style = settings_data["style"]
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
SIZE_CHOICES = ["small", "medium", "big"]
|
SIZE_CHOICES = ["small", "medium", "big"]
|
||||||
STYLE_CHOICES = ["classic", "original", "dark"]
|
STYLE_CHOICES = ["classic", "original", "dark"]
|
||||||
|
@ -50,12 +58,12 @@ DISPLAY_CHOICES = ["time", "moves"]
|
||||||
LANGUAGE_CHOICES = ["english", "russian", "latvian"]
|
LANGUAGE_CHOICES = ["english", "russian", "latvian"]
|
||||||
FONTS = ["msreferencesansserif", "arial", "bahnschrift"]
|
FONTS = ["msreferencesansserif", "arial", "bahnschrift"]
|
||||||
|
|
||||||
if settings_data["style"] == STYLE_CHOICES[0]:
|
if current_style == STYLE_CHOICES[0]:
|
||||||
FONT = FONTS[0]
|
FONT = FONTS[0]
|
||||||
STYLE_PATH = "1_"
|
STYLE_PATH = "1_"
|
||||||
text_color = (1, 35, 61)
|
text_color = (1, 35, 61)
|
||||||
oposite_color = white
|
oposite_color = white
|
||||||
elif settings_data["style"] == STYLE_CHOICES[1]:
|
elif current_style == STYLE_CHOICES[1]:
|
||||||
FONT = FONTS[1]
|
FONT = FONTS[1]
|
||||||
STYLE_PATH = "2_"
|
STYLE_PATH = "2_"
|
||||||
text_color = white
|
text_color = white
|
||||||
|
@ -66,7 +74,7 @@ else:
|
||||||
text_color = white
|
text_color = white
|
||||||
oposite_color = text_color
|
oposite_color = text_color
|
||||||
|
|
||||||
if settings_data["size"] == SIZE_CHOICES[0]:
|
if current_size == SIZE_CHOICES[0]:
|
||||||
WIDTH, HEIGHT = 144, 154
|
WIDTH, HEIGHT = 144, 154
|
||||||
INT = 0
|
INT = 0
|
||||||
if FONT == FONTS[0]:
|
if FONT == FONTS[0]:
|
||||||
|
@ -87,7 +95,7 @@ if settings_data["size"] == SIZE_CHOICES[0]:
|
||||||
scaled_size = (18, 21, 108, 108)
|
scaled_size = (18, 21, 108, 108)
|
||||||
area = (72, 142)
|
area = (72, 142)
|
||||||
|
|
||||||
elif settings_data["size"] == SIZE_CHOICES[1]:
|
elif current_size == SIZE_CHOICES[1]:
|
||||||
WIDTH, HEIGHT = 202, 216
|
WIDTH, HEIGHT = 202, 216
|
||||||
INT = 1
|
INT = 1
|
||||||
if FONT == FONTS[0]:
|
if FONT == FONTS[0]:
|
||||||
|
@ -232,43 +240,6 @@ class Button:
|
||||||
screen.blit(self.img, self.rect)
|
screen.blit(self.img, self.rect)
|
||||||
|
|
||||||
|
|
||||||
f_line = [135, 38, 80, 12]
|
|
||||||
s_line = [135, 53, 80, 12]
|
|
||||||
s_button = [218, 38, 10, 16]
|
|
||||||
gap = (s_button[2]/2)-(s_line[3]/2)
|
|
||||||
|
|
||||||
|
|
||||||
class Slider:
|
|
||||||
def __init__(self, position, value_range, value, dragging):
|
|
||||||
self.position = position
|
|
||||||
self.value_range = value_range
|
|
||||||
self.value = value
|
|
||||||
self.dragging = dragging
|
|
||||||
self.update_positions()
|
|
||||||
|
|
||||||
def update_positions(self):
|
|
||||||
self.second_x = int(80 * (self.value / self.value_range[1]))
|
|
||||||
self.value_pos = self.second_x - (s_button[2] / 2)
|
|
||||||
self.first_line_img = Image((f_line[0], f_line[1]), self.position, (f_line[2], f_line[3]))
|
|
||||||
self.second_line_img = Image((s_line[0], s_line[1]), self.position, (self.second_x, s_line[3]))
|
|
||||||
self.slider_button = Button((s_button[0], s_button[1]), (self.value_pos, self.position + gap),
|
|
||||||
(s_button[2], s_button[3]))
|
|
||||||
self.handle_event()
|
|
||||||
|
|
||||||
def handle_event(self):
|
|
||||||
if self.dragging and pygame.mouse.get_pressed()[0]:
|
|
||||||
mouse_x, mouse_y = pygame.mouse.get_pos()
|
|
||||||
if self.slider_button.rect.collidepoint(mouse_x, mouse_y):
|
|
||||||
self.value_pos = mouse_x - s_button[2] / 2
|
|
||||||
self.second_x = int(self.value_pos + s_button[2] / 2)
|
|
||||||
self.value = int((self.second_x / 80) * self.value_range[1])
|
|
||||||
|
|
||||||
def draw(self, screen):
|
|
||||||
self.first_line_img.draw(screen)
|
|
||||||
self.second_line_img.draw(screen)
|
|
||||||
self.slider_button.draw(screen)
|
|
||||||
|
|
||||||
|
|
||||||
# Ability to move window
|
# Ability to move window
|
||||||
def move_win(coordinates):
|
def move_win(coordinates):
|
||||||
hwnd = pygame.display.get_wm_info()["window"]
|
hwnd = pygame.display.get_wm_info()["window"]
|
||||||
|
@ -348,7 +319,7 @@ def render_albums():
|
||||||
global current_mode, album_name
|
global current_mode, album_name
|
||||||
current_hovered_index = -1
|
current_hovered_index = -1
|
||||||
size_to_y = {"small": 25, "medium": 35, "big": 65}
|
size_to_y = {"small": 25, "medium": 35, "big": 65}
|
||||||
y = size_to_y[settings_data["size"]]
|
y = size_to_y[current_size]
|
||||||
|
|
||||||
for hover_index, album in enumerate(storage["albums"]):
|
for hover_index, album in enumerate(storage["albums"]):
|
||||||
render_text(album, (size[1], y), screen)
|
render_text(album, (size[1], y), screen)
|
||||||
|
@ -474,7 +445,7 @@ def cut_image(image):
|
||||||
if puzzle_version == GRID_CHOICES[0]:
|
if puzzle_version == GRID_CHOICES[0]:
|
||||||
layer_path = pygame.image.load("images/assets/piece32.png").convert_alpha()
|
layer_path = pygame.image.load("images/assets/piece32.png").convert_alpha()
|
||||||
else:
|
else:
|
||||||
layer_path = pygame.image.load("images/assets/piece45.png" if settings_data["size"] == SIZE_CHOICES[0] else "images/assets/piece60.png").convert_alpha()
|
layer_path = pygame.image.load("images/assets/piece45.png" if current_size == SIZE_CHOICES[0] else "images/assets/piece60.png").convert_alpha()
|
||||||
layer_path = pygame.transform.scale(layer_path, (piece_width, piece_height))
|
layer_path = pygame.transform.scale(layer_path, (piece_width, piece_height))
|
||||||
layer_path.set_colorkey((0, 0, 0))
|
layer_path.set_colorkey((0, 0, 0))
|
||||||
|
|
||||||
|
@ -618,24 +589,72 @@ def update_puzzle_data(completed, sorted, current_time, current_moves, real_time
|
||||||
data_file.write(json.dumps(storage, indent=3))
|
data_file.write(json.dumps(storage, indent=3))
|
||||||
|
|
||||||
# SETTINGS MODE
|
# SETTINGS MODE
|
||||||
|
scroll_offset = 0
|
||||||
|
space_between_settings = 20
|
||||||
|
settings_y_offset = 5
|
||||||
|
f_line = [135, 38, 80, 12]
|
||||||
|
s_line = [135, 53, 80, 12]
|
||||||
|
s_button = [218, 38, 10, 16]
|
||||||
|
|
||||||
|
settings_x_position = puzzle_size[0]
|
||||||
|
total_settings_height = len(settings_data) * (cons[0] + space_between_settings)
|
||||||
|
max_scroll_offset = max(0, total_settings_height - non_movable_area.height)
|
||||||
|
active_sliders = {gui: False, sensitivity: False, music: False, sound: False}
|
||||||
|
gap = (s_button[2]/2)-(s_line[3]/2)-1
|
||||||
|
|
||||||
|
|
||||||
|
def slider(position, value_range, value, active_slider, setting):
|
||||||
|
second_x = value / value_range * s_line[2]
|
||||||
|
value_pos = second_x - s_button[2] / 2
|
||||||
|
first_line = Image((f_line[0], f_line[1]), (position[0], position[1]), (f_line[2], f_line[3]))
|
||||||
|
second_line = Image((s_line[0], s_line[1]), (position[0], position[1]), (second_x, s_line[3]))
|
||||||
|
slider_button = Button((s_button[0], s_button[1]), (position[0] + value_pos, position[1] + gap), (s_button[2], s_button[3]))
|
||||||
|
mouse_buttons = pygame.mouse.get_pressed()
|
||||||
|
if active_slider[setting] and mouse_buttons[0]:
|
||||||
|
|
||||||
|
mouse_pos = pygame.mouse.get_pos()
|
||||||
|
|
||||||
|
if mouse_buttons[0] and slider_button.rect.inflate(100, 25).collidepoint(mouse_pos):
|
||||||
|
mouse_pos = pygame.mouse.get_pos()
|
||||||
|
mouse_x = mouse_pos[0]
|
||||||
|
min_x = position[0] - s_button[2] / 2
|
||||||
|
max_x = position[0] + s_line[2] - s_button[2] / 2
|
||||||
|
new_value_pos = min(max(mouse_x - s_button[2] / 2, min_x), max_x)
|
||||||
|
new_value = int(((new_value_pos - min_x) / (max_x - min_x)) * value_range)
|
||||||
|
second_x = new_value_pos - position[0] + s_button[2] / 2
|
||||||
|
slider_button.rect.x = new_value_pos
|
||||||
|
value = new_value
|
||||||
|
|
||||||
|
if setting == gui:
|
||||||
|
settings_data[gui] = value
|
||||||
|
elif setting == sensitivity:
|
||||||
|
settings_data[sensitivity] = value
|
||||||
|
elif setting == music:
|
||||||
|
settings_data[music]["volume"] = value
|
||||||
|
elif setting == sound:
|
||||||
|
settings_data[sound]["volume"] = value
|
||||||
|
|
||||||
|
return first_line, second_line, slider_button
|
||||||
|
|
||||||
|
|
||||||
def play_music():
|
def play_music():
|
||||||
music_file = settings_data["music"]["version"]
|
music_file = settings_data[music]["version"]
|
||||||
volume = settings_data["music"]["volume"]
|
volume = settings_data[music]["volume"]
|
||||||
pygame.mixer.music.load("misc/" + music_file + ".mp3")
|
pygame.mixer.music.load("misc/" + music_file + ".mp3")
|
||||||
pygame.mixer.music.set_volume(volume)
|
pygame.mixer.music.set_volume(volume)
|
||||||
pygame.mixer.music.play(-1)
|
pygame.mixer.music.play(-1)
|
||||||
|
|
||||||
|
|
||||||
if settings_data["music"]["on"] is True:
|
if settings_data[music]["on"] is True:
|
||||||
play_music()
|
play_music()
|
||||||
|
|
||||||
|
|
||||||
def play_sound():
|
def play_sound():
|
||||||
sound_file = settings_data["sound"]["version"]
|
sound_file = settings_data[sound]["version"]
|
||||||
volume = settings_data["sound"]["volume"]
|
volume = settings_data[sound]["volume"]
|
||||||
sound = pygame.mixer.Sound("misc/" + sound_file + ".ogg")
|
current_sound = pygame.mixer.Sound("misc/" + sound_file + ".ogg")
|
||||||
sound.set_volume(volume)
|
current_sound.set_volume(volume)
|
||||||
pygame.mixer.Sound.play(sound)
|
pygame.mixer.Sound.play(current_sound)
|
||||||
|
|
||||||
|
|
||||||
def set_hue():
|
def set_hue():
|
||||||
|
@ -645,7 +664,6 @@ def set_hue():
|
||||||
elif settings_data["style"] == STYLE_CHOICES[2]:
|
elif settings_data["style"] == STYLE_CHOICES[2]:
|
||||||
x = 1
|
x = 1
|
||||||
|
|
||||||
gui = "gui color"
|
|
||||||
hue_value = settings_data[gui][x]
|
hue_value = settings_data[gui][x]
|
||||||
keys = pygame.key.get_pressed()
|
keys = pygame.key.get_pressed()
|
||||||
if keys[pygame.K_LEFT]:
|
if keys[pygame.K_LEFT]:
|
||||||
|
@ -701,7 +719,7 @@ def stats():
|
||||||
|
|
||||||
|
|
||||||
# Buttons (maybe optimise?)
|
# Buttons (maybe optimise?)
|
||||||
if settings_data["size"] == SIZE_CHOICES[0]:
|
if current_size == SIZE_CHOICES[0]:
|
||||||
px12 = (12, 12)
|
px12 = (12, 12)
|
||||||
px14 = (14, 14)
|
px14 = (14, 14)
|
||||||
timer_button = Button((0, 0), (7, 3), px12)
|
timer_button = Button((0, 0), (7, 3), px12)
|
||||||
|
@ -723,7 +741,7 @@ if settings_data["size"] == SIZE_CHOICES[0]:
|
||||||
BACKGROUND_IMAGE = Image((0, 64), (0, 0), (WIDTH, HEIGHT))
|
BACKGROUND_IMAGE = Image((0, 64), (0, 0), (WIDTH, HEIGHT))
|
||||||
ver1_layer = sprite_sheet.get_sprite((147, 64), WIDTH, HEIGHT, transparent)
|
ver1_layer = sprite_sheet.get_sprite((147, 64), WIDTH, HEIGHT, transparent)
|
||||||
ver2_layer = sprite_sheet.get_sprite((294, 64), WIDTH, HEIGHT, transparent)
|
ver2_layer = sprite_sheet.get_sprite((294, 64), WIDTH, HEIGHT, transparent)
|
||||||
elif settings_data["size"] == SIZE_CHOICES[1]:
|
elif current_size == SIZE_CHOICES[1]:
|
||||||
px16 = (16, 16)
|
px16 = (16, 16)
|
||||||
px20 = (20, 20)
|
px20 = (20, 20)
|
||||||
timer_button = Button((0, 0), (8, 4), px16)
|
timer_button = Button((0, 0), (8, 4), px16)
|
||||||
|
@ -768,11 +786,6 @@ else:
|
||||||
ver1_layer = sprite_sheet.get_sprite((399, 156), WIDTH, HEIGHT, transparent)
|
ver1_layer = sprite_sheet.get_sprite((399, 156), WIDTH, HEIGHT, transparent)
|
||||||
ver2_layer = sprite_sheet.get_sprite((798, 156), WIDTH, HEIGHT, transparent)
|
ver2_layer = sprite_sheet.get_sprite((798, 156), WIDTH, HEIGHT, transparent)
|
||||||
|
|
||||||
settings_x_position = 50
|
|
||||||
settings_y_offset = 10
|
|
||||||
slider_size = (80, 12)
|
|
||||||
button_size = (10, 16)
|
|
||||||
space_between_settings = 20
|
|
||||||
|
|
||||||
def load_data():
|
def load_data():
|
||||||
path_components = puzzle_data[f'current {puzzle_version}']['selected_image'].split('/')[2:]
|
path_components = puzzle_data[f'current {puzzle_version}']['selected_image'].split('/')[2:]
|
||||||
|
@ -872,48 +885,6 @@ def data_check(current_mode):
|
||||||
|
|
||||||
return background_image, current_buttons
|
return background_image, current_buttons
|
||||||
|
|
||||||
scroll_offset = 0
|
|
||||||
space_between_settings = 20
|
|
||||||
settings_x_position = puzzle_size[0]
|
|
||||||
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)
|
|
||||||
|
|
||||||
f_line = [135, 38, 80, 12]
|
|
||||||
s_line = [135, 53, 80, 12]
|
|
||||||
s_button = [218, 38, 10, 16]
|
|
||||||
gap = (s_button[2]/2)-(s_line[3]/2)-1
|
|
||||||
|
|
||||||
def slider(position, value_range, value, slider_moving, setting):
|
|
||||||
second_x = value / value_range * s_line[2]
|
|
||||||
value_pos = second_x - s_button[2] / 2
|
|
||||||
first_line = Image((f_line[0], f_line[1]), (position[0], position[1]), (f_line[2], f_line[3]))
|
|
||||||
second_line = Image((s_line[0], s_line[1]), (position[0], position[1]), (second_x, s_line[3]))
|
|
||||||
slider_button = Button((s_button[0], s_button[1]), (position[0] + value_pos, position[1] + gap), (s_button[2], s_button[3]))
|
|
||||||
|
|
||||||
if slider_moving:
|
|
||||||
mouse_buttons = pygame.mouse.get_pressed()
|
|
||||||
mouse_pos = pygame.mouse.get_pos()
|
|
||||||
if mouse_buttons[0] and slider_button.rect.collidepoint(mouse_pos):
|
|
||||||
mouse_x = mouse_pos[0]
|
|
||||||
new_value_pos = mouse_x - s_button[2] / 2 - position[0]
|
|
||||||
new_second_x = min(max(new_value_pos + s_button[2] / 2, 0), s_line[2])
|
|
||||||
new_value = int((new_second_x / s_line[2]) * value_range)
|
|
||||||
|
|
||||||
second_x = new_second_x
|
|
||||||
value_pos = new_value_pos
|
|
||||||
slider_button.rect.x = position[0] + value_pos
|
|
||||||
value = new_value
|
|
||||||
if setting == "gui color":
|
|
||||||
settings_data["gui color"] = value
|
|
||||||
elif setting == "sensitivity":
|
|
||||||
settings_data["sensitivity"] = value
|
|
||||||
elif setting == "music":
|
|
||||||
settings_data["music"]["volume"] = value
|
|
||||||
elif setting == "sound":
|
|
||||||
settings_data["sound"]["volume"] = value
|
|
||||||
|
|
||||||
return first_line, second_line, slider_button
|
|
||||||
|
|
||||||
# Game state
|
# Game state
|
||||||
run = True
|
run = True
|
||||||
|
@ -1089,7 +1060,7 @@ while run:
|
||||||
if 0 <= clicked_row < len(puzzle_matrix) and 0 <= clicked_col < len(puzzle_matrix[0]):
|
if 0 <= clicked_row < len(puzzle_matrix) and 0 <= clicked_col < len(puzzle_matrix[0]):
|
||||||
if puzzle_matrix[clicked_row, clicked_col] and clicked is None:
|
if puzzle_matrix[clicked_row, clicked_col] and clicked is None:
|
||||||
moved = move_pieces(clicked_row, clicked_col)
|
moved = move_pieces(clicked_row, clicked_col)
|
||||||
if settings_data["sound"]["on"] is True and moved is not None:
|
if settings_data[sound]["on"] is True and moved is not None:
|
||||||
current_moves += 1
|
current_moves += 1
|
||||||
user_win = True
|
user_win = True
|
||||||
print("clicked:", current_moves)
|
print("clicked:", current_moves)
|
||||||
|
@ -1144,8 +1115,8 @@ while run:
|
||||||
if setting_name != "keybinds":
|
if setting_name != "keybinds":
|
||||||
y = f_line[3] - scroll_offset + index * (cons[0] + space_between_settings)
|
y = f_line[3] - scroll_offset + index * (cons[0] + space_between_settings)
|
||||||
value = settings_data[setting_name]
|
value = settings_data[setting_name]
|
||||||
if setting_name in ["gui color", "sensitivity", "music", "sound"]:
|
if setting_name in [gui, sensitivity, music, sound]:
|
||||||
if setting_name in ["music", "sound"]:
|
if setting_name in [music, sound]:
|
||||||
value = value["volume"]
|
value = value["volume"]
|
||||||
render_settings_text(setting_name.upper(),
|
render_settings_text(setting_name.upper(),
|
||||||
(settings_x_position // 2 + 9, y - settings_y_offset), screen, value)
|
(settings_x_position // 2 + 9, y - settings_y_offset), screen, value)
|
||||||
|
@ -1153,34 +1124,42 @@ while run:
|
||||||
render_settings_text(setting_name.upper(),
|
render_settings_text(setting_name.upper(),
|
||||||
(settings_x_position // 2 + 9, y - settings_y_offset), screen)
|
(settings_x_position // 2 + 9, y - settings_y_offset), screen)
|
||||||
|
|
||||||
if setting_name == "gui color":
|
if setting_name == gui:
|
||||||
gui_color_slider = slider((settings_x_position // 2 - 26, y + 8), 360, value, slider_moving, setting)
|
gui_color_slider = slider((settings_x_position // 2 - 26, y + 8), 360, value, active_sliders, setting_name)
|
||||||
for slider_part in gui_color_slider:
|
for slider_part in gui_color_slider:
|
||||||
slider_part.draw(screen)
|
slider_part.draw(screen)
|
||||||
if dragging and gui_color_slider[2].rect.collidepoint(event.pos):
|
if dragging and gui_color_slider[2].rect.collidepoint(mouse_pos):
|
||||||
slider_moving = True
|
active_sliders[gui] = True
|
||||||
setting = setting_name
|
setting = setting_name
|
||||||
elif setting_name == "sensitivity":
|
elif not dragging:
|
||||||
sensitivity_slider = slider((settings_x_position // 2 - 26, y + 8), 100, value, slider_moving, setting)
|
active_sliders[gui] = False
|
||||||
|
elif setting_name == sensitivity:
|
||||||
|
sensitivity_slider = slider((settings_x_position // 2 - 26, y + 8), 100, value, active_sliders, setting_name)
|
||||||
for slider_part in sensitivity_slider:
|
for slider_part in sensitivity_slider:
|
||||||
slider_part.draw(screen)
|
slider_part.draw(screen)
|
||||||
if dragging and sensitivity_slider[2].rect.collidepoint(event.pos):
|
if dragging and sensitivity_slider[2].rect.collidepoint(mouse_pos):
|
||||||
slider_moving = True
|
active_sliders[sensitivity] = True
|
||||||
setting = setting_name
|
setting = setting_name
|
||||||
elif setting_name == "music":
|
elif not dragging:
|
||||||
music_volume_slider = slider((settings_x_position // 2 - 26, y + 8), 100, value, slider_moving, setting)
|
active_sliders[sensitivity] = False
|
||||||
|
elif setting_name == music:
|
||||||
|
music_volume_slider = slider((settings_x_position // 2 - 26, y + 8), 100, value, active_sliders, setting_name)
|
||||||
for slider_part in music_volume_slider:
|
for slider_part in music_volume_slider:
|
||||||
slider_part.draw(screen)
|
slider_part.draw(screen)
|
||||||
if dragging and music_volume_slider[2].rect.collidepoint(event.pos):
|
if dragging and music_volume_slider[2].rect.collidepoint(mouse_pos):
|
||||||
slider_moving = True
|
active_sliders[music] = True
|
||||||
setting = setting_name
|
setting = setting_name
|
||||||
elif setting_name == "sound":
|
elif not dragging:
|
||||||
sound_volume_slider = slider((settings_x_position // 2 - 26, y + 8), 100, value, slider_moving, setting)
|
active_sliders[music] = False
|
||||||
|
elif setting_name == sound:
|
||||||
|
sound_volume_slider = slider((settings_x_position // 2 - 26, y + 8), 100, value, active_sliders, setting_name)
|
||||||
for slider_part in sound_volume_slider:
|
for slider_part in sound_volume_slider:
|
||||||
slider_part.draw(screen)
|
slider_part.draw(screen)
|
||||||
if dragging and sound_volume_slider[2].rect.collidepoint(event.pos):
|
if dragging and sound_volume_slider[2].rect.collidepoint(mouse_pos):
|
||||||
slider_moving = True
|
active_sliders[sound] = True
|
||||||
setting = setting_name
|
setting = setting_name
|
||||||
|
elif not dragging:
|
||||||
|
active_sliders[sound] = False
|
||||||
|
|
||||||
screen.set_clip(None)
|
screen.set_clip(None)
|
||||||
|
|
||||||
|
|
|
@ -5,19 +5,19 @@
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
42,
|
50,
|
||||||
"00:00:44",
|
"00:00:49",
|
||||||
"00:00:19",
|
"00:00:24",
|
||||||
6
|
8
|
||||||
],
|
],
|
||||||
"2.png": [
|
"2.png": [
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
56,
|
57,
|
||||||
"00:00:23",
|
"00:00:23",
|
||||||
"00:00:23",
|
"00:00:23",
|
||||||
7
|
1
|
||||||
],
|
],
|
||||||
"3.png": [
|
"3.png": [
|
||||||
0,
|
0,
|
||||||
|
@ -32,10 +32,10 @@
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
7,
|
11,
|
||||||
"00:00:08",
|
"00:00:11",
|
||||||
"00:00:08",
|
"00:00:11",
|
||||||
7
|
0
|
||||||
],
|
],
|
||||||
"5.png": [
|
"5.png": [
|
||||||
0,
|
0,
|
||||||
|
|
|
@ -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": [[6, 3, 0, 15], [4, 13, 11, 9], [10, 8, 7, 5], [2, 14, 12, 1]], "selected_image": "images/albums/Birds/1.png"}, "current 3x3": {"matrix": [[3, 6, 7], [5, 4, 1], [0, 8, 2]], "selected_image": "/images/albums/Birds/1.png"}}
|
{"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": [[2, 12, 1, 3], [7, 5, 15, 11], [13, 10, 9, 0], [14, 6, 4, 8]], "selected_image": "images/albums/Original images/4.png"}, "current 3x3": {"matrix": [[3, 6, 7], [5, 4, 1], [0, 8, 2]], "selected_image": "/images/albums/Birds/1.png"}}
|
Loading…
Reference in New Issue