X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fturrets%2Fconfig.qc;h=14c51be66122d463940a6f7d0c422d5a993b8528;hp=c2a609b15ca42f1764b0115f4bd9baf4ee0257b8;hb=1a366da10ff6cc0740b9c7754cc0d8c0fac356a4;hpb=c51698509e174e343dff48128a1dcfff1527c535 diff --git a/qcsrc/common/turrets/config.qc b/qcsrc/common/turrets/config.qc index c2a609b15..14c51be66 100644 --- a/qcsrc/common/turrets/config.qc +++ b/qcsrc/common/turrets/config.qc @@ -1,12 +1,29 @@ +#include "config.qh" + +#if defined(CSQC) +#elif defined(MENUQC) +#elif defined(SVQC) + #include + #include +#endif + // ========================== // Turret Config Generator // ========================== +#ifdef SVQC + +void T_Config_Queue(string setting) +{ + if (TUR_CONFIG_COUNT <= MAX_CONFIG_SETTINGS - 1) + config_queue[TUR_CONFIG_COUNT++] = setting; +} + void T_Config_Queue_Swap(float root, float child, entity pass) { - string oldroot = tur_config_queue[root]; - tur_config_queue[root] = tur_config_queue[child]; - tur_config_queue[child] = oldroot; + string oldroot = config_queue[root]; + config_queue[root] = config_queue[child]; + config_queue[child] = oldroot; } float T_Config_Queue_Compare(float root, float child, entity pass) @@ -15,8 +32,8 @@ float T_Config_Queue_Compare(float root, float child, entity pass) for(i = 1; i <= 100; ++i) { - r = str2chr(tur_config_queue[root], i); - c = str2chr(tur_config_queue[child], i); + r = str2chr(config_queue[root], i); + c = str2chr(config_queue[child], i); if(r == c) { continue; } else if(c > r) { return -1; } else { return 1; } @@ -25,37 +42,48 @@ float T_Config_Queue_Compare(float root, float child, entity pass) return 0; } -void Dump_Turret_Settings(void) +void Dump_Turret_Settings() { - float x, totalsettings = 0; - FOREACH(Turrets, it != TUR_Null, LAMBDA({ + #define TUR_CONFIG_WRITETOFILE(str) write_String_To_File(tur_config_file, str, tur_config_alsoprint) + int totalsettings = 0; + FOREACH(Turrets, it != TUR_Null, { // step 1: clear the queue TUR_CONFIG_COUNT = 0; - for(x = 0; x <= MAX_TUR_CONFIG; ++x) - { tur_config_queue[x] = string_null; } + for (int j = 0; j < MAX_CONFIG_SETTINGS; ++j) + config_queue[j] = string_null; // step 2: build new queue it.tr_config(it); + if (TUR_CONFIG_COUNT > MAX_CONFIG_SETTINGS - 1) + { + LOG_INFOF("\n^1Dumping aborted^7: hit MAX_CONFIG_SETTINGS (%d) limit\n\n", MAX_CONFIG_SETTINGS); + break; + } + // step 3: sort queue - heapsort(TUR_CONFIG_COUNT, T_Config_Queue_Swap, T_Config_Queue_Compare, world); + heapsort(TUR_CONFIG_COUNT, T_Config_Queue_Swap, T_Config_Queue_Compare, NULL); // step 4: write queue - TUR_CONFIG_WRITETOFILE(sprintf("// {{{ #%d: %s\n", i, it.turret_name)) - for(x = 0; x <= TUR_CONFIG_COUNT; ++x) - { TUR_CONFIG_WRITETOFILE(tur_config_queue[x]) } - TUR_CONFIG_WRITETOFILE("// }}}\n") + TUR_CONFIG_WRITETOFILE(sprintf("// {{{ #%d: %s\n", i, it.turret_name)); + for (int j = 0; j < TUR_CONFIG_COUNT; ++j) + TUR_CONFIG_WRITETOFILE(config_queue[j]); + TUR_CONFIG_WRITETOFILE("// }}}\n"); // step 5: debug info - LOG_INFO(sprintf("#%d: %s: %d settings...\n", i, it.turret_name, TUR_CONFIG_COUNT)); + LOG_INFOF("#%d: %s: %d settings...", i, it.turret_name, TUR_CONFIG_COUNT); totalsettings += TUR_CONFIG_COUNT; - })); + }); + #undef TUR_CONFIG_WRITETOFILE + + // extra information + if (TUR_CONFIG_COUNT <= MAX_CONFIG_SETTINGS - 1) + LOG_INFOF("Totals: %d turrets, %d settings", (REGISTRY_COUNT(Turrets) - 1), totalsettings); // clear queue now that we're finished TUR_CONFIG_COUNT = 0; - for(x = 0; x <= MAX_TUR_CONFIG; ++x) - { tur_config_queue[x] = string_null; } - - // extra information - LOG_INFO(sprintf("Totals: %d turrets, %d settings\n", (Turrets_COUNT - 1), totalsettings)); + for (int j = 0; j < MAX_CONFIG_SETTINGS; ++j) + config_queue[j] = string_null; } + +#endif