X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fnotifications.qh;h=3d2d4969186bea4cdf04099d0a1fe26e07d34ffa;hp=136e093a8653b1773c932a603008225b9f5adebd;hb=546e752299244ed921ca175c78a28318c60165af;hpb=e6bc209c0d1918c8f36ffa4c09daf4d969fa2b06 diff --git a/qcsrc/common/notifications.qh b/qcsrc/common/notifications.qh index 136e093a86..3d2d496918 100644 --- a/qcsrc/common/notifications.qh +++ b/qcsrc/common/notifications.qh @@ -11,7 +11,9 @@ #define MSG_MULTI 5 // Subcall MSG_INFO and/or MSG_CENTER notifications #define MSG_CHOICE 6 // Choose which subcall wrapper to activate -#define NO_MSG -12345 +// negative confirmations +#define NO_MSG -12345 // allows various things to know when no information is added +#define NOTIF_ABORT -1234 // allows Send_Notification to safely abort sending #define EIGHT_VARS_TO_VARARGS_VARLIST \ VARITEM(1, 0, s1) \ @@ -46,15 +48,14 @@ void Create_Notification_Entity( float typeid, float nameid, string namestring, - float anncename, - float infoname, - float centername, - float channel, + float strnum, + float flnum, + /* MSG_ANNCE */ + float channel, string snd, float vol, float position, - float strnum, - float flnum, + /* MSG_INFO & MSG_CENTER */ string args, string hudargs, string icon, @@ -62,6 +63,13 @@ void Create_Notification_Entity( string durcnt, string normal, string gentle, + /* MSG_MULTI */ + float anncename, + float infoname, + float centername, + /* MSG_CHOICE */ + float challow_def, + float challow_var, float chtype, float optiona, float optionb); @@ -104,6 +112,12 @@ void Send_Notification( float net_type, float net_name, ...count); void Send_Notification_WOVA( + float broadcast, entity client, + float 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); +void Send_Notification_WOCOVA( float broadcast, entity client, float net_type, float net_name, string s1, string s2, string s3, string s4, @@ -117,9 +131,11 @@ void Send_Notification_WOVA( /* List of all notifications (including identifiers and display information) Possible Tokens: - default, name, channel, sound, volume, position, - anncename, infoname, centername, strnum, flnum, args, - hudargs, icon, cpid, durcnt, normal, gentle + default, name, strnum, flnum, + channel, sound, volume, position, + args, hudargs, icon, cpid, durcnt, normal, gentle, + anncename, infoname, centername, + challow, chtype, optiona, optionb Format Specifications: MSG_ANNCE: default: FLOAT: Default setting for whether the notification is enabled or not @@ -158,6 +174,15 @@ void Send_Notification_WOVA( anncename: VAR: Name of announcer notification for reference infoname: VAR: Name of info notification for reference centername: VAR: Name of centerprint notification for reference + MSG_CHOICE: + default: FLOAT: Default setting for whether the notification is enabled or not + ^-> 0 = disabled, 1 = select option A, 2 = selection option B + challow: FLOAT: Default setting for server allowing choices other than A + ^-> 0 = no choice, 1 = allowed in warmup, 2 = always allowed + name: VAR: Name of choice notification + chtype: VAR: Notification message type for options + optiona: VAR: Name of choice "A" notification for reference + optionb: VAR: Name of choice "B" notification for reference Messages with ^F1, ^BG, ^TC, etc etc in them will replace those strings with colors according to the cvars the user has chosen. This allows for @@ -176,9 +201,8 @@ void Send_Notification_WOVA( -ALWAYS reset a color after a name (this way they don't set it for the whole string). -NEVER re-declare an event twice. -NEVER add or remove tokens from the format, it SHOULD already work. - -MSG_INFO messages must ALWAYS end with a new line: \n -MSG_INFO hudargs must always be ATTACKER -> VICTIM - -MSG_CENTER should NOT end with a new line + -MSG_INFO and MSG_CENTER should NOT end with a new line General rules: -Be clean and simple with your notification naming, @@ -235,6 +259,56 @@ void Send_Notification_WOVA( MSG_ANNCE_NOTIF(2, ANNCE_NUM_8, CH_INFO, "8", VOL_BASEVOICE, ATTN_NONE) \ MSG_ANNCE_NOTIF(2, ANNCE_NUM_9, CH_INFO, "9", VOL_BASEVOICE, ATTN_NONE) \ MSG_ANNCE_NOTIF(2, ANNCE_NUM_10, CH_INFO, "10", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(2, ANNCE_NUM_GAMESTART_1, CH_INFO, "1", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(2, ANNCE_NUM_GAMESTART_2, CH_INFO, "2", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(2, ANNCE_NUM_GAMESTART_3, CH_INFO, "3", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(2, ANNCE_NUM_GAMESTART_4, CH_INFO, "4", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(2, ANNCE_NUM_GAMESTART_5, CH_INFO, "5", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_GAMESTART_6, CH_INFO, "6", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_GAMESTART_7, CH_INFO, "7", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_GAMESTART_8, CH_INFO, "8", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_GAMESTART_9, CH_INFO, "9", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_GAMESTART_10, CH_INFO, "10", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_IDLE_1, CH_INFO, "1", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_IDLE_2, CH_INFO, "2", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_IDLE_3, CH_INFO, "3", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_IDLE_4, CH_INFO, "4", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_IDLE_5, CH_INFO, "5", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_IDLE_6, CH_INFO, "6", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_IDLE_7, CH_INFO, "7", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_IDLE_8, CH_INFO, "8", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_IDLE_9, CH_INFO, "9", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_IDLE_10, CH_INFO, "10", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_KILL_1, CH_INFO, "1", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_KILL_2, CH_INFO, "2", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_KILL_3, CH_INFO, "3", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_KILL_4, CH_INFO, "4", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_KILL_5, CH_INFO, "5", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_KILL_6, CH_INFO, "6", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_KILL_7, CH_INFO, "7", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_KILL_8, CH_INFO, "8", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_KILL_9, CH_INFO, "9", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_KILL_10, CH_INFO, "10", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_RESPAWN_1, CH_INFO, "1", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_RESPAWN_2, CH_INFO, "2", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_RESPAWN_3, CH_INFO, "3", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_RESPAWN_4, CH_INFO, "4", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_RESPAWN_5, CH_INFO, "5", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_RESPAWN_6, CH_INFO, "6", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_RESPAWN_7, CH_INFO, "7", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_RESPAWN_8, CH_INFO, "8", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_RESPAWN_9, CH_INFO, "9", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_RESPAWN_10, CH_INFO, "10", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(2, ANNCE_NUM_ROUNDSTART_1, CH_INFO, "1", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(2, ANNCE_NUM_ROUNDSTART_2, CH_INFO, "2", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(2, ANNCE_NUM_ROUNDSTART_3, CH_INFO, "3", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_ROUNDSTART_4, CH_INFO, "4", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_ROUNDSTART_5, CH_INFO, "5", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_ROUNDSTART_6, CH_INFO, "6", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_ROUNDSTART_7, CH_INFO, "7", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_ROUNDSTART_8, CH_INFO, "8", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_ROUNDSTART_9, CH_INFO, "9", VOL_BASEVOICE, ATTN_NONE) \ + MSG_ANNCE_NOTIF(0, ANNCE_NUM_ROUNDSTART_10, CH_INFO, "10", VOL_BASEVOICE, ATTN_NONE) \ MSG_ANNCE_NOTIF(2, ANNCE_PREPARE, CH_INFO, "prepareforbattle", VOL_BASEVOICE, ATTN_NONE) \ MSG_ANNCE_NOTIF(1, ANNCE_REMAINING_FRAG_1, CH_INFO, "1fragleft", VOL_BASEVOICE, ATTN_NONE) \ MSG_ANNCE_NOTIF(1, ANNCE_REMAINING_FRAG_2, CH_INFO, "2fragsleft", VOL_BASEVOICE, ATTN_NONE) \ @@ -705,20 +779,25 @@ void Send_Notification_WOVA( MSG_MULTI_NOTIF(1, WEAPON_UZI_MURDER_SNIPE, NO_MSG, INFO_WEAPON_UZI_MURDER_SNIPE, NO_MSG) \ MSG_MULTI_NOTIF(1, WEAPON_UZI_MURDER_SPRAY, NO_MSG, INFO_WEAPON_UZI_MURDER_SPRAY, NO_MSG) -#define MULTITEAM_CHOICE(default,prefix,teams,chtype,optiona,optionb) \ - MSG_CHOICE_NOTIF(default, prefix##RED, chtype, optiona##RED, optionb##RED) \ - MSG_CHOICE_NOTIF(default, prefix##BLUE, chtype, optiona##BLUE, optionb##BLUE) \ +#define MULTITEAM_CHOICE(default,challow,prefix,teams,chtype,optiona,optionb) \ + MSG_CHOICE_NOTIF(default, challow, prefix##RED, chtype, optiona##RED, optionb##RED) \ + MSG_CHOICE_NOTIF(default, challow, prefix##BLUE, chtype, optiona##BLUE, optionb##BLUE) \ #if teams >= 3 \ - MSG_CHOICE_NOTIF(default, prefix##YELLOW, chtype, optiona##YELLOW, optionb##YELLOW) \ + MSG_CHOICE_NOTIF(default, challow, prefix##YELLOW, chtype, optiona##YELLOW, optionb##YELLOW) \ #endif \ #if teams >= 4 \ - MSG_CHOICE_NOTIF(default, prefix##PINK, chtype, optiona##PINK, optionb##PINK) \ + MSG_CHOICE_NOTIF(default, challow, prefix##PINK, chtype, optiona##PINK, optionb##PINK) \ #endif #define MSG_CHOICE_NOTIFICATIONS \ - MSG_CHOICE_NOTIF(1, CHOICE_FRAG, MSG_CENTER, CENTER_DEATH_MURDER_FRAG, CENTER_DEATH_MURDER_FRAG_VERBOSE) \ - MSG_CHOICE_NOTIF(1, CHOICE_FRAGGED, MSG_CENTER, CENTER_DEATH_MURDER_FRAGGED, CENTER_DEATH_MURDER_FRAGGED_VERBOSE) \ - MSG_CHOICE_NOTIF(1, CHOICE_TYPEFRAG, MSG_CENTER, CENTER_DEATH_MURDER_TYPEFRAG, CENTER_DEATH_MURDER_TYPEFRAG_VERBOSE) \ - MSG_CHOICE_NOTIF(1, CHOICE_TYPERFRAGGED, MSG_CENTER, CENTER_DEATH_MURDER_TYPEFRAGGED, CENTER_DEATH_MURDER_TYPEFRAGGED_VERBOSE) + MULTITEAM_CHOICE(1, 2, CHOICE_CTF_CAPTURE_BROKEN_, 2, MSG_INFO, INFO_CTF_CAPTURE_, INFO_CTF_CAPTURE_BROKEN_) \ + MULTITEAM_CHOICE(1, 2, CHOICE_CTF_CAPTURE_TIME_, 2, MSG_INFO, INFO_CTF_CAPTURE_, INFO_CTF_CAPTURE_TIME_) \ + MULTITEAM_CHOICE(1, 2, CHOICE_CTF_CAPTURE_UNBROKEN_, 2, MSG_INFO, INFO_CTF_CAPTURE_, INFO_CTF_CAPTURE_UNBROKEN_) \ + MSG_CHOICE_NOTIF(1, 2, CHOICE_CTF_PICKUP_TEAM, MSG_CENTER, CENTER_CTF_PICKUP_TEAM, CENTER_CTF_PICKUP_TEAM_VERBOSE) \ + MSG_CHOICE_NOTIF(1, 2, CHOICE_CTF_PICKUP_ENEMY, MSG_CENTER, CENTER_CTF_PICKUP_ENEMY, CENTER_CTF_PICKUP_ENEMY_VERBOSE) \ + MSG_CHOICE_NOTIF(1, 1, CHOICE_FRAG, MSG_CENTER, CENTER_DEATH_MURDER_FRAG, CENTER_DEATH_MURDER_FRAG_VERBOSE) \ + MSG_CHOICE_NOTIF(1, 1, CHOICE_FRAGGED, MSG_CENTER, CENTER_DEATH_MURDER_FRAGGED, CENTER_DEATH_MURDER_FRAGGED_VERBOSE) \ + MSG_CHOICE_NOTIF(1, 1, CHOICE_TYPEFRAG, MSG_CENTER, CENTER_DEATH_MURDER_TYPEFRAG, CENTER_DEATH_MURDER_TYPEFRAG_VERBOSE) \ + MSG_CHOICE_NOTIF(1, 1, CHOICE_TYPEFRAGGED, MSG_CENTER, CENTER_DEATH_MURDER_TYPEFRAGGED, CENTER_DEATH_MURDER_TYPEFRAGGED_VERBOSE) //MSG_CHOICE_NOTIF(2, CHOICE_) @@ -745,7 +824,6 @@ var float autocvar_notification_debug = FALSE; #ifdef SVQC .float FRAG_VERBOSE; void Notification_GetCvars(void); -var float autocvar_notification_server_allows_frag_verbose = 1; // 0 = no, 1 = warmup only, 2 = all the time var float autocvar_notification_server_allows_location = 1; // 0 = no, 1 = yes #else var float autocvar_notification_item_centerprinttime = 1.5; @@ -756,7 +834,6 @@ var float autocvar_notification_allow_chatboxprint = 0; var float autocvar_notification_show_sprees_center = TRUE; var float autocvar_notification_show_sprees_center_specialonly = TRUE; -var float autocvar_notification_frag_verbose = TRUE; #endif @@ -1064,21 +1141,8 @@ string notif_arg_spree_inf(float type, string input, string player, float spree) // Initialization/Create Declarations // ==================================== -#define NOTIF_FIRST 1 -#define NOTIF_MAX 1024 // limit of recursive functions with ACCUMULATE_FUNCTION - -// error detection -float notif_error; -float notif_global_error; - -// notification entities -entity msg_annce_notifs[NOTIF_MAX]; -entity msg_info_notifs[NOTIF_MAX]; -entity msg_center_notifs[NOTIF_MAX]; -entity msg_multi_notifs[NOTIF_MAX]; -entity msg_choice_notifs[NOTIF_MAX]; - // notification counts +#define NOTIF_FIRST 1 float NOTIF_ANNCE_COUNT; float NOTIF_INFO_COUNT; float NOTIF_CENTER_COUNT; @@ -1086,32 +1150,56 @@ float NOTIF_MULTI_COUNT; float NOTIF_CHOICE_COUNT; float NOTIF_CPID_COUNT; -// notification entity values +// notification limits -- INCREASE AS NECESSARY +#define NOTIF_ANNCE_MAX 200 +#define NOTIF_INFO_MAX 256 +#define NOTIF_CENTER_MAX 256 +#define NOTIF_MULTI_MAX 128 +#define NOTIF_CHOICE_MAX 16 +#define NOTIF_CPID_MAX 256 // should match NOTIF_CENTER_MAX + +// notification entities +entity msg_annce_notifs[NOTIF_ANNCE_MAX]; +entity msg_info_notifs[NOTIF_INFO_MAX]; +entity msg_center_notifs[NOTIF_CENTER_MAX]; +entity msg_multi_notifs[NOTIF_MULTI_MAX]; +entity msg_choice_notifs[NOTIF_CHOICE_MAX]; + +// common notification entity values .float nent_default; -.string nent_name; -.float nent_id; .float nent_enabled; -.entity nent_msgannce; -.entity nent_msginfo; -.entity nent_msgcenter; +.float nent_type; +.float nent_id; +.string nent_name; +.float nent_stringcount; +.float nent_floatcount; + +// MSG_ANNCE entity values .float nent_channel; .string nent_snd; .float nent_vol; .float nent_position; -.float nent_stringcount; -.float nent_floatcount; -.string nent_args; -.string nent_hudargs; -.string nent_icon; -.float nent_cpid; -.string nent_durcnt; -.string nent_string; - -.float nent_msgchtype; -.string nent_msgopa; -.string nent_msgopb; - -// networked notification values + +// MSG_INFO and MSG_CENTER entity values +.string nent_args; // used by both +.string nent_hudargs; // used by info +.string nent_icon; // used by info +.float nent_cpid; // used by center +.string nent_durcnt; // used by center +.string nent_string; // used by both + +// MSG_MULTI entity values +.entity nent_msgannce; +.entity nent_msginfo; +.entity nent_msgcenter; + +// MSG_CHOICE entity values +.float nent_challow_def; +.float nent_challow_var; +.entity nent_optiona; +.entity nent_optionb; + +// networked notification entity values .float nent_broadcast; .entity nent_client; .float nent_net_type; @@ -1119,38 +1207,52 @@ float NOTIF_CPID_COUNT; .string nent_strings[4]; .float nent_floats[4]; +// other notification properties +.float msg_choice_choices[NOTIF_CHOICE_MAX]; // set on each player containing MSG_CHOICE choices + +// initialization error detection +float notif_error; +float notif_global_error; + #define MSG_ANNCE_NOTIF(default,name,channel,sound,volume,position) \ NOTIF_ADD_AUTOCVAR(name, default) \ float name; \ void RegisterNotification_##name() \ { \ SET_FIELD_COUNT(name, NOTIF_FIRST, NOTIF_ANNCE_COUNT) \ - CHECK_MAX_COUNT(name, NOTIF_MAX, NOTIF_ANNCE_COUNT, "notifications") \ + CHECK_MAX_COUNT(name, NOTIF_ANNCE_MAX, NOTIF_ANNCE_COUNT, "MSG_ANNCE") \ Create_Notification_Entity( \ - default, /* var_default */ \ - autocvar_notification_##name, /* var_cvar */ \ - MSG_ANNCE, /* typeid */ \ - name, /* nameid */ \ - strtoupper(#name), /* namestring */ \ - NO_MSG, /* anncename */ \ - NO_MSG, /* infoname */ \ - NO_MSG, /* centername */ \ - channel, /* channel */ \ - sound, /* snd */ \ - volume, /* vol */ \ - position, /* position */ \ - NO_MSG, /* strnum */ \ - NO_MSG, /* flnum */ \ - "", /* args */ \ - "", /* hudargs */ \ - "", /* icon */ \ - NO_MSG, /* cpid */ \ - "", /* durcnt */ \ - "", /* normal */ \ - "", /* gentle */ \ - NO_MSG, /* chtype */ \ - NO_MSG, /* optiona */ \ - NO_MSG); /* optionb */ \ + /* COMMON ======================== */ \ + default, /* var_default */ \ + ACVNN(name), /* var_cvar */ \ + MSG_ANNCE, /* typeid */ \ + name, /* nameid */ \ + strtoupper(#name), /* namestring */ \ + NO_MSG, /* strnum */ \ + NO_MSG, /* flnum */ \ + /* ANNCE ============= */ \ + channel, /* channel */ \ + sound, /* snd */ \ + volume, /* vol */ \ + position, /* position */ \ + /* INFO & CENTER == */ \ + "", /* args */ \ + "", /* hudargs */ \ + "", /* icon */ \ + NO_MSG, /* cpid */ \ + "", /* durcnt */ \ + "", /* normal */ \ + "", /* gentle */ \ + /* MULTI ============= */ \ + NO_MSG, /* anncename */ \ + NO_MSG, /* infoname */ \ + NO_MSG, /* centername */ \ + /* MSG_CHOICE ========== */ \ + NO_MSG, /* challow_def */ \ + NO_MSG, /* challow_var */ \ + NO_MSG, /* chtype */ \ + NO_MSG, /* optiona */ \ + NO_MSG); /* optionb */ \ } \ ACCUMULATE_FUNCTION(RegisterNotifications, RegisterNotification_##name) @@ -1160,32 +1262,39 @@ float NOTIF_CPID_COUNT; void RegisterNotification_##name() \ { \ SET_FIELD_COUNT(name, NOTIF_FIRST, NOTIF_INFO_COUNT) \ - CHECK_MAX_COUNT(name, NOTIF_MAX, NOTIF_INFO_COUNT, "notifications") \ + CHECK_MAX_COUNT(name, NOTIF_INFO_MAX, NOTIF_INFO_COUNT, "MSG_INFO") \ Create_Notification_Entity( \ - default, /* var_default */ \ - autocvar_notification_##name, /* var_cvar */ \ - MSG_INFO, /* typeid */ \ - name, /* nameid */ \ - strtoupper(#name), /* namestring */ \ - NO_MSG, /* anncename */ \ - NO_MSG, /* infoname */ \ - NO_MSG, /* centername */ \ - NO_MSG, /* channel */ \ - "", /* snd */ \ - NO_MSG, /* vol */ \ - NO_MSG, /* position */ \ - strnum, /* strnum */ \ - flnum, /* flnum */ \ - args, /* args */ \ - hudargs, /* hudargs */ \ - icon, /* icon */ \ - NO_MSG, /* cpid */ \ - "", /* durcnt */ \ - normal, /* normal */ \ - gentle, /* gentle */ \ - NO_MSG, /* chtype */ \ - NO_MSG, /* optiona */ \ - NO_MSG); /* optionb */ \ + /* COMMON ======================== */ \ + default, /* var_default */ \ + ACVNN(name), /* var_cvar */ \ + MSG_INFO, /* typeid */ \ + name, /* nameid */ \ + strtoupper(#name), /* namestring */ \ + strnum, /* strnum */ \ + flnum, /* flnum */ \ + /* ANNCE =========== */ \ + NO_MSG, /* channel */ \ + "", /* snd */ \ + NO_MSG, /* vol */ \ + NO_MSG, /* position */ \ + /* INFO & CENTER === */ \ + args, /* args */ \ + hudargs, /* hudargs */ \ + icon, /* icon */ \ + NO_MSG, /* cpid */ \ + "", /* durcnt */ \ + normal, /* normal */ \ + gentle, /* gentle */ \ + /* MULTI ============= */ \ + NO_MSG, /* anncename */ \ + NO_MSG, /* infoname */ \ + NO_MSG, /* centername */ \ + /* CHOICE ============== */ \ + NO_MSG, /* challow_def */ \ + NO_MSG, /* challow_var */ \ + NO_MSG, /* chtype */ \ + NO_MSG, /* optiona */ \ + NO_MSG); /* optionb */ \ } \ ACCUMULATE_FUNCTION(RegisterNotifications, RegisterNotification_##name) @@ -1197,32 +1306,39 @@ float NOTIF_CPID_COUNT; { \ SET_FIELD_COUNT(name, NOTIF_FIRST, NOTIF_CENTER_COUNT) \ SET_FIELD_COUNT(cpid, NOTIF_FIRST, NOTIF_CPID_COUNT) \ - CHECK_MAX_COUNT(name, NOTIF_MAX, NOTIF_CENTER_COUNT, "notifications") \ + CHECK_MAX_COUNT(name, NOTIF_CENTER_MAX, NOTIF_CENTER_COUNT, "MSG_CENTER") \ Create_Notification_Entity( \ - default, /* var_default */ \ - autocvar_notification_##name, /* var_cvar */ \ - MSG_CENTER, /* typeid */ \ - name, /* nameid */ \ - strtoupper(#name), /* namestring */ \ - NO_MSG, /* anncename */ \ - NO_MSG, /* infoname */ \ - NO_MSG, /* centername */ \ - NO_MSG, /* channel */ \ - "", /* snd */ \ - NO_MSG, /* vol */ \ - NO_MSG, /* position */ \ - strnum, /* strnum */ \ - flnum, /* flnum */ \ - args, /* args */ \ - "", /* hudargs */ \ - "", /* icon */ \ - cpid, /* cpid */ \ - durcnt, /* durcnt */ \ - normal, /* normal */ \ - gentle, /* gentle */ \ - NO_MSG, /* chtype */ \ - NO_MSG, /* optiona */ \ - NO_MSG); /* optionb */ \ + /* COMMON ======================== */ \ + default, /* var_default */ \ + ACVNN(name), /* var_cvar */ \ + MSG_CENTER, /* typeid */ \ + name, /* nameid */ \ + strtoupper(#name), /* namestring */ \ + strnum, /* strnum */ \ + flnum, /* flnum */ \ + /* ANNCE =========== */ \ + NO_MSG, /* channel */ \ + "", /* snd */ \ + NO_MSG, /* vol */ \ + NO_MSG, /* position */ \ + /* INFO & CENTER == */ \ + args, /* args */ \ + "", /* hudargs */ \ + "", /* icon */ \ + cpid, /* cpid */ \ + durcnt, /* durcnt */ \ + normal, /* normal */ \ + gentle, /* gentle */ \ + /* MULTI ============= */ \ + NO_MSG, /* anncename */ \ + NO_MSG, /* infoname */ \ + NO_MSG, /* centername */ \ + /* CHOICE ============== */ \ + NO_MSG, /* challow_def */ \ + NO_MSG, /* challow_var */ \ + NO_MSG, /* chtype */ \ + NO_MSG, /* optiona */ \ + NO_MSG); /* optionb */ \ } \ ACCUMULATE_FUNCTION(RegisterNotifications, RegisterNotification_##name) @@ -1232,67 +1348,84 @@ float NOTIF_CPID_COUNT; void RegisterNotification_##name() \ { \ SET_FIELD_COUNT(name, NOTIF_FIRST, NOTIF_MULTI_COUNT) \ - CHECK_MAX_COUNT(name, NOTIF_MAX, NOTIF_MULTI_COUNT, "notifications") \ + CHECK_MAX_COUNT(name, NOTIF_MULTI_MAX, NOTIF_MULTI_COUNT, "MSG_MULTI") \ Create_Notification_Entity( \ - default, /* var_default */ \ - autocvar_notification_##name, /* var_cvar */ \ - MSG_MULTI, /* typeid */ \ - name, /* nameid */ \ - strtoupper(#name), /* namestring */ \ - anncename, /* anncename */ \ - infoname, /* infoname */ \ - centername, /* centername */ \ - NO_MSG, /* channel */ \ - "", /* snd */ \ - NO_MSG, /* vol */ \ - NO_MSG, /* position */ \ - NO_MSG, /* strnum */ \ - NO_MSG, /* flnum */ \ - "", /* args */ \ - "", /* hudargs */ \ - "", /* icon */ \ - NO_MSG, /* cpid */ \ - "", /* durcnt */ \ - "", /* normal */ \ - "", /* gentle */ \ - NO_MSG, /* chtype */ \ - NO_MSG, /* optiona */ \ - NO_MSG); /* optionb */ \ + /* COMMON ======================== */ \ + default, /* var_default */ \ + ACVNN(name), /* var_cvar */ \ + MSG_MULTI, /* typeid */ \ + name, /* nameid */ \ + strtoupper(#name), /* namestring */ \ + NO_MSG, /* strnum */ \ + NO_MSG, /* flnum */ \ + /* ANNCE =========== */ \ + NO_MSG, /* channel */ \ + "", /* snd */ \ + NO_MSG, /* vol */ \ + NO_MSG, /* position */ \ + /* INFO & CENTER == */ \ + "", /* args */ \ + "", /* hudargs */ \ + "", /* icon */ \ + NO_MSG, /* cpid */ \ + "", /* durcnt */ \ + "", /* normal */ \ + "", /* gentle */ \ + /* MULTI ================= */ \ + anncename, /* anncename */ \ + infoname, /* infoname */ \ + centername, /* centername */ \ + /* CHOICE ============== */ \ + NO_MSG, /* challow_def */ \ + NO_MSG, /* challow_var */ \ + NO_MSG, /* chtype */ \ + NO_MSG, /* optiona */ \ + NO_MSG); /* optionb */ \ } \ ACCUMULATE_FUNCTION(RegisterNotifications, RegisterNotification_##name) -#define MSG_CHOICE_NOTIF(default,name,chtype,optiona,optionb) \ +#define ACVNN(name) autocvar_notification_##name + +#define MSG_CHOICE_NOTIF(default,challow,name,chtype,optiona,optionb) \ NOTIF_ADD_AUTOCVAR(name, default) \ + NOTIF_ADD_AUTOCVAR(name##_ALLOWED, challow) \ float name; \ void RegisterNotification_##name() \ { \ SET_FIELD_COUNT(name, NOTIF_FIRST, NOTIF_CHOICE_COUNT) \ - CHECK_MAX_COUNT(name, NOTIF_MAX, NOTIF_CHOICE_COUNT, "notifications") \ + CHECK_MAX_COUNT(name, NOTIF_CHOICE_MAX, NOTIF_CHOICE_COUNT, "MSG_CHOICE") \ Create_Notification_Entity( \ - default, /* var_default */ \ - autocvar_notification_##name, /* var_cvar */ \ - MSG_CHOICE, /* typeid */ \ - name, /* nameid */ \ - strtoupper(#name), /* namestring */ \ - NO_MSG, /* anncename */ \ - NO_MSG, /* infoname */ \ - NO_MSG, /* centername */ \ - NO_MSG, /* channel */ \ - "", /* snd */ \ - NO_MSG, /* vol */ \ - NO_MSG, /* position */ \ - NO_MSG, /* strnum */ \ - NO_MSG, /* flnum */ \ - "", /* args */ \ - "", /* hudargs */ \ - "", /* icon */ \ - NO_MSG, /* cpid */ \ - "", /* durcnt */ \ - "", /* normal */ \ - "", /* gentle */ \ - chtype, /* chtype */ \ - optiona, /* optiona */ \ - optionb); /* optionb */ \ + /* COMMON ======================== */ \ + default, /* var_default */ \ + ACVNN(name), /* var_cvar */ \ + MSG_CHOICE, /* typeid */ \ + name, /* nameid */ \ + strtoupper(#name), /* namestring */ \ + NO_MSG, /* strnum */ \ + NO_MSG, /* flnum */ \ + /* ANNCE =========== */ \ + NO_MSG, /* channel */ \ + "", /* snd */ \ + NO_MSG, /* vol */ \ + NO_MSG, /* position */ \ + /* INFO & CENTER == */ \ + "", /* args */ \ + "", /* hudargs */ \ + "", /* icon */ \ + NO_MSG, /* cpid */ \ + "", /* durcnt */ \ + "", /* normal */ \ + "", /* gentle */ \ + /* MULTI ============= */ \ + NO_MSG, /* anncename */ \ + NO_MSG, /* infoname */ \ + NO_MSG, /* centername */ \ + /* CHOICE ============================================= */ \ + challow, /* challow_def */ \ + autocvar_notification_##name##_ALLOWED, /* challow_var */ \ + chtype, /* chtype */ \ + optiona, /* optiona */ \ + optionb); /* optionb */ \ } \ ACCUMULATE_FUNCTION(RegisterNotifications, RegisterNotification_##name)