added a knobs instance for every fx_mode

This commit is contained in:
SallarShayegan
2025-02-28 14:04:53 +01:00
parent 3eae3a7cf6
commit b960bcbd7f
2 changed files with 21 additions and 13 deletions

View File

@ -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

19
main.py
View File

@ -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',
@ -26,24 +26,29 @@ class GuiMain:
# Create and position the fx_mode buttons
self.fx_mode_buttons = []
for i in range(len(fx_mode_labels)):
self.fx_mode = 0
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.append(LozengeButton(self, self.fx_mode_labels[i], (x,y), r_x, r_y))
self.fx_mode_buttons[0].focused = True
self.set_fx_mode(self.fx_mode_labels[self.fx_mode])
self.knobs = Knobs(self, [0, 0.1, 0.4, 0.9, 0.2, 0.5, 0.8, 0.3])
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()