]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/notifications.qh
Remove for-loop workaround
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / notifications.qh
index 71b10c4c65a48dc7fec4792f3787d009a19f8fc8..1cb1adf51f368e9e97ad2d3b5afebc2cbb8595ee 100644 (file)
@@ -1,3 +1,9 @@
+#ifndef NOTIFICATIONS_H
+#define NOTIFICATIONS_H
+
+#include "constants.qh"
+#include "teams.qh"
+
 // ================================================
 //  Unified notification system, written by Samual
 //  Last updated: March, 2013
@@ -48,8 +54,8 @@ void Create_Notification_Entity(
     float typeId,
     float nameid,
     string namestring,
-    float strnum,
-    float flnum,
+    int strnum,
+    int flnum,
     /* MSG_ANNCE */
     float channel,
     string snd,
@@ -80,7 +86,7 @@ void Dump_Notifications(float fh, float alsoprint);
 void Debug_Notification(string input);
 #endif
 
-void Local_Notification(float net_type, float net_name, ...count);
+void Local_Notification(int net_type, int net_name, ...count);
 void Local_Notification_WOVA(
     float net_type, float net_name,
     float stringcount, float floatcount,
@@ -728,7 +734,7 @@ void Send_Notification_WOCOVA(
     MSG_CENTER_NOTIF(1, CENTER_TEAMCHANGE_SUICIDE,          0, 1, "",              CPID_TEAMCHANGE,       "1 f1", _("^K1Suicide in ^COUNT"), "") \
     MSG_CENTER_NOTIF(1, CENTER_TIMEOUT_BEGINNING,           0, 1, "",              CPID_TIMEOUT,          "1 f1", _("^F4Timeout begins in ^COUNT"), "") \
     MSG_CENTER_NOTIF(1, CENTER_TIMEOUT_ENDING,              0, 1, "",              CPID_TIMEOUT,          "1 f1", _("^F4Timeout ends in ^COUNT"), "") \
-    MSG_CENTER_NOTIF(1, CENTER_WEAPON_MINELAYER_LIMIT,      0, 1, "f1",            NO_CPID,               "0 0",  _("^BGYou cannot place more than ^F2%s^BG mines at a time"), "") 
+    MSG_CENTER_NOTIF(1, CENTER_WEAPON_MINELAYER_LIMIT,      0, 1, "f1",            NO_CPID,               "0 0",  _("^BGYou cannot place more than ^F2%s^BG mines at a time"), "")
 
 #define MULTITEAM_MULTI2(default,prefix,anncepre,infopre,centerpre) \
     MSG_MULTI_NOTIF(default, prefix##RED, anncepre##RED, infopre##RED, centerpre##RED) \
@@ -934,32 +940,32 @@ void Send_Notification_WOCOVA(
 // MAKE SURE THIS IS ALWAYS SYNCHRONIZED WITH THE DUMP
 // NOTIFICATIONS FUNCTION IN THE .QC FILE!
 
-#define NOTIF_ADD_AUTOCVAR(name,default) var float autocvar_notification_##name = default;
+#define NOTIF_ADD_AUTOCVAR(name,default) float autocvar_notification_##name = default;
 
-var float autocvar_notification_show_location = false;
-var string autocvar_notification_show_location_string = ""; //_(" at the %s");
-var float autocvar_notification_show_sprees = true;
-var float autocvar_notification_show_sprees_info = 3; // 0 = off, 1 = target only, 2 = attacker only, 3 = target and attacker
-var float autocvar_notification_show_sprees_info_newline = true;
-var float autocvar_notification_show_sprees_info_specialonly = true;
-var float autocvar_notification_errors_are_fatal = true;
-var float autocvar_notification_lifetime_runtime = 0.5;
-var float autocvar_notification_lifetime_mapload = 10;
-var float autocvar_notification_debug = false;
+float autocvar_notification_show_location = false;
+string autocvar_notification_show_location_string = ""; //_(" at the %s");
+float autocvar_notification_show_sprees = true;
+float autocvar_notification_show_sprees_info = 3; // 0 = off, 1 = target only, 2 = attacker only, 3 = target and attacker
+float autocvar_notification_show_sprees_info_newline = true;
+float autocvar_notification_show_sprees_info_specialonly = true;
+float autocvar_notification_errors_are_fatal = true;
+float autocvar_notification_lifetime_runtime = 0.5;
+float autocvar_notification_lifetime_mapload = 10;
+float autocvar_notification_debug = false;
 
 #ifdef SVQC
 .float FRAG_VERBOSE;
 void Notification_GetCvars(void);
-var float autocvar_notification_server_allows_location = 1; // 0 = no, 1 = yes
+float autocvar_notification_server_allows_location = 1; // 0 = no, 1 = yes
 #else
-var float autocvar_notification_item_centerprinttime = 1.5;
+float autocvar_notification_item_centerprinttime = 1.5;
 
 // 0 = no, 1 = yes, 2 = forced on for all MSG_INFO notifs
 // DISABLED IN CODE, BUT ENABLED IN CONFIG FOR COMPATIBILITY WITH OLD CLIENTS
-var float autocvar_notification_allow_chatboxprint = 0;
+float autocvar_notification_allow_chatboxprint = 0;
 
-var float autocvar_notification_show_sprees_center = true;
-var float autocvar_notification_show_sprees_center_specialonly = true;
+float autocvar_notification_show_sprees_center = true;
+float autocvar_notification_show_sprees_center_specialonly = true;
 #endif
 
 
@@ -1068,7 +1074,9 @@ const float ARG_DC = 6; // unique result to durcnt/centerprint
     ARG_CASE(ARG_SV,        "death_team",    Team_ColoredFullName(f1)) \
     ARG_CASE(ARG_CS,        "death_team",    Team_ColoredFullName(f1 - 1))
 
-#define NOTIF_HIT_MAX(count,funcname) if(sel_num == count) { backtrace(sprintf("%s: Hit maximum arguments!\n", funcname)); break; }
+#define NOTIF_HIT_MAX(count,funcname) do { \
+    if(sel_num == count) { backtrace(sprintf("%s: Hit maximum arguments!\n", funcname)); break; } \
+} while(0)
 #define NOTIF_HIT_UNKNOWN(token,funcname) { backtrace(sprintf("%s: Hit unknown token in selected string! '%s'\n", funcname, selected)); break; }
 
 #define KILL_SPREE_LIST \
@@ -1269,6 +1277,38 @@ string notif_arg_spree_inf(float type, string input, string player, float spree)
 //  Initialization/Create Declarations
 // ====================================
 
+enum {
+    NO_CPID
+,   CPID_ASSAULT_ROLE
+,   CPID_ROUND
+,   CPID_CAMPCHECK
+,   CPID_CTF_CAPSHIELD
+,   CPID_CTF_LOWPRIO
+,   CPID_CTF_PASS
+,   CPID_STALEMATE
+,   CPID_NADES
+,   CPID_IDLING
+,   CPID_ITEM
+,   CPID_PREVENT_JOIN
+,   CPID_KEEPAWAY
+,   CPID_KEEPAWAY_WARN
+,   CPID_KEYHUNT
+,   CPID_KEYHUNT_OTHER
+,   CPID_LMS
+,   CPID_MISSING_TEAMS
+,   CPID_MISSING_PLAYERS
+,   CPID_INSTAGIB_FINDAMMO
+,   CPID_MOTD
+,   CPID_NIX
+,   CPID_ONSLAUGHT
+,   CPID_OVERTIME
+,   CPID_POWERUP
+,   CPID_RACE_FINISHLAP
+,   CPID_TEAMCHANGE
+,   CPID_TIMEOUT
+// always last
+,   NOTIF_CPID_COUNT
+};
 // notification counts
 const float NOTIF_FIRST = 1;
 float NOTIF_ANNCE_COUNT;
@@ -1276,7 +1316,6 @@ float NOTIF_INFO_COUNT;
 float NOTIF_CENTER_COUNT;
 float NOTIF_MULTI_COUNT;
 float NOTIF_CHOICE_COUNT;
-float NOTIF_CPID_COUNT;
 
 // notification limits -- INCREASE AS NECESSARY
 const float NOTIF_ANNCE_MAX   = 100;
@@ -1428,11 +1467,9 @@ float notif_global_error;
 #define MSG_CENTER_NOTIF(default,name,strnum,flnum,args,cpid,durcnt,normal,gentle) \
     NOTIF_ADD_AUTOCVAR(name, default) \
     float name; \
-    float cpid; \
     void RegisterNotification_##name() \
     { \
         SET_FIELD_COUNT(name, NOTIF_FIRST, NOTIF_CENTER_COUNT) \
-        SET_FIELD_COUNT(cpid, NOTIF_FIRST, NOTIF_CPID_COUNT) \
         CHECK_MAX_COUNT(name, NOTIF_CENTER_MAX, NOTIF_CENTER_COUNT, "MSG_CENTER") \
         Create_Notification_Entity( \
             /* COMMON ======================== */ \
@@ -1471,7 +1508,7 @@ float notif_global_error;
 
 #define MSG_MULTI_NOTIF(default,name,anncename,infoname,centername) \
     NOTIF_ADD_AUTOCVAR(name, default) \
-    float name; \
+    int name; \
     void RegisterNotification_##name() \
     { \
         SET_FIELD_COUNT(name, NOTIF_FIRST, NOTIF_MULTI_COUNT) \
@@ -1612,3 +1649,4 @@ ACCUMULATE_FUNCTION(RegisterNotifications, RegisterNotifications_Done);
 #undef MSG_CHOICE_NOTIF
 
 #undef NOTIF_ADD_AUTOCVAR
+#endif