X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fturrets%2Fconfig.qc;h=1a8c2cbe7705e4bf9bf3f037eb37aa8d48107b97;hb=565754a35f9e84a3b8e6eac08635ec27145b369a;hp=547b5c6f2a4f5570bb5c8b823585f57a65a61747;hpb=785232fc90ed7bd7038c79f65534a7e79efd7f45;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/turrets/config.qc b/qcsrc/common/turrets/config.qc index 547b5c6f2..19b64ff07 100644 --- a/qcsrc/common/turrets/config.qc +++ b/qcsrc/common/turrets/config.qc @@ -1,12 +1,28 @@ +#include "config.qh" +#if defined(CSQC) +#elif defined(MENUQC) +#elif defined(SVQC) + #include + #include "all.qh" +#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 +31,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,38 +41,48 @@ float T_Config_Queue_Compare(float root, float child, entity pass) return 0; } -void Dump_Turret_Settings(void) +void Dump_Turret_Settings() { - float i, x, totalsettings = 0; - for(i = TUR_FIRST; i <= TUR_LAST; ++i) - { + #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 - TUR_ACTION(i, TR_CONFIG); + 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, TUR_NAME(i))) - 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 - print(sprintf("#%d: %s: %d settings...\n", i, TUR_NAME(i), 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", (Turrets_COUNT - 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 - print(sprintf("Totals: %d turrets, %d settings\n", (i - 1), totalsettings)); + for (int j = 0; j < MAX_CONFIG_SETTINGS; ++j) + config_queue[j] = string_null; } + +#endif