]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/notifications.qc
Merge branch 'master' into Melanosuchus/minigames
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / notifications.qc
index 64daa613f894df703313f96310f9f84a334d1322..230b74834dfa65a7e90bbbb6c86af5df1e8e88e8 100644 (file)
@@ -1,18 +1,8 @@
 #if defined(CSQC)
 #if defined(CSQC)
-       #include "../dpdefs/csprogsdefs.qc"
-       #include "../client/Defs.qc"
-       #include "teams.qh"
-       #include "util.qh"
-       #include "buffs.qh"
-       #include "counting.qh"
-       #include "weapons/weapons.qh"
-       #include "../client/autocvars.qh"
-       #include "notifications.qh"
-       #include "../client/main.qh"
 #elif defined(MENUQC)
 #elif defined(SVQC)
 #elif defined(MENUQC)
 #elif defined(SVQC)
-       #include "../dpdefs/progsdefs.qc"
-    #include "../dpdefs/dpextensions.qc"
+       #include "../dpdefs/progsdefs.qh"
+    #include "../dpdefs/dpextensions.qh"
     #include "constants.qh"
     #include "teams.qh"
     #include "counting.qh"
     #include "constants.qh"
     #include "teams.qh"
     #include "counting.qh"
@@ -332,7 +322,7 @@ string Process_Notif_Args(
        string selected, remaining = args;
        float sel_num = 0;
 
        string selected, remaining = args;
        float sel_num = 0;
 
-       for(0;(remaining != "");)
+       for (;(remaining != "");)
        {
                selected = car(remaining); remaining = cdr(remaining);
 
        {
                selected = car(remaining); remaining = cdr(remaining);
 
@@ -506,8 +496,8 @@ void Create_Notification_Entity(
        int typeId,
        int nameid,
        string namestring,
        int typeId,
        int nameid,
        string namestring,
-       float strnum,
-       float flnum,
+       int strnum,
+       int flnum,
        /* MSG_ANNCE */
        float channel,
        string snd,
        /* MSG_ANNCE */
        float channel,
        string snd,
@@ -1386,15 +1376,13 @@ void Local_Notification_HUD_Notify_Push(
 
 void Local_Notification_centerprint_generic(
        string input, string durcnt,
 
 void Local_Notification_centerprint_generic(
        string input, string durcnt,
-       float cpid, float f1, float f2)
+       int cpid, float f1, float f2)
 {
 {
-       string selected;
-       float sel_num;
        arg_slot[0] = ""; arg_slot[1] = "";
 
        arg_slot[0] = ""; arg_slot[1] = "";
 
-       for(sel_num = 0;(durcnt != "");)
+       for(int sel_num = 0;(durcnt != "");)
        {
        {
-               selected = car(durcnt); durcnt = cdr(durcnt);
+               string selected = car(durcnt); durcnt = cdr(durcnt);
                NOTIF_HIT_MAX(NOTIF_MAX_DURCNT, "Local_Notification_centerprint_generic");
                switch(strtolower(selected))
                {
                NOTIF_HIT_MAX(NOTIF_MAX_DURCNT, "Local_Notification_centerprint_generic");
                switch(strtolower(selected))
                {
@@ -1435,7 +1423,7 @@ void Local_Notification_centerprint_generic(
 }
 #endif
 
 }
 #endif
 
-void Local_Notification(float net_type, float net_name, ...count)
+void Local_Notification(int net_type, int net_name, ...count)
 {
        // check if this should be aborted
        if(net_name == NOTIF_ABORT)
 {
        // check if this should be aborted
        if(net_name == NOTIF_ABORT)
@@ -1574,6 +1562,14 @@ void Local_Notification(float net_type, float net_name, ...count)
                        #ifdef CSQC
                        if(notif.nent_icon != "")
                        {
                        #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,
                                Local_Notification_HUD_Notify_Push(
                                        notif.nent_icon,
                                        notif.nent_hudargs,
@@ -1645,7 +1641,7 @@ void Local_Notification(float net_type, float net_name, ...count)
 
                        if(notif.nent_challow_var && (warmup_stage || (notif.nent_challow_var == 2)))
                        {
 
                        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;
                                {
                                        case 1: found_choice = notif.nent_optiona; break;
                                        case 2: found_choice = notif.nent_optionb; break;
@@ -1667,7 +1663,7 @@ void Local_Notification(float net_type, float net_name, ...count)
 
 // WOVA = Without Variable Arguments
 void Local_Notification_WOVA(
 
 // WOVA = Without Variable Arguments
 void Local_Notification_WOVA(
-       float net_type, float net_name,
+       int net_type, float net_name,
        float stringcount, float floatcount,
        string s1, string s2, string s3, string s4,
        float f1, float f2, float f3, float f4)
        float stringcount, float floatcount,
        string s1, string s2, string s3, string s4,
        float f1, float f2, float f3, float f4)
@@ -1688,8 +1684,8 @@ void Local_Notification_WOVA(
 #ifdef CSQC
 void Read_Notification(float is_new)
 {
 #ifdef CSQC
 void Read_Notification(float is_new)
 {
-       float net_type = ReadByte();
-       float net_name = ReadShort();
+       int net_type = ReadByte();
+       int net_name = ReadShort();
 
        entity notif;
 
 
        entity notif;
 
@@ -1780,7 +1776,7 @@ void Net_Notification_Remove()
        remove(self);
 }
 
        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))
        {
 {
        if(Notification_ShouldSend(self.nent_broadcast, client, self.nent_client))
        {
@@ -2052,7 +2048,7 @@ void Send_Notification(
                //   2. Manually handling each separate call on per-usage basis (See old CTF usage of verbose)
                entity found_choice;
 
                //   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]) \
                        if(notif.nent_challow_var && (warmup_stage || (notif.nent_challow_var == 2))) \
                        { \
                                switch(ent.msg_choice_choices[net_name - 1]) \
@@ -2071,22 +2067,29 @@ void Send_Notification(
                                found_choice.nent_stringcount, \
                                found_choice.nent_floatcount, \
                                s1, s2, s3, s4, \
                                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))
 
                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)
                                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;
                        }
                }
                                break;
                        }
                }