light: fixes to settings system

This commit is contained in:
Eric Wasylishen 2016-07-27 02:20:25 -06:00
parent a68979a57b
commit 2651c79307
2 changed files with 16 additions and 19 deletions

View File

@ -249,6 +249,14 @@ public:
bool isChanged() const { return _source != setting_source_t::DEFAULT; }
bool isLocked() const { return _source != setting_source_t::COMMANDLINE; }
std::string sourceString() const {
switch (_source) {
case setting_source_t::DEFAULT: return "default";
case setting_source_t::MAP: return "map";
case setting_source_t::COMMANDLINE: return "commandline";
}
}
bool isRegistered() { return _registered; }
void setRegistered() { _registered = true; }
};
@ -258,9 +266,6 @@ private:
bool _default, _value;
void setBoolValueInternal(bool f, setting_source_t newsource) {
if (f == _value) {
return;
}
if (changeSource(newsource)) {
_value = f;
}
@ -304,9 +309,6 @@ private:
float _default, _value, _min, _max;
void setFloatInternal(float f, setting_source_t newsource) {
if (f == _value) {
return;
}
if (changeSource(newsource)) {
if (f < _min) {
logprint("WARNING: '%s': %f is less than minimum value %f.\n",
@ -375,8 +377,6 @@ private:
public:
virtual void setStringValue(const std::string &str, bool locked = false) {
if (str == _value)
return;
if (changeSource(locked ? setting_source_t::COMMANDLINE : setting_source_t::MAP)) {
_value = str;
}
@ -428,13 +428,9 @@ private:
}
void transformAndSetVec3Value(const vec3_t val, setting_source_t newsource) {
vec3_t tmp;
transformVec3Value(val, tmp);
if (VectorCompare(tmp, _value)) {
return;
}
if (changeSource(newsource)) {
vec3_t tmp;
transformVec3Value(val, tmp);
VectorCopy(tmp, _value);
}
}

View File

@ -201,7 +201,7 @@ PrintOptionsSummary(void)
logprint(" \"%s\" was set to \"%s\" from %s\n",
setting->primaryName().c_str(),
setting->stringValue().c_str(),
setting->isLocked() ? "commandline" : "worldspawn");
setting->sourceString().c_str());
}
}
}
@ -1645,14 +1645,15 @@ main(int argc, const char **argv)
PrintUsage();
}
if (lockable_vec_t *vecsetting = dynamic_cast<lockable_vec_t *>(setting)) {
if (lockable_bool_t *boolsetting = dynamic_cast<lockable_bool_t *>(setting)) {
float v;
if (ParseVecOptional(&v, &i, argc, argv)) {
vecsetting->setFloatValueLocked(v);
boolsetting->setStringValue(std::to_string(v), true);
} else {
// FIXME: only do this for boolean settings.
vecsetting->setFloatValueLocked(true);
boolsetting->setBoolValueLocked(true);
}
} else if (lockable_vec_t *vecsetting = dynamic_cast<lockable_vec_t *>(setting)) {
vecsetting->setFloatValueLocked(ParseVec(&i, argc, argv));
} else if (lockable_vec3_t *vec3setting = dynamic_cast<lockable_vec3_t *>(setting)) {
vec3_t temp;
ParseVec3(temp, &i, argc, argv);