From b960bcbd7fbb04a011288a2b9787878535d4e7d3 Mon Sep 17 00:00:00 2001 From: SallarShayegan Date: Fri, 28 Feb 2025 14:04:53 +0100 Subject: [PATCH] added a knobs instance for every fx_mode --- knobs.py | 11 +++++++---- main.py | 23 ++++++++++++++--------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/knobs.py b/knobs.py index 8d8b4a7..1c0d3ca 100644 --- a/knobs.py +++ b/knobs.py @@ -2,10 +2,11 @@ import pygame from colors import * from fonts import * from knob import * +import random class Knobs: - def __init__(self, gui, values): + def __init__(self, gui): self.gui = gui @@ -20,7 +21,9 @@ class Knobs: 'Gain' ] - self.values = values + self.values = [] + for i in range(len(knob_names)): + self.values.append(random.random()) # Create and position the knobs self.knobs_radius = self.gui.screenW / 25 @@ -31,7 +34,7 @@ class Knobs: y = knobs_y self.knobs = [] for i in range(8): - self.knobs.append(Knob(self, knob_names[i], self.knobs_radius, (x, y), values[i])) + self.knobs.append(Knob(self, knob_names[i], self.knobs_radius, (x, y), self.values[i])) y += self.knobs_radius + knobs_spacing if i == 3 or i == 6: x += self.knobs_radius + knobs_spacing @@ -39,7 +42,7 @@ class Knobs: def display_label(self, knob): label_fx_name = font_helvetica.render(knob.name, False, color_primary_light) - label_fx_value = font_helvetica.render('[ ' + str(knob.value*100) + '% ]', + label_fx_value = font_helvetica.render('[ ' + str(int(round(knob.value * 100, 0))) + '% ]', False, color_primary_light) label_x = self.gui.screenW - label_fx_name.get_width() - 20 diff --git a/main.py b/main.py index 1f34c0b..f36e5cd 100644 --- a/main.py +++ b/main.py @@ -14,7 +14,7 @@ class GuiMain: self.screenH = self.screen.get_height() self.screenW = self.screen.get_width() - fx_mode_labels = [ + self.fx_mode_labels = [ 'Strings', 'Beat', 'L-Loop', @@ -25,25 +25,30 @@ class GuiMain: # Create and position the fx_mode buttons self.fx_mode_buttons = [] + + self.fx_mode = 0 - for i in range(len(fx_mode_labels)): + for i in range(len(self.fx_mode_labels)): x = self.screenW * 2.5 / 19 y = i * self.screenH / 7.5 + 45 r_x = self.screenW * 0.35 / 19 r_y = (self.screenH-20) / 16 - self.fx_mode_buttons.append(LozengeButton(self, fx_mode_labels[i], (x,y), r_x, r_y)) - - self.fx_mode_buttons[0].focused = True - - self.knobs = Knobs(self, [0, 0.1, 0.4, 0.9, 0.2, 0.5, 0.8, 0.3]) + self.fx_mode_buttons.append(LozengeButton(self, self.fx_mode_labels[i], (x,y), r_x, r_y)) + + self.set_fx_mode(self.fx_mode_labels[self.fx_mode]) + + self.knobs = [] + for i in range(len(self.fx_mode_labels)): + self.knobs.append(Knobs(self)) self.clock = pygame.time.Clock() self.running = True self.run() def set_fx_mode(self, mode): + self.fx_mode = self.fx_mode_labels.index(mode) for b in self.fx_mode_buttons: - if b.name != mode: b.focused = False + b.focused = (b.name == mode) def run(self): while self.running: @@ -58,7 +63,7 @@ class GuiMain: # RENDER YOUR GAME HERE - self.knobs.display() + self.knobs[self.fx_mode].display() for button in self.fx_mode_buttons: button.display()