mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-11-13 20:27:10 +00:00
more intuitive file dialogs; texture config saving
This commit is contained in:
22
config.cpp
22
config.cpp
@@ -63,7 +63,9 @@ struct supersaver {
|
||||
virtual void reset() = 0;
|
||||
};
|
||||
|
||||
vector<shared_ptr<supersaver>> savers;
|
||||
typedef vector<shared_ptr<supersaver>> saverlist;
|
||||
|
||||
saverlist savers;
|
||||
|
||||
template<class T> struct dsaver : supersaver {
|
||||
T& val;
|
||||
@@ -77,7 +79,7 @@ template<class T> struct saver : dsaver<T> {};
|
||||
|
||||
template<class T, class U, class V> void addsaver(T& i, U name, V dft) {
|
||||
auto s = make_shared<saver<T>> (i);
|
||||
s->dft = i = dft;
|
||||
s->dft = dft;
|
||||
s->name = name;
|
||||
savers.push_back(s);
|
||||
}
|
||||
@@ -96,13 +98,17 @@ template<class T> struct saverenum : supersaver {
|
||||
void load(const string& s) { val = (T) atoi(s.c_str()); }
|
||||
};
|
||||
|
||||
template<class T, class U> void addsaverenum(T& i, U name) {
|
||||
template<class T, class U> void addsaverenum(T& i, U name, T dft) {
|
||||
auto s = make_shared<saverenum<T>> (i);
|
||||
s->dft = i;
|
||||
s->dft = dft;
|
||||
s->name = name;
|
||||
savers.push_back(s);
|
||||
}
|
||||
|
||||
template<class T, class U> void addsaverenum(T& i, U name) {
|
||||
addsaverenum(i, name, i);
|
||||
}
|
||||
|
||||
template<> struct saver<int> : dsaver<int> {
|
||||
saver<int>(int& val) : dsaver<int>(val) { }
|
||||
string save() { return its(val); }
|
||||
@@ -127,6 +133,12 @@ template<> struct saver<unsigned> : dsaver<unsigned> {
|
||||
void load(const string& s) { val = (unsigned) strtoll(s.c_str(), NULL, 16); }
|
||||
};
|
||||
|
||||
template<> struct saver<string> : dsaver<string> {
|
||||
saver<string>(string& val) : dsaver<string>(val) { }
|
||||
string save() { return val; }
|
||||
void load(const string& s) { val = s; }
|
||||
};
|
||||
|
||||
template<> struct saver<ld> : dsaver<ld> {
|
||||
saver<ld>(ld& val) : dsaver<ld>(val) { }
|
||||
string save() { return ftssmart(val); }
|
||||
@@ -318,6 +330,8 @@ void initConfig() {
|
||||
#if CAP_SHMUP
|
||||
shmup::initConfig();
|
||||
#endif
|
||||
|
||||
for(auto s: savers) s->reset();
|
||||
}
|
||||
|
||||
bool inSpecialMode() {
|
||||
|
||||
Reference in New Issue
Block a user