X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fnotifications.qc;h=600ddaa1b3237301833480c7ef92cb901333b1a0;hb=70b84d37e2cf1d5336c327cb43593024de2a2c6c;hp=24e20aa75296d7f77a735e292f99de272c7c285d;hpb=d3a7bb2616410f0252504af2a84e11fb4dac21a3;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/notifications.qc b/qcsrc/common/notifications.qc index 24e20aa75..600ddaa1b 100644 --- a/qcsrc/common/notifications.qc +++ b/qcsrc/common/notifications.qc @@ -1,11 +1,8 @@ #if defined(CSQC) #elif defined(MENUQC) #elif defined(SVQC) - #include "../dpdefs/progsdefs.qh" - #include "../dpdefs/dpextensions.qh" #include "constants.qh" #include "teams.qh" - #include "counting.qh" #include "../server/autocvars.qh" #include "../server/constants.qh" #include "../server/defs.qh" @@ -70,7 +67,7 @@ string Notification_CheckArgs_TypeName(float net_type, float net_name) { // check supplied type and name for errors string checkargs = ""; - #define CHECKARG_TYPENAME(type) case MSG_##type##: \ + #define CHECKARG_TYPENAME(type) case MSG_##type: \ { if(!net_name || (net_name > NOTIF_##type##_COUNT)) \ { checkargs = sprintf("Improper name: %d!", net_name); } break; } switch(net_type) @@ -297,7 +294,7 @@ string Process_Notif_Line( // done to both MSG_INFO and MSG_CENTER if(substring(input, (strlen(input) - 1), 1) == "\n") { - printf( + LOG_INFOF( strcat( "^1TRAILING NEW LINE AT END OF NOTIFICATION: ", "^7net_type = %s, net_name = %s, string = %s.\n" @@ -322,7 +319,7 @@ string Process_Notif_Args( string selected, remaining = args; float sel_num = 0; - for(0;(remaining != "");) + for (;(remaining != "");) { selected = car(remaining); remaining = cdr(remaining); @@ -332,7 +329,7 @@ string Process_Notif_Args( { if(sel_num == NOTIF_MAX_ARGS) { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION HAS TOO MANY ARGUMENTS: ", "^7net_type = %s, net_name = %s, max args = %d.\n" @@ -364,7 +361,7 @@ string Process_Notif_Args( #undef ARG_CASE_ARG_CS_SV_HA default: { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION WITH UNKNOWN TOKEN IN ARGUMENT STRING: ", "^7net_type = %s, net_name = %s, args arg = '%s'.\n" @@ -383,7 +380,7 @@ string Process_Notif_Args( { if(sel_num == NOTIF_MAX_HUDARGS) { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION HAS TOO MANY ARGUMENTS: ", "^7net_type = %s, net_name = %s, max hudargs = %d.\n" @@ -415,7 +412,7 @@ string Process_Notif_Args( #undef ARG_CASE_ARG_CS_SV_HA default: { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION WITH UNKNOWN TOKEN IN ARGUMENT STRING: ", "^7net_type = %s, net_name = %s, hudargs arg = '%s'.\n" @@ -434,7 +431,7 @@ string Process_Notif_Args( { if(sel_num == NOTIF_MAX_DURCNT) { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION HAS TOO MANY ARGUMENTS: ", "^7net_type = %s, net_name = %s, max durcnt = %d.\n" @@ -469,7 +466,7 @@ string Process_Notif_Args( if(ftos(stof(selected)) != "") { ++sel_num; } else { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION WITH UNKNOWN TOKEN IN ARGUMENT STRING: ", "^7net_type = %s, net_name = %s, durcnt arg = '%s'.\n" @@ -496,8 +493,8 @@ void Create_Notification_Entity( int typeId, int nameid, string namestring, - float strnum, - float flnum, + int strnum, + int flnum, /* MSG_ANNCE */ float channel, string snd, @@ -607,7 +604,7 @@ void Create_Notification_Entity( } else { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION WITH NO SOUND: ", "^7net_type = %s, net_name = %s.\n" @@ -654,7 +651,7 @@ void Create_Notification_Entity( } else if((hudargs == "") && (durcnt =="")) { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION HAS ARG COUNTS BUT NO ARGS OR HUDARGS OR DURCNT: ", "^7net_type = %s, net_name = %s, strnum = %d, flnum = %d\n" @@ -688,7 +685,7 @@ void Create_Notification_Entity( if(icon != "") { notif.nent_icon = strzone(icon); } else { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION HAS HUDARGS BUT NO ICON: ", "^7net_type = %s, net_name = %s.\n" @@ -701,7 +698,7 @@ void Create_Notification_Entity( } else if(icon != "") { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION HAS ICON BUT NO HUDARGS: ", "^7net_type = %s, net_name = %s.\n" @@ -720,7 +717,7 @@ void Create_Notification_Entity( if(cpid != NO_MSG) { notif.nent_cpid = cpid; } else { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION HAS DURCNT BUT NO CPID: ", "^7net_type = %s, net_name = %s.\n" @@ -762,7 +759,7 @@ void Create_Notification_Entity( // Check to make sure a string was chosen if(notif.nent_string == "") { - printf( + LOG_INFOF( strcat( "^1EMPTY NOTIFICATION: ", "^7net_type = %s, net_name = %s.\n" @@ -782,7 +779,7 @@ void Create_Notification_Entity( // Set MSG_MULTI string/float counts if((anncename == NO_MSG) && (infoname == NO_MSG) && (centername == NO_MSG)) { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION WITH NO SUBCALLS: ", "^7net_type = %s, net_name = %s.\n" @@ -826,7 +823,7 @@ void Create_Notification_Entity( { if((chtype == NO_MSG) || (optiona == NO_MSG) || (optionb == NO_MSG)) { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION IS MISSING CHOICE PARAMS: ", "^7net_type = %s, net_name = %s.\n" @@ -873,7 +870,7 @@ void Create_Notification_Entity( default: { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION WITH IMPROPER TYPE: ", "^7net_type = %d, net_name = %s.\n" @@ -916,7 +913,7 @@ void Create_Notification_Entity( default: { - printf( + LOG_INFOF( strcat( "^1NOTIFICATION WITH IMPROPER TYPE: ", "^7net_type = %d, net_name = %s.\n" @@ -946,8 +943,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, @@ -964,7 +960,7 @@ void Dump_Notifications(float fh, float alsoprint) { #define NOTIF_WRITE(a) { \ fputs(fh, a); \ - if(alsoprint) { print(a); } } + if(alsoprint) { LOG_INFO(a); } } #define NOTIF_WRITE_ENTITY(description) { \ notif_msg = \ sprintf( \ @@ -1195,8 +1191,8 @@ void Debug_Notification(string input) { switch(autocvar_notification_debug) { - case 1: { dprint(input); break; } - case 2: { print(input); break; } + case 1: { LOG_TRACE(input); break; } + case 2: { LOG_INFO(input); break; } } } #endif @@ -1288,7 +1284,7 @@ void Local_Notification_sound( )); #endif - sound( + _sound( world, soundchannel, sprintf( @@ -1376,15 +1372,13 @@ void Local_Notification_HUD_Notify_Push( 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] = ""; - 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)) { @@ -1425,7 +1419,7 @@ void Local_Notification_centerprint_generic( } #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) @@ -1564,6 +1558,14 @@ void Local_Notification(float net_type, float 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, @@ -1635,7 +1637,7 @@ void Local_Notification(float net_type, float 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; @@ -1657,7 +1659,7 @@ void Local_Notification(float net_type, float net_name, ...count) // 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) @@ -1678,8 +1680,8 @@ void Local_Notification_WOVA( #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; @@ -1752,7 +1754,7 @@ void Read_Notification(float is_new) #ifdef SVQC void Net_Notification_Remove() -{ +{SELFPARAM(); if (!self) { backtrace(sprintf("Net_Notification_Remove() at %f: Missing self!?\n", time)); return; } #ifdef NOTIFICATIONS_DEBUG @@ -1765,21 +1767,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) +bool Net_Write_Notification(entity this, 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; } @@ -1958,6 +1958,12 @@ void Send_Notification( if((notif.nent_stringcount + notif.nent_floatcount) > count) { + string s = + #ifdef NOTIFICATIONS_DEBUG + Get_Notif_BroadcastName(broadcast); + #else + ftos(broadcast); + #endif backtrace(sprintf( strcat( "Not enough arguments for Send_Notification(%s, ...)! ", @@ -1965,13 +1971,8 @@ void Send_Notification( "Check the definition and function call for accuracy...?\n" ), sprintf( - #ifdef NOTIFICATIONS_DEBUG "%s, '%s', %s, %s", - Get_Notif_BroadcastName(broadcast), - #else - "%d, '%s', %s, %s", - broadcast, - #endif + s, client.classname, Get_Notif_TypeName(net_type), notif.nent_name @@ -1984,6 +1985,12 @@ void Send_Notification( } else if((notif.nent_stringcount + notif.nent_floatcount) < count) { + string s = + #ifdef NOTIFICATIONS_DEBUG + Get_Notif_BroadcastName(broadcast); + #else + ftos(broadcast); + #endif backtrace(sprintf( strcat( "Too many arguments for Send_Notification(%s, ...)! ", @@ -1991,13 +1998,8 @@ void Send_Notification( "Check the definition and function call for accuracy...?\n" ), sprintf( - #ifdef NOTIFICATIONS_DEBUG "%s, '%s', %s, %s", - Get_Notif_BroadcastName(broadcast), - #else - "%d, '%s', %s, %s", - broadcast, - #endif + s, client.classname, Get_Notif_TypeName(net_type), notif.nent_name @@ -2042,7 +2044,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]) \ @@ -2061,22 +2063,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; } } @@ -2093,10 +2102,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;