soundboard/include/config.h

60 lines
991 B
C++

#pragma once
#include <cstdint>
#include <string>
#include <vector>
class Config {
public:
Config(const std::string binaryArgument);
~Config();
void load();
void save();
struct AudioConfig {
std::vector<std::string> devices;
float volume;
};
struct SampleConfig {
std::string file;
uint64_t offset;
uint64_t length;
float volume;
bool isValid() const;
};
struct ButtonConfig {
std::string name;
std::string key;
uint8_t width = DEFAULTWIDTH; // default is 6
std::vector<SampleConfig> samples;
bool isValid() const;
const static uint8_t DEFAULTWIDTH;
};
struct ShortcutConfig {
std::string up;
std::string down;
std::string left;
std::string right;
std::string play;
std::string stop;
};
struct RootConfig {
AudioConfig audio;
std::vector<std::vector<ButtonConfig>> buttons;
std::string audioPath;
ShortcutConfig shortcuts;
} rootConfig;
private:
std::string binaryPath;
const std::string file = "soundboard.json";
};