--- Daodan/src/Daodan_Config.c 2015/03/23 23:29:19 1017 +++ Daodan/src/Daodan_Config.c 2021/10/24 02:50:32 1162 @@ -299,6 +299,9 @@ void DDrConfig_Print() break; case C_CMD: break; + case C_FLOAT: + STARTUPMESSAGE("Option %s.%s = %f (def %f)", config[s].name, co->name, co->value.floatVal, co->defaultValue.floatVal); + break; default: STARTUPMESSAGE("Option %s.%s = %d (def %d)", config[s].name, co->name, co->value.intBoolVal, co->defaultValue.intBoolVal); } @@ -360,6 +363,8 @@ const char* DDrConfig_GetOptionTypeName( switch (type) { case C_INT: return "Int"; + case C_FLOAT: + return "Float"; case C_BOOL: return "Bool"; case C_STRING: @@ -390,6 +395,10 @@ const char* DDrConfig_GetOptionValueStri return (boolV ? "true" : "false"); case C_CMD: return 0; + case C_FLOAT: + val = malloc(50); + sprintf(val, "%f", optVal->floatVal); + return val; default: val = malloc(20); sprintf(val, "%d", boolV); @@ -410,6 +419,8 @@ char DDrConfig_NonDefaultOptionValue(Con return 0; case C_INT: return opt->defaultValue.intBoolVal != opt->value.intBoolVal; + case C_FLOAT: + return opt->defaultValue.floatVal != opt->value.floatVal; } return 0; } @@ -526,6 +537,9 @@ void DDrIniCallback(const char* section, case C_INT: co->value.intBoolVal = strtol(value, NULL, 0); break; + case C_FLOAT: + co->value.floatVal = strtof(value, NULL); + break; case C_BOOL: co->value.intBoolVal = !_stricmp(value, "true"); break;