master
parent
11362ede0a
commit
41915d061b
93
main.py
93
main.py
|
@ -232,42 +232,40 @@ class Button:
|
|||
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, aspect):
|
||||
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))
|
||||
def __init__(self, position, value_range, value, dragging):
|
||||
self.position = position
|
||||
self.value_range = value_range
|
||||
self.value = value_range[0]
|
||||
self.dragging = False
|
||||
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):
|
||||
self.second_x
|
||||
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
|
||||
self.slider_pos[1] = self.position[1]+2
|
||||
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])
|
||||
|
||||
self.dragging = True
|
||||
|
||||
mouse_x = max(self.white_line.rect.x, min(event.pos[0], self.white_line.rect.x + self.white_line.rect.width))
|
||||
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)
|
||||
def draw(self, screen):
|
||||
self.first_line_img.draw(screen)
|
||||
self.second_line_img.draw(screen)
|
||||
self.slider_button.draw(screen)
|
||||
|
||||
|
||||
|
@ -776,12 +774,6 @@ slider_size = (80, 12)
|
|||
button_size = (10, 16)
|
||||
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():
|
||||
path_components = puzzle_data[f'current {puzzle_version}']['selected_image'].split('/')[2:]
|
||||
current_data = storage["albums"][path_components[0]]
|
||||
|
@ -1104,10 +1096,15 @@ while run:
|
|||
pygame.display.flip()
|
||||
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)
|
||||
screen.set_clip(clipped_rect)
|
||||
|
||||
gui_color_slider = Slider(50, (0, 255), 0, False)
|
||||
sensitivity_slider = Slider(50, (0, 100), 50, False)
|
||||
music_volume_slider = Slider(50, (0, 100), 50, False)
|
||||
sound_volume_slider = Slider(50, (0, 100), 50, False)
|
||||
|
||||
for index, setting_name in enumerate(settings_data):
|
||||
if setting_name != "keybinds":
|
||||
y = slider_size[1] - scroll_offset + index * (cons[0] + space_between_settings)
|
||||
|
@ -1116,20 +1113,24 @@ if current_mode == "settings":
|
|||
(settings_x_position // 2 + 9, y - settings_y_offset), screen)
|
||||
|
||||
if setting_name == "gui color":
|
||||
gui_color_slider.update_position((settings_x_position, y + 10))
|
||||
gui_color_slider.blit(screen)
|
||||
gui_color_slider.position = y
|
||||
gui_color_slider.value = value
|
||||
gui_color_slider.update_positions()
|
||||
elif setting_name == "sensitivity":
|
||||
sensitivity_slider.update_position((settings_x_position, y + 10))
|
||||
sensitivity_slider.blit(screen)
|
||||
sensitivity_slider.position = y
|
||||
sensitivity_slider.value = value
|
||||
sensitivity_slider.update_positions()
|
||||
elif setting_name == "music":
|
||||
music_volume_slider.update_position((settings_x_position, y + 10))
|
||||
music_volume_slider.blit(screen)
|
||||
music_volume_slider.position = y
|
||||
music_volume_slider.value = value
|
||||
music_volume_slider.update_positions()
|
||||
elif setting_name == "sound":
|
||||
sound_volume_slider.update_position((settings_x_position, y + 10))
|
||||
sound_volume_slider.blit(screen)
|
||||
sound_volume_slider.position = y
|
||||
sound_volume_slider.value = value
|
||||
sound_volume_slider.update_positions()
|
||||
|
||||
screen.set_clip(None)
|
||||
|
||||
pygame.display.flip()
|
||||
pygame.display.flip()
|
||||
|
||||
pygame.quit()
|
||||
|
|
Loading…
Reference in New Issue