]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/notifications.qc
Merge branch 'master' into TimePath/waypointsprites
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / notifications.qc
index 9e98c61d53fda48288b7556d0d5419b9ecd17160..31f7e864c0ac4a5579dff63d86a9ec49b6d3f205 100644 (file)
@@ -946,8 +946,7 @@ void Create_Notification_Entity(
 #ifdef SVQC
 void Notification_GetCvars(void)
 {
-       float i;
-       for(i = 0; i <= NOTIF_CHOICE_COUNT; ++i)
+       for(int i = 0; i <= NOTIF_CHOICE_COUNT; ++i)
        {
                GetCvars_handleFloat(
                        get_cvars_s,
@@ -1562,6 +1561,14 @@ void Local_Notification(int net_type, int net_name, ...count)
                        #ifdef CSQC
                        if(notif.nent_icon != "")
                        {
+                               if ( notif.nent_iconargs != "" )
+                               {
+                                       notif.nent_icon = Local_Notification_sprintf(
+                                               notif.nent_icon,notif.nent_iconargs,
+                                               s1, s2, s3, s4, f1, f2, f3, f4);
+                                       // remove the newline added by Local_Notification_sprintf
+                                       notif.nent_icon = strzone(substring(notif.nent_icon,0,strlen(notif.nent_icon)-1));
+                               }
                                Local_Notification_HUD_Notify_Push(
                                        notif.nent_icon,
                                        notif.nent_hudargs,
@@ -1633,7 +1640,7 @@ void Local_Notification(int net_type, int net_name, ...count)
 
                        if(notif.nent_challow_var && (warmup_stage || (notif.nent_challow_var == 2)))
                        {
-                               switch(cvar_string(sprintf("notification_%s", notif.nent_name)))
+                               switch(cvar(sprintf("notification_%s", notif.nent_name)))
                                {
                                        case 1: found_choice = notif.nent_optiona; break;
                                        case 2: found_choice = notif.nent_optionb; break;
@@ -1763,21 +1770,19 @@ void Net_Notification_Remove()
        ));
        #endif
 
-       float i;
-       for(i = 0; i < 4; ++i) { if(self.nent_strings[i]) { strunzone(self.nent_strings[i]); } }
+       for(int i = 0; i < 4; ++i) { if(self.nent_strings[i]) { strunzone(self.nent_strings[i]); } }
        remove(self);
 }
 
-float Net_Write_Notification(entity client, float sf)
+float Net_Write_Notification(entity client, int sf)
 {
        if(Notification_ShouldSend(self.nent_broadcast, client, self.nent_client))
        {
-               float i;
                WriteByte(MSG_ENTITY, ENT_CLIENT_NOTIFICATION);
                WriteByte(MSG_ENTITY, self.nent_net_type);
                WriteShort(MSG_ENTITY, self.nent_net_name);
-               for(i = 0; i < self.nent_stringcount; ++i) { WriteString(MSG_ENTITY, self.nent_strings[i]); }
-               for(i = 0; i < self.nent_floatcount; ++i) { WriteLong(MSG_ENTITY, self.nent_floats[i]); }
+               for(int i = 0; i < self.nent_stringcount; ++i) { WriteString(MSG_ENTITY, self.nent_strings[i]); }
+               for(int i = 0; i < self.nent_floatcount; ++i) { WriteLong(MSG_ENTITY, self.nent_floats[i]); }
                return true;
        }
        else { return false; }
@@ -2040,7 +2045,7 @@ void Send_Notification(
                //   2. Manually handling each separate call on per-usage basis (See old CTF usage of verbose)
                entity found_choice;
 
-               #define RECURSE_FROM_CHOICE(ent,action) \
+               #define RECURSE_FROM_CHOICE(ent,action) do { \
                        if(notif.nent_challow_var && (warmup_stage || (notif.nent_challow_var == 2))) \
                        { \
                                switch(ent.msg_choice_choices[net_name - 1]) \
@@ -2059,22 +2064,29 @@ void Send_Notification(
                                found_choice.nent_stringcount, \
                                found_choice.nent_floatcount, \
                                s1, s2, s3, s4, \
-                               f1, f2, f3, f4);
+                               f1, f2, f3, f4); \
+               } while(0)
 
                switch(broadcast)
                {
                        case NOTIF_ONE_ONLY: // we can potentially save processing power with this broadcast method
                        {
                                if(IS_REAL_CLIENT(client))
-                                       { RECURSE_FROM_CHOICE(client, return) }
+                               {
+                                       RECURSE_FROM_CHOICE(client, return);
+                               }
                                break;
                        }
                        default:
                        {
                                entity to;
                                FOR_EACH_REALCLIENT(to)
-                                       { if(Notification_ShouldSend(broadcast, to, client))
-                                               { RECURSE_FROM_CHOICE(to, continue) } }
+                               {
+                                       if(Notification_ShouldSend(broadcast, to, client))
+                                       {
+                                               RECURSE_FROM_CHOICE(to, continue);
+                                       }
+                               }
                                break;
                        }
                }
@@ -2091,10 +2103,9 @@ void Send_Notification(
                net_notif.nent_stringcount = notif.nent_stringcount;
                net_notif.nent_floatcount = notif.nent_floatcount;
 
-               float i;
-               for(i = 0; i < net_notif.nent_stringcount; ++i)
+               for(int i = 0; i < net_notif.nent_stringcount; ++i)
                        { net_notif.nent_strings[i] = strzone(...(i, string)); }
-               for(i = 0; i < net_notif.nent_floatcount; ++i)
+               for(int i = 0; i < net_notif.nent_floatcount; ++i)
                        { net_notif.nent_floats[i] = ...((net_notif.nent_stringcount + i), float); }
 
                net_notif.think = Net_Notification_Remove;