NumberSetting.observe

This commit is contained in:
MihailRis
2024-04-01 18:36:31 +03:00
parent f8ec75b121
commit 7374013eeb
3 changed files with 31 additions and 14 deletions
+13
View File
@@ -3,8 +3,10 @@
#include <limits>
#include <string>
#include <vector>
#include "../typedefs.h"
#include "../delegates.h"
enum class setting_format {
simple, percent
@@ -34,6 +36,7 @@ protected:
number_t value;
number_t min;
number_t max;
std::vector<consumer<number_t>> consumers;
public:
NumberSetting(
number_t value,
@@ -56,7 +59,13 @@ public:
}
void set(number_t value) {
if (value == this->value) {
return;
}
this->value = value;
for (auto& callback : consumers) {
callback(value);
}
}
number_t getMin() const {
@@ -71,6 +80,10 @@ public:
return (value - min) / (max - min);
}
void observe(consumer<number_t> callback) {
consumers.push_back(callback);
}
virtual void resetToDefault() override {
value = initial;
}