refactored main a bit

This commit is contained in:
Sebastian
2024-10-25 16:41:37 +02:00
parent f2f852e8dc
commit 18f12eb9f3
7 changed files with 438 additions and 233 deletions
+55
View File
@@ -0,0 +1,55 @@
#pragma once
#include "datatypes.h"
#include "node-manager.h"
#include "connection-manager.h"
#include "signal-manager.h"
#include "ui.h"
class AppState{
public:
AppState() : sm(&cm, &mutex), ui(&settings, &nm, &cm, &sm) {}
enum States {IDLE, CONFIG};
AppSettings settings;
States state;
std::mutex mutex;
ConnectionManager cm;
SignalManager sm;
NodeManager nm;
AppUI ui;
void updateMidiPorts(){
for(auto&n : nm.nodes){
for(auto& mo : sm.midi.midi_out_ports){
if(!n.midi_outs.contains(mo.number) && mo.enabled){
n.midi_outs[mo.number] = {mo.number, mo.port.port_name, false};
}
if(n.midi_outs.contains(mo.number) && !mo.enabled){
n.midi_outs.erase(mo.number);
}
}
}
}
void draw(Vec2D<float> *mouse_pos, Camera2D *camera){
mutex.lock();
updateMidiPorts();
nm.drawNodes(mouse_pos, camera);
cm.drawConnections(mouse_pos, camera);
sm.drawSignals(mouse_pos, camera);
mutex.unlock();
}
void drawUI(Vec2D<float> *mouse_pos, Camera2D *camera){
mutex.lock();
ui.draw(mouse_pos, camera);
mutex.unlock();
}
};