Major refactoring: State, mouse and more...
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "globals.h"
|
||||
#include "midi-node.h"
|
||||
#include "raylib.h"
|
||||
#include "raygui/raygui.h"
|
||||
@@ -11,15 +12,15 @@
|
||||
|
||||
#include <memory>
|
||||
#include <ranges>
|
||||
#include <set>
|
||||
|
||||
namespace VISEQ::APP::UI{
|
||||
class AppUI{
|
||||
public:
|
||||
AppUI() {}
|
||||
AppUI(AppSettings *settings, SIGNAL::SignalManager *sm, GraphManager *gm) : settings(settings), gm(gm), sm(sm) {}
|
||||
AppUI(SIGNAL::SignalManager *sm, GraphManager *gm) : gm(gm), sm(sm) {}
|
||||
|
||||
std::shared_ptr<State> state = State::get();
|
||||
|
||||
AppSettings *settings;
|
||||
GraphManager *gm;
|
||||
SIGNAL::SignalManager *sm;
|
||||
|
||||
@@ -31,7 +32,7 @@ namespace VISEQ::APP::UI{
|
||||
|
||||
void drawSideBar(){
|
||||
|
||||
GuiPanel((Rectangle){-1,-30,280,(float)settings->height + 31}, "");
|
||||
GuiPanel((Rectangle){-1,-30,280,(float)state->settings.height + 31}, "");
|
||||
const int s_controls = 25;
|
||||
//GuiSetStyle(BUTTON, STATE_FOCUSED, 0xFF0000FF);
|
||||
if(GuiButton((Rectangle){20, (float)s_controls, 80, 30}, "PLAY")) sm->play ? sm->pause() : sm->start();
|
||||
@@ -40,11 +41,11 @@ namespace VISEQ::APP::UI{
|
||||
|
||||
const int s_bpm = s_controls + 45;
|
||||
GuiLabel((Rectangle){20, (float)s_bpm, 120, 20}, "TIMING");
|
||||
GuiLabel((Rectangle){200, (float)s_bpm, 40, 20}, std::format("{}",settings->bpm).c_str());
|
||||
int _bpm = settings->bpm;
|
||||
GuiLabel((Rectangle){200, (float)s_bpm, 40, 20}, std::format("{}",state->settings.bpm).c_str());
|
||||
int _bpm = state->settings.bpm;
|
||||
// GuiSlider((Rectangle){20, (float)s_bpm + 25, 240, 20}, "", "", &_bpm, 1, 300);
|
||||
if(GuiSpinner((Rectangle){20, (float)s_bpm + 25, 240, 20}, "", &_bpm, 1, 300, bpm_spinner_edit_mode)) bpm_spinner_edit_mode = !bpm_spinner_edit_mode;
|
||||
settings->bpm = _bpm;
|
||||
state->settings.bpm = _bpm;
|
||||
|
||||
int s_midi = s_bpm + 75;
|
||||
GuiLabel((Rectangle){20, (float)s_midi, 240, 20}, "MIDI OUT");
|
||||
@@ -79,11 +80,11 @@ namespace VISEQ::APP::UI{
|
||||
DrawCircle(55, s_signal+80 + signal_configs*20, 6.0F, s->color);
|
||||
|
||||
int s_speed = round(s->speed);
|
||||
s->multiplier = settings->bpm / 120.0f;
|
||||
float signal_bpm = round(settings->bpm * s->multiplier * (s->speed / settings->speed));
|
||||
if(GuiSpinner((Rectangle){70, (float)s_signal+70 + signal_configs*20, 100, 20}, "", &s_speed, 1, 16 * settings->grid * 4, s->ui_edit_speed)) s->ui_edit_speed = !s->ui_edit_speed;
|
||||
if(GuiButton((Rectangle){200,(float)s_signal+70 + signal_configs*20, 30, 20}, "1/2")) s_speed = settings->speed / 2;
|
||||
//if(GuiButton((Rectangle){200,(float)s_signal+70 + signal_configs*20, 30, 20},"1/4")) s_speed = settings->speed / 4;
|
||||
s->multiplier = state->settings.bpm / 120.0f;
|
||||
float signal_bpm = round(state->settings.bpm * s->multiplier * (s->speed / state->settings.speed));
|
||||
if(GuiSpinner((Rectangle){70, (float)s_signal+70 + signal_configs*20, 100, 20}, "", &s_speed, 1, 16 * state->settings.grid * 4, s->ui_edit_speed)) s->ui_edit_speed = !s->ui_edit_speed;
|
||||
if(GuiButton((Rectangle){200,(float)s_signal+70 + signal_configs*20, 30, 20}, "1/2")) s_speed = state->settings.speed / 2;
|
||||
//if(GuiButton((Rectangle){200,(float)s_signal+70 + signal_configs*20, 30, 20},"1/4")) s_speed = state->settings.speed / 4;
|
||||
GuiLabel((Rectangle){195, (float)s_signal+70 + signal_configs*20, 30, 20}, std::format("{}",signal_bpm).c_str());
|
||||
GuiToggle((Rectangle){240, (float)s_signal+70 + signal_configs*20, 20, 20},"P", &s->run);
|
||||
s->speed = s_speed;
|
||||
@@ -95,8 +96,8 @@ namespace VISEQ::APP::UI{
|
||||
if(GuiButton((Rectangle){20, (float)s_nodes + 60, 240, 20}, "ADD RANDOM NODE")){
|
||||
gm->addMidiNode(Vec2Df{200.0f, 200.0f});
|
||||
}
|
||||
DrawText(std::format("{}", gm->nodes.size()).c_str(), 20, settings->height - 70, 15, VS_COLOR_WHITE);
|
||||
DrawFPS(20, settings->height - 30);
|
||||
DrawText(std::format("{}", gm->nodes.size()).c_str(), 20, state->settings.height - 70, 15, VS_COLOR_WHITE);
|
||||
DrawFPS(20, state->settings.height - 30);
|
||||
}
|
||||
|
||||
void DrawCenteredText(std::string text, Vec2Df position, int size, Color color){
|
||||
@@ -136,7 +137,7 @@ namespace VISEQ::APP::UI{
|
||||
GuiCheckBox((Rectangle){np.x + 160, np.y + y_channel, 20, 20}, "PITCH", &mn->send_pitch_bend);
|
||||
|
||||
int y_cc_note = y_channel + 120;
|
||||
switch(settings->mode){
|
||||
switch(state->settings.mode){
|
||||
case 0:{
|
||||
GuiLabel((Rectangle){np.x + 20, np.y + y_cc_note - 75, 220, 20}, "NOTE CHANNEL");
|
||||
GuiToggleGroup((Rectangle){np.x + 20, np.y + y_cc_note - 50, 25, 20}, "1;2;3;4;5;6;7;8\n9;10;11;12;13;14;15;16", &mn->midi_note_channel);
|
||||
|
||||
Reference in New Issue
Block a user