master
parent
11362ede0a
commit
41915d061b
119
main.py
119
main.py
|
@ -232,42 +232,40 @@ 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:
|
class Slider:
|
||||||
def __init__(self, position, value_range, aspect):
|
def __init__(self, position, value_range, value, dragging):
|
||||||
self.second_x= 80*aspect
|
|
||||||
self.slider_pos = self.handle_event()
|
|
||||||
self.first_line = Image((135, 38), position, (80, 12))
|
|
||||||
self.second_line = Image((135, 53), position, (self.second_x, 12))
|
|
||||||
self.slider_button = Button((218, 38), self.slider_pos, (10, 16))
|
|
||||||
self.position = position
|
self.position = position
|
||||||
self.value_range = value_range
|
self.value_range = value_range
|
||||||
self.value = value_range[0]
|
self.value = value
|
||||||
self.dragging = False
|
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):
|
def handle_event(self):
|
||||||
self.second_x
|
if self.dragging and pygame.mouse.get_pressed()[0]:
|
||||||
self.slider_pos[0] = self.position[0] #not really, 1. it takes value_range and current value, 2. it has to be movable only in slider x rect
|
mouse_x, mouse_y = pygame.mouse.get_pos()
|
||||||
self.slider_pos[1] = self.position[1]+2
|
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])
|
||||||
|
|
||||||
self.dragging = True
|
def draw(self, screen):
|
||||||
|
self.first_line_img.draw(screen)
|
||||||
mouse_x = max(self.white_line.rect.x, min(event.pos[0], self.white_line.rect.x + self.white_line.rect.width))
|
self.second_line_img.draw(screen)
|
||||||
value = ((mouse_x - self.white_line.rect.x) / (self.white_line.rect.width - self.slider_button.rect.width)) * 360
|
|
||||||
self.white_line.update_value(value)
|
|
||||||
self.blue_line.update_value(value)
|
|
||||||
self.slider_button.rect.x = mouse_x - self.slider_button.rect.width // 2
|
|
||||||
|
|
||||||
return self.slider_pos
|
|
||||||
|
|
||||||
def update_position(self, position):
|
|
||||||
self.position = position
|
|
||||||
self.white_line.position = position
|
|
||||||
self.blue_line.position = position
|
|
||||||
self.slider_button.window_position = (position[0], position[1] + (self.slider_button.size[1] - self.white_line.rect.height) // 2)
|
|
||||||
|
|
||||||
def blit(self, screen):
|
|
||||||
screen.blit(self.white_line.img, self.white_line.rect)
|
|
||||||
screen.blit(self.blue_line.img, self.blue_line.rect)
|
|
||||||
self.slider_button.draw(screen)
|
self.slider_button.draw(screen)
|
||||||
|
|
||||||
|
|
||||||
|
@ -776,12 +774,6 @@ slider_size = (80, 12)
|
||||||
button_size = (10, 16)
|
button_size = (10, 16)
|
||||||
space_between_settings = 20
|
space_between_settings = 20
|
||||||
|
|
||||||
gui_color_slider = Slider(slider_size, button_size, (settings_x_position, 10), (0, 360))
|
|
||||||
sensitivity_slider = Slider(slider_size, button_size, (settings_x_position, 58), (0, 100))
|
|
||||||
music_volume_slider = Slider(slider_size, button_size, (settings_x_position, 106), (0, 1))
|
|
||||||
sound_volume_slider = Slider(slider_size, button_size, (settings_x_position, 154), (0, 1))
|
|
||||||
|
|
||||||
|
|
||||||
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:]
|
||||||
current_data = storage["albums"][path_components[0]]
|
current_data = storage["albums"][path_components[0]]
|
||||||
|
@ -1104,32 +1096,41 @@ while run:
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
pygame.time.delay(16)
|
pygame.time.delay(16)
|
||||||
|
|
||||||
if current_mode == "settings":
|
if current_mode == "settings":
|
||||||
clipped_rect = pygame.Rect(non_movable_area.x, non_movable_area.y, settings_x_position, non_movable_area.height)
|
clipped_rect = pygame.Rect(non_movable_area.x, non_movable_area.y, settings_x_position, non_movable_area.height)
|
||||||
screen.set_clip(clipped_rect)
|
screen.set_clip(clipped_rect)
|
||||||
|
|
||||||
for index, setting_name in enumerate(settings_data):
|
gui_color_slider = Slider(50, (0, 255), 0, False)
|
||||||
if setting_name != "keybinds":
|
sensitivity_slider = Slider(50, (0, 100), 50, False)
|
||||||
y = slider_size[1] - scroll_offset + index * (cons[0] + space_between_settings)
|
music_volume_slider = Slider(50, (0, 100), 50, False)
|
||||||
value = settings_data[setting_name]
|
sound_volume_slider = Slider(50, (0, 100), 50, False)
|
||||||
render_settings_text(setting_name.upper(), value,
|
|
||||||
(settings_x_position // 2 + 9, y - settings_y_offset), screen)
|
|
||||||
|
|
||||||
if setting_name == "gui color":
|
for index, setting_name in enumerate(settings_data):
|
||||||
gui_color_slider.update_position((settings_x_position, y + 10))
|
if setting_name != "keybinds":
|
||||||
gui_color_slider.blit(screen)
|
y = slider_size[1] - scroll_offset + index * (cons[0] + space_between_settings)
|
||||||
elif setting_name == "sensitivity":
|
value = settings_data[setting_name]
|
||||||
sensitivity_slider.update_position((settings_x_position, y + 10))
|
render_settings_text(setting_name.upper(), value,
|
||||||
sensitivity_slider.blit(screen)
|
(settings_x_position // 2 + 9, y - settings_y_offset), screen)
|
||||||
elif setting_name == "music":
|
|
||||||
music_volume_slider.update_position((settings_x_position, y + 10))
|
|
||||||
music_volume_slider.blit(screen)
|
|
||||||
elif setting_name == "sound":
|
|
||||||
sound_volume_slider.update_position((settings_x_position, y + 10))
|
|
||||||
sound_volume_slider.blit(screen)
|
|
||||||
|
|
||||||
screen.set_clip(None)
|
if setting_name == "gui color":
|
||||||
|
gui_color_slider.position = y
|
||||||
|
gui_color_slider.value = value
|
||||||
|
gui_color_slider.update_positions()
|
||||||
|
elif setting_name == "sensitivity":
|
||||||
|
sensitivity_slider.position = y
|
||||||
|
sensitivity_slider.value = value
|
||||||
|
sensitivity_slider.update_positions()
|
||||||
|
elif setting_name == "music":
|
||||||
|
music_volume_slider.position = y
|
||||||
|
music_volume_slider.value = value
|
||||||
|
music_volume_slider.update_positions()
|
||||||
|
elif setting_name == "sound":
|
||||||
|
sound_volume_slider.position = y
|
||||||
|
sound_volume_slider.value = value
|
||||||
|
sound_volume_slider.update_positions()
|
||||||
|
|
||||||
pygame.display.flip()
|
screen.set_clip(None)
|
||||||
|
|
||||||
|
pygame.display.flip()
|
||||||
|
|
||||||
pygame.quit()
|
pygame.quit()
|
||||||
|
|
Loading…
Reference in New Issue