// Balance Config Generator
// ==========================
-void Dump_Weapon_Settings(float fh, float alsoprint)
+void W_Config_Queue_Swap(float root, float child, entity pass)
{
- float i;
- for(i = WEP_FIRST; i <= WEP_LAST; ++i)
- {
- WEP_ACTION(i, WR_CONFIG)
- }
-
-
- #define WEP_BAL_WRITE(a) { \
- fputs(fh, a); \
- if(alsoprint) { print(a); } }
- #define WEP_BAL_WRITE_ENTITY(description) { \
- notif_msg = \
- sprintf( \
- "seta notification_%s \"%d\" \"%s\"\n", \
- e.nent_name, e.nent_default, description \
- ); \
- WEP_BAL_WRITE(notif_msg) }
- #define WEP_BAL_WRITE_HARDCODED(cvar,default,description) { \
- notif_msg = \
- sprintf( \
- "seta notification_%s \"%s\" \"%s\"\n", \
- cvar, default, description \
- ); \
- WEP_BAL_WRITE(notif_msg) }
-
- string notif_msg;
- float i;
- entity e;
+ string oldroot = wep_config_queue[root];
+ wep_config_queue[root] = wep_config_queue[child];
+ wep_config_queue[child] = oldroot;
+}
- NOTIF_WRITE(sprintf("\n// MSG_ANNCE notifications (count = %d):\n", NOTIF_ANNCE_COUNT));
- for(i = 1; i <= NOTIF_ANNCE_COUNT; ++i)
- {
- e = Get_Notif_Ent(MSG_ANNCE, i);
- if not(e) { backtrace("Dump_Notifications(): Missing notification entity!\n"); return; }
-
- NOTIF_WRITE_ENTITY(
- "Notification control cvar: 0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled)"
- );
- }
+float W_Config_Queue_Compare(float root, float child, entity pass)
+{
+ return strcmp(wep_config_queue[root], wep_config_queue[child]);
+}
- NOTIF_WRITE(sprintf("\n// MSG_INFO notifications (count = %d):\n", NOTIF_INFO_COUNT));
- for(i = 1; i <= NOTIF_INFO_COUNT; ++i)
+void Dump_Weapon_Settings(void)
+{
+ float i, x, totalsettings = 0;
+ for(i = WEP_FIRST; i <= WEP_LAST; ++i)
{
- e = Get_Notif_Ent(MSG_INFO, i);
- if not(e) { backtrace("Dump_Notifications(): Missing notification entity!\n"); return; }
-
- NOTIF_WRITE_ENTITY(
- "Notification control cvar: 0 = off, 1 = print to console, "
- "2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
- );
- }
+ // step 1: clear the queue
+ WEP_CONFIG_COUNT = 0;
+ for(x = 0; x <= MAX_WEP_CONFIG; ++x)
+ { wep_config_queue[x] = string_null; }
- NOTIF_WRITE(sprintf("\n// MSG_CENTER notifications (count = %d):\n", NOTIF_CENTER_COUNT));
- for(i = 1; i <= NOTIF_CENTER_COUNT; ++i)
- {
- e = Get_Notif_Ent(MSG_CENTER, i);
- if not(e) { backtrace("Dump_Notifications(): Missing notification entity!\n"); return; }
-
- NOTIF_WRITE_ENTITY(
- "Notification control cvar: 0 = off, 1 = centerprint"
- );
- }
+ // step 2: build new queue
+ WEP_ACTION(i, WR_CONFIG);
- NOTIF_WRITE(sprintf("\n// MSG_MULTI notifications (count = %d):\n", NOTIF_MULTI_COUNT));
- for(i = 1; i <= NOTIF_MULTI_COUNT; ++i)
- {
- e = Get_Notif_Ent(MSG_MULTI, i);
- if not(e) { backtrace("Dump_Notifications(): Missing notification entity!\n"); return; }
+ // step 3: sort queue
+ heapsort(WEP_CONFIG_COUNT, W_Config_Queue_Swap, W_Config_Queue_Compare, world);
- NOTIF_WRITE_ENTITY(
- "Notification control cvar: 0 = off, 1 = trigger subcalls"
- );
+ // step 4: write queue
+ WEP_CONFIG_WRITETOFILE(sprintf(
+ "// {{{ #%d: %s%s\n",
+ i,
+ WEP_NAME(i),
+ (((get_weaponinfo(i)).spawnflags & WEP_FLAG_MUTATORBLOCKED) ? " (MUTATOR WEAPON)" : "")
+ ))
+ for(x = 0; x <= WEP_CONFIG_COUNT; ++x) { WEP_CONFIG_WRITETOFILE(wep_config_queue[x]) }
+ WEP_CONFIG_WRITETOFILE("// }}}\n")
+
+ // step 5: debug info
+ print(sprintf("#%d: %s: %d settings...\n", i, WEP_NAME(i), WEP_CONFIG_COUNT));
+ totalsettings += WEP_CONFIG_COUNT;
}
- // edit these to match whichever cvars are used for specific notification options
- NOTIF_WRITE("\n// HARD CODED notification variables:\n");
-
- NOTIF_WRITE_HARDCODED(
- "allow_chatboxprint", "1",
- "Allow notifications to be printed to chat box by setting notification cvar to 2 "
- "(You can also set this cvar to 2 to force ALL notifications to be printed to the chatbox)"
- );
+ // clear queue now that we're finished
+ WEP_CONFIG_COUNT = 0;
+ for(x = 0; x <= MAX_WEP_CONFIG; ++x)
+ { wep_config_queue[x] = string_null; }
- NOTIF_WRITE(sprintf(
- strcat(
- "\n// Notification counts (total = %d): ",
- "MSG_ANNCE = %d, MSG_INFO = %d, MSG_CENTER = %d, MSG_MULTI = %d\n"
- ),
- (
- NOTIF_ANNCE_COUNT +
- NOTIF_INFO_COUNT +
- NOTIF_CENTER_COUNT +
- NOTIF_MULTI_COUNT
- ),
- NOTIF_ANNCE_COUNT,
- NOTIF_INFO_COUNT,
- NOTIF_CENTER_COUNT,
- NOTIF_MULTI_COUNT
- ));
-
- return;
- #undef NOTIF_WRITE_HARDCODED
- #undef NOTIF_WRITE_ENTITY
- #undef NOTIF_WRITE
+ // extra information
+ print(sprintf("Totals: %d weapons, %d settings\n", (i - 1), totalsettings));
}