]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/notifications.qc
Slight cleanup
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / notifications.qc
index 43b27082cd8097f1c3e999df41eb6a8d06a3bbfb..1055fc80732c615642c8350d5d5cafcd8cdd199a 100644 (file)
@@ -64,7 +64,7 @@ string Fill_Notif_Args(string args, string input,
                        if(sel_num == 7) { print("Hit maximum arguments!\n"); break; }
                }
 
-               return sprintf(CCR(input), arg_slot[0], arg_slot[1], arg_slot[2], arg_slot[3], arg_slot[4], arg_slot[5], arg_slot[6], arg_slot[7]);
+               return sprintf(input, arg_slot[0], arg_slot[1], arg_slot[2], arg_slot[3], arg_slot[4], arg_slot[5], arg_slot[6], arg_slot[7]);
        }
 
        return "";
@@ -79,98 +79,49 @@ entity Get_Notif_Ent(float net_type, float net_name)
                case MSG_WEAPON: return msg_weapon_notifs[net_name - 1];
                case MSG_DEATH: return msg_death_notifs[net_name - 1];
        }
+       backtrace(sprintf("Get_Notif_Ent(%d, %d): Improper net type!\n", net_type, net_name));
        return world;
 }
 
-string Get_Field_Value(float field, float net_type, float net_name)
+string Get_Notif_Name(float net_type, float net_name)
 {
        entity e = Get_Notif_Ent(net_type, net_name);
-
-       dprint(sprintf("Get_Field_Value(%d, %d, %d); - name=%s, stringcount=%d, floatcount=%d...\n", field, net_type, net_name, e.nent_name, e.nent_stringcount, e.nent_floatcount));
-
-       switch(field)
-       {
-               case F_NAME: { return e.nent_name; }
-               case F_INFVAL: { return ftos(e.nent_infoname); }
-               case F_CENVAL: { return ftos(e.nent_centername); }
-               case F_STRNUM: { return ftos(e.nent_stringcount); }
-               case F_FLNUM: { return ftos(e.nent_floatcount); }
-       }
-       
+       if(e) { return e.nent_name; }
+       backtrace(sprintf("Get_Notif_Name(%d, %d): Could not find entity!\n", net_type, net_name));
        return "";
 }
 
-// get the actual name of a notification and return it as a string
-/*string Get_Field_Value(float field, float net_type, float net_name)
+float Get_Notif_Infval(float net_type, float net_name)
 {
-       #ifdef NOTIFICATIONS_DEBUG
-               dprint(sprintf("Get_Field_Value(%d, %d, %d);\n", field, net_type, net_name));
-       #endif
-       
-       #define GET_FIELD_VALUE_OUTPUT(field,name,strnum,flnum) switch(field) { \
-                       case F_NAME: { return VAR_TO_TEXT(name); } \
-                       case F_STRNUM: { return ftos(strnum); } \
-                       case F_FLNUM: { return ftos(flnum); } }
-
-       #define GET_FIELD_VALUE_OUTPUT_PAIR(field,name,infoname,centername,strnum,flnum) switch(field) { \
-                       case F_NAME: { return VAR_TO_TEXT(name); } \
-                       case F_INFNAME: { return VAR_TO_TEXT(infoname); } \
-                       case F_CENNAME: { return VAR_TO_TEXT(centername); } \
-                       case F_INFVAL: { return ftos(infoname); } \
-                       case F_CENVAL: { return ftos(centername); } \
-                       case F_STRNUM: { return ftos(strnum); } \
-                       case F_FLNUM: { return ftos(flnum); } }
-
-       #define CLPSE_GETVALUE(name,arg,earg) \
-               #if name != NO_MSG \
-                       arg \
-               #else \
-                       earg \
-               #endif
+       entity e = Get_Notif_Ent(net_type, net_name);
+       if(e) { return e.nent_infoname; }
+       backtrace(sprintf("Get_Notif_Infval(%d, %d): Could not find entity!\n", net_type, net_name));
+       return NO_MSG;
+}
 
-       switch(net_type)
-       {
-               case MSG_INFO:
-               {
-                       #define MSG_INFO_NOTIF(name,strnum,flnum,args,hudargs,icon,normal,gentle) case name: { GET_FIELD_VALUE_OUTPUT(field,name,strnum,flnum) }
-                       NOTIF_SWITCH_LIST(MSG_INFO, net_name, return "")
-                       #undef MSG_INFO_NOTIF
-                       break;
-               }
-               case MSG_CENTER:
-               {
-                       #define MSG_CENTER_NOTIF(name,strnum,flnum,args,cpid,durcnt,normal,gentle) case name: { GET_FIELD_VALUE_OUTPUT(field,name,strnum,flnum) }
-                       NOTIF_SWITCH_LIST(MSG_CENTER, net_name, return "")
-                       #undef MSG_CENTER_NOTIF
-                       break;
-               }
-               case MSG_WEAPON:
-               {
-                       #define MSG_WEAPON_NOTIF(name,infoname,centername) case name: { GET_FIELD_VALUE_OUTPUT_PAIR(field,name, \
-                               CLPSE_GETVALUE(infoname, infoname, NO_MSG), CLPSE_GETVALUE(centername, centername, NO_MSG), \
-                               max(CLPSE_GETVALUE(infoname, stof(Get_Field_Value(F_STRNUM, MSG_INFO, infoname)), 0), CLPSE_GETVALUE(centername, stof(Get_Field_Value(F_STRNUM, MSG_CENTER, centername)), 0)), \
-                               max(CLPSE_GETVALUE(infoname, stof(Get_Field_Value(F_FLNUM, MSG_INFO, infoname)), 0), CLPSE_GETVALUE(centername, stof(Get_Field_Value(F_FLNUM, MSG_CENTER, centername)), 0))) }
-                       NOTIF_SWITCH_LIST(MSG_WEAPON, net_name, return "")
-                       #undef MSG_WEAPON_NOTIF
-                       break;
-               }
-               case MSG_DEATH:
-               {
-                       #define MSG_DEATH_NOTIF(name,infoname,centername) case name: { GET_FIELD_VALUE_OUTPUT_PAIR(field,name, \
-                               CLPSE_GETVALUE(infoname, infoname, NO_MSG), CLPSE_GETVALUE(centername, centername, NO_MSG), \
-                               max(CLPSE_GETVALUE(infoname, stof(Get_Field_Value(F_STRNUM, MSG_INFO, infoname)), 0), CLPSE_GETVALUE(centername, stof(Get_Field_Value(F_STRNUM, MSG_CENTER, centername)), 0)), \
-                               max(CLPSE_GETVALUE(infoname, stof(Get_Field_Value(F_FLNUM, MSG_INFO, infoname)), 0), CLPSE_GETVALUE(centername, stof(Get_Field_Value(F_FLNUM, MSG_CENTER, centername)), 0))) }
-                       NOTIF_SWITCH_LIST(MSG_DEATH, net_name, return "")
-                       #undef MSG_DEATH_NOTIF
-                       break;
-               }
-       }
+float Get_Notif_Cenval(float net_type, float net_name)
+{
+       entity e = Get_Notif_Ent(net_type, net_name);
+       if(e) { return e.nent_centername; }
+       backtrace(sprintf("Get_Notif_Cenval(%d, %d): Could not find entity!\n", net_type, net_name));
+       return NO_MSG;
+}
 
-       #undef GET_FIELD_VALUE_OUTPUT
-       #undef GET_FIELD_VALUE_OUTPUT_PAIR
-       #undef CLPSE_GETVALUE
-       return "";
-}*/
+float Get_Notif_Strnum(float net_type, float net_name)
+{
+       entity e = Get_Notif_Ent(net_type, net_name);
+       if(e) { return e.nent_stringcount; }
+       backtrace(sprintf("Get_Notif_Strnum(%d, %d): Could not find entity!\n", net_type, net_name));
+       return NO_MSG;
+}
+
+float Get_Notif_Flnum(float net_type, float net_name)
+{
+       entity e = Get_Notif_Ent(net_type, net_name);
+       if(e) { return e.nent_floatcount; }
+       backtrace(sprintf("Get_Notif_Flnum(%d, %d): Could not find entity!\n", net_type, net_name));
+       return NO_MSG;
+}
 #endif // ifndef MENUQC
 
 
@@ -181,32 +132,31 @@ string Get_Field_Value(float field, float net_type, float net_name)
 void Dump_Notifications(float fh, float alsoprint)
 {
        float MSG_INFO_NOTIFS = 0, MSG_CENTER_NOTIFS = 0, MSG_WEAPON_NOTIFS = 0, MSG_DEATH_NOTIFS = 0;
-       string notif_msg;
 
        #define NOTIF_WRITE(type,name,text) { \
                ++##type##_NOTIFS; \
-               notif_msg = sprintf("seta %s 1 // %s - %s\n", #name, #type, strreplace("\n", "\\n", text)); \
+               notif_msg = sprintf("seta %s 1 // %s - %s\n", name, #type, strreplace("\n", "\\n", text)); \
                fputs(fh, notif_msg); \
                if(alsoprint) { print(strreplace("^", "^^", notif_msg)); } }
+
+       #ifndef MENUQC
+       string notif_msg;
+       float i;
+       entity e;
+
+       for(i = 0; i < NOTIF_INFO_COUNT; ++i) { e = Get_Notif_Ent(MSG_INFO, i); NOTIF_WRITE(MSG_INFO, e.nent_name, e.nent_normal); }
+       for(i = 0; i < NOTIF_CENTER_COUNT; ++i) { e = Get_Notif_Ent(MSG_CENTER, i); NOTIF_WRITE(MSG_CENTER, e.nent_name, e.nent_normal); }
        
-       #define MSG_INFO_NOTIF(name,strnum,flnum,args,hudargs,icon,normal,gentle) NOTIF_WRITE(MSG_INFO, name, normal)
-       MSG_INFO_NOTIFICATIONS
-       #undef MSG_INFO_NOTIF
-       
-       #define MSG_CENTER_NOTIF(name,strnum,flnum,args,cpid,durcnt,normal,gentle) NOTIF_WRITE(MSG_CENTER, name, normal)
-       MSG_CENTER_NOTIFICATIONS
-       #undef MSG_CENTER_NOTIF
-       
-       #define MSG_WEAPON_NOTIF(name,infoname,centername) NOTIF_WRITE(MSG_WEAPON, name, \
-               sprintf("infoname: %s, centername: %s", VAR_TO_TEXT(infoname), VAR_TO_TEXT(centername)))
-       MSG_WEAPON_NOTIFICATIONS
-       #undef MSG_WEAPON_NOTIF
-       
-       #define MSG_DEATH_NOTIF(name,infoname,centername) NOTIF_WRITE(MSG_DEATH, name, \
-               sprintf("infoname: %s, centername: %s", VAR_TO_TEXT(infoname), VAR_TO_TEXT(centername)))
-       MSG_DEATH_NOTIFICATIONS
-       #undef MSG_DEATH_NOTIF
-       
+       for(i = 0; i < NOTIF_WEAPON_COUNT; ++i) { e = Get_Notif_Ent(MSG_WEAPON, i); NOTIF_WRITE(MSG_WEAPON, e.nent_name, sprintf("infoname: %s, centername: %s",
+               Get_Notif_Name(MSG_INFO, Get_Notif_Infval(MSG_WEAPON, i)),
+               Get_Notif_Name(MSG_CENTER, Get_Notif_Cenval(MSG_WEAPON, i)))); }
+               
+       for(i = 0; i < NOTIF_DEATH_COUNT; ++i) { e = Get_Notif_Ent(MSG_DEATH, i); NOTIF_WRITE(MSG_DEATH, e.nent_name, sprintf("infoname: %s, centername: %s",
+               Get_Notif_Name(MSG_INFO, Get_Notif_Infval(MSG_DEATH, i)),
+               Get_Notif_Name(MSG_CENTER, Get_Notif_Cenval(MSG_DEATH, i)))); }
+               
+       #endif
+
        print(sprintf("Notification counts: MSG_INFO = %d, MSG_CENTER = %d, MSG_WEAPON = %d, MSG_DEATH = %d\n",
                MSG_INFO_NOTIFS, MSG_CENTER_NOTIFS, MSG_WEAPON_NOTIFS, MSG_DEATH_NOTIFS));
        
@@ -264,8 +214,8 @@ void Local_Notification(float net_type, float net_name, ...count)
        }
        #endif
        
-       float stringcount = stof(Get_Field_Value(F_STRNUM, net_type, net_name));
-       float floatcount = stof(Get_Field_Value(F_FLNUM, net_type, net_name));
+       float stringcount = Get_Notif_Strnum(net_type, net_name);
+       float floatcount = Get_Notif_Flnum(net_type, net_name);
 
        string s1 = ((0 < stringcount) ? ...(0, string) : NO_STR_ARG);
        string s2 = ((1 < stringcount) ? ...(1, string) : NO_STR_ARG);
@@ -279,7 +229,7 @@ void Local_Notification(float net_type, float net_name, ...count)
        #ifdef NOTIFICATIONS_DEBUG
        {
                dprint(sprintf("Local_Notification(%d, %s, %s, %s, %s, %s, %d, %d, %d, %d);\n",
-                       net_type, Get_Field_Value(F_NAME, net_type, net_name),
+                       net_type, Get_Notif_Name(net_type, net_name),
                        s1, s2, s3, s4, f1, f2, f3, f4));
 
                if((stringcount + floatcount) > count)
@@ -332,15 +282,15 @@ void Local_Notification(float net_type, float net_name, ...count)
                                { \
                                        #if infoname != NO_MSG \
                                                Local_Notification_Without_VarArgs(MSG_INFO, infoname, \
-                                                       stof(Get_Field_Value(F_STRNUM, MSG_INFO, infoname)), \
-                                                       stof(Get_Field_Value(F_FLNUM, MSG_INFO, infoname)), \
+                                                       Get_Notif_Strnum(MSG_INFO, infoname), \
+                                                       Get_Notif_Flnum(MSG_INFO, infoname), \
                                                        s1, s2, s3, s4, f1, f2, f3, f4); \
                                        #endif \
                                        #ifdef CSQC \
                                                #if centername != NO_MSG \
                                                        Local_Notification_Without_VarArgs(MSG_CENTER, centername, \
-                                                               stof(Get_Field_Value(F_STRNUM, MSG_CENTER, centername)), \
-                                                               stof(Get_Field_Value(F_FLNUM, MSG_CENTER, centername)), \
+                                                               Get_Notif_Strnum(MSG_CENTER, centername), \
+                                                               Get_Notif_Flnum(MSG_CENTER, centername), \
                                                                s1, s2, s3, s4, f1, f2, f3, f4); \
                                                #endif \
                                        #endif \
@@ -358,15 +308,15 @@ void Local_Notification(float net_type, float net_name, ...count)
                                { \
                                        #if infoname != NO_MSG \
                                                Local_Notification_Without_VarArgs(MSG_INFO, infoname, \
-                                                       stof(Get_Field_Value(F_STRNUM, MSG_INFO, infoname)), \
-                                                       stof(Get_Field_Value(F_FLNUM, MSG_INFO, infoname)), \
+                                                       Get_Notif_Strnum(MSG_INFO, infoname), \
+                                                       Get_Notif_Flnum(MSG_INFO, infoname), \
                                                        s1, s2, s3, s4, f1, f2, f3, f4); \
                                        #endif \
                                        #ifdef CSQC \
                                                #if centername != NO_MSG \
                                                        Local_Notification_Without_VarArgs(MSG_CENTER, centername, \
-                                                               stof(Get_Field_Value(F_STRNUM, MSG_CENTER, centername)), \
-                                                               stof(Get_Field_Value(F_FLNUM, MSG_CENTER, centername)), \
+                                                               Get_Notif_Strnum(MSG_CENTER, centername), \
+                                                               Get_Notif_Flnum(MSG_CENTER, centername), \
                                                                s1, s2, s3, s4, f1, f2, f3, f4); \
                                                #endif \
                                        #endif \
@@ -403,8 +353,8 @@ void Read_Notification(float is_new)
        float net_type = ReadByte();
        float net_name = ReadShort();
 
-       float stringcount = stof(Get_Field_Value(F_STRNUM, net_type, net_name));
-       float floatcount = stof(Get_Field_Value(F_FLNUM, net_type, net_name));
+       float stringcount = Get_Notif_Strnum(net_type, net_name);
+       float floatcount = Get_Notif_Flnum(net_type, net_name);
 
        string s1 = ((stringcount >= 1) ? ReadString() : NO_STR_ARG);
        string s2 = ((stringcount >= 2) ? ReadString() : NO_STR_ARG);
@@ -416,7 +366,7 @@ void Read_Notification(float is_new)
        float f4 = ((floatcount == 4) ? ReadLong() : NO_FL_ARG);
 
        #ifdef NOTIFICATIONS_DEBUG
-               dprint(sprintf("Read_Notification(%d) at %f: net_name = %s.\n", is_new, time, Get_Field_Value(F_NAME, net_type, net_name)));
+               dprint(sprintf("Read_Notification(%d) at %f: net_name = %s.\n", is_new, time, Get_Notif_Name(net_type, net_name)));
        #endif
        
        if(is_new) { Local_Notification_Without_VarArgs(net_type, net_name, stringcount, floatcount, s1, s2, s3, s4, f1, f2, f3, f4); }
@@ -508,16 +458,13 @@ void Send_Notification(float broadcast, entity client,
        #endif
 
        // retreive counts for the arguments of this notification
-       float stringcount = stof(Get_Field_Value(F_STRNUM, net_type, net_name));
-       float floatcount = stof(Get_Field_Value(F_FLNUM, net_type, net_name));
-
-       entity e = Get_Notif_Ent(net_type, net_name);
-       print(sprintf("stringcount from ent: %d... floatcount from ent: %d\n", e.nent_stringcount, e.nent_floatcount));
+       float stringcount = Get_Notif_Strnum(net_type, net_name);
+       float floatcount = Get_Notif_Flnum(net_type, net_name);
 
        #ifdef NOTIFICATIONS_DEBUG
        {
                dprint(sprintf("Send_Notification(%d, %d, %s, stringcount: %d, floatcount: %d, varargs: %d);\n",
-                       broadcast, net_type, Get_Field_Value(F_NAME, net_type, net_name), stringcount, floatcount, count));
+                       broadcast, net_type, Get_Notif_Name(net_type, net_name), stringcount, floatcount, count));
 
                if((stringcount + floatcount) > count)
                        { backtrace(sprintf(strcat("Not enough arguments for Send_Notification! stringcount(%d) + floatcount(%d) > count(%d)\n", 
@@ -569,8 +516,8 @@ void Send_Notification_Legacy_Wrapper(float broadcast, entity client,
        string s1, string s2,
        float f1, float f2, float f3)
 {
-       float stringcount = stof(Get_Field_Value(F_STRNUM, net_type, net_name));
-       float floatcount = stof(Get_Field_Value(F_FLNUM, net_type, net_name));
+       float stringcount = Get_Notif_Strnum(net_type, net_name);
+       float floatcount = Get_Notif_Flnum(net_type, net_name);
        Send_Notification_Without_VarArgs(broadcast, client, net_type, net_name, stringcount, floatcount, s1, s2, NO_STR_ARG, NO_STR_ARG, f1, f2, f3, NO_FL_ARG);
 }