]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/notifications.qh
Work on server networking code for choices
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / notifications.qh
index 151b49ded1486b7d2b8eb21d3ad0a39239ba9b48..136e093a8653b1773c932a603008225b9f5adebd 100644 (file)
@@ -62,8 +62,9 @@ void Create_Notification_Entity(
        string durcnt,
        string normal,
        string gentle,
-       float msg_is_info,
-       float msg_is_multi);
+       float chtype,
+       float optiona,
+       float optionb);
 
 void Dump_Notifications(float fh, float alsoprint);
 
@@ -195,6 +196,15 @@ void Send_Notification_WOVA(
       If you send a notification with mismatching arguments, Send_Notification() will error.
 */
 
+#define MULTITEAM_ANNCE(default,prefix,teams,channel,sound,volume,position) \
+       MSG_ANNCE_NOTIF(default, prefix##RED, channel, sprintf(sound, strtolower(STATIC_NAME_TEAM_1)), volume, position) \
+       MSG_ANNCE_NOTIF(default, prefix##BLUE, channel, sprintf(sound, strtolower(STATIC_NAME_TEAM_2)), volume, position) \
+       #if teams >= 3 \
+               MSG_ANNCE_NOTIF(default, prefix##YELLOW, channel, sprintf(sound, strtolower(STATIC_NAME_TEAM_3)), volume, position) \
+       #endif \
+       #if teams >= 4 \
+               MSG_ANNCE_NOTIF(default, prefix##PINK, channel, sprintf(sound, strtolower(STATIC_NAME_TEAM_4)), volume, position) \
+       #endif
 #define MSG_ANNCE_NOTIFICATIONS \
        MSG_ANNCE_NOTIF(1, ANNCE_ACHIEVEMENT_AIRSHOT,       CH_INFO, "airshot",           VOL_BASEVOICE, ATTN_NONE) \
        MSG_ANNCE_NOTIF(1, ANNCE_ACHIEVEMENT_AMAZING,       CH_INFO, "amazing",           VOL_BASEVOICE, ATTN_NONE) \
@@ -563,7 +573,6 @@ void Send_Notification_WOVA(
        MSG_CENTER_NOTIF(1, CENTER_TIMEOUT_BEGINNING,           0, 1, "",              CPID_TIMEOUT,          "1 f1", _("^F4Timeout begins in ^COUNT"), "") \
        MSG_CENTER_NOTIF(1, CENTER_TIMEOUT_ENDING,              0, 1, "",              CPID_TIMEOUT,          "1 f1", _("^F4Timeout ends in ^COUNT"), "")
 
-
 #define MULTITEAM_MULTI(default,prefix,teams,anncepre,infopre,centerpre) \
        MSG_MULTI_NOTIF(default, prefix##RED, anncepre##RED, infopre##RED, centerpre##RED) \
        MSG_MULTI_NOTIF(default, prefix##BLUE, anncepre##BLUE, infopre##BLUE, centerpre##BLUE) \
@@ -696,21 +705,21 @@ 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,type,opa,opb) \
-       MSG_CHOICE_NOTIF(default, prefix##RED, type, opa##RED, opb##RED) \
-       MSG_CHOICE_NOTIF(default, prefix##BLUE, type, opa##BLUE, opb##BLUE) \
+#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) \
        #if teams >= 3 \
-               MSG_CHOICE_NOTIF(default, prefix##YELLOW, type, opa##YELLOW, opb##YELLOW) \
+               MSG_CHOICE_NOTIF(default, prefix##YELLOW, chtype, optiona##YELLOW, optionb##YELLOW) \
        #endif \
        #if teams >= 4 \
-               MSG_CHOICE_NOTIF(default, prefix##PINK, type, opa##PINK, opb##PINK) \
+               MSG_CHOICE_NOTIF(default, 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) \
-       MSG_CHOICE_NOTIF(2, CHOICE_)
+       MSG_CHOICE_NOTIF(1, CHOICE_TYPERFRAGGED,  MSG_CENTER,  CENTER_DEATH_MURDER_TYPEFRAGGED,  CENTER_DEATH_MURDER_TYPEFRAGGED_VERBOSE)
+       //MSG_CHOICE_NOTIF(2, CHOICE_)
 
 
 // ===========================
@@ -1067,12 +1076,14 @@ 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
 float NOTIF_ANNCE_COUNT;
 float NOTIF_INFO_COUNT;
 float NOTIF_CENTER_COUNT;
 float NOTIF_MULTI_COUNT;
+float NOTIF_CHOICE_COUNT;
 float NOTIF_CPID_COUNT;
 
 // notification entity values
@@ -1096,6 +1107,10 @@ float NOTIF_CPID_COUNT;
 .string nent_durcnt;
 .string nent_string;
 
+.float nent_msgchtype;
+.string nent_msgopa;
+.string nent_msgopb;
+
 // networked notification values
 .float nent_broadcast;
 .entity nent_client;
@@ -1133,8 +1148,9 @@ float NOTIF_CPID_COUNT;
                        "",                            /* durcnt */ \
                        "",                            /* normal */ \
                        "",                            /* gentle */ \
-                       FALSE,                         /* msg_is_info */ \
-                       FALSE);                        /* msg_is_multi */ \
+                       NO_MSG,                        /* chtype */ \
+                       NO_MSG,                        /* optiona */ \
+                       NO_MSG);                       /* optionb */ \
        } \
        ACCUMULATE_FUNCTION(RegisterNotifications, RegisterNotification_##name)
 
@@ -1167,8 +1183,9 @@ float NOTIF_CPID_COUNT;
                        "",                            /* durcnt */ \
                        normal,                        /* normal */ \
                        gentle,                        /* gentle */ \
-                       TRUE,                          /* msg_is_info */ \
-                       FALSE);                        /* msg_is_multi */ \
+                       NO_MSG,                        /* chtype */ \
+                       NO_MSG,                        /* optiona */ \
+                       NO_MSG);                       /* optionb */ \
        } \
        ACCUMULATE_FUNCTION(RegisterNotifications, RegisterNotification_##name)
 
@@ -1203,8 +1220,9 @@ float NOTIF_CPID_COUNT;
                        durcnt,                        /* durcnt */ \
                        normal,                        /* normal */ \
                        gentle,                        /* gentle */ \
-                       FALSE,                         /* msg_is_info */ \
-                       FALSE);                        /* msg_is_multi */ \
+                       NO_MSG,                        /* chtype */ \
+                       NO_MSG,                        /* optiona */ \
+                       NO_MSG);                       /* optionb */ \
        } \
        ACCUMULATE_FUNCTION(RegisterNotifications, RegisterNotification_##name)
 
@@ -1237,8 +1255,44 @@ float NOTIF_CPID_COUNT;
                        "",                            /* durcnt */ \
                        "",                            /* normal */ \
                        "",                            /* gentle */ \
-                       FALSE,                         /* msg_is_info */ \
-                       TRUE);                         /* msg_is_multi */ \
+                       NO_MSG,                        /* chtype */ \
+                       NO_MSG,                        /* optiona */ \
+                       NO_MSG);                       /* optionb */ \
+       } \
+       ACCUMULATE_FUNCTION(RegisterNotifications, RegisterNotification_##name)
+
+#define MSG_CHOICE_NOTIF(default,name,chtype,optiona,optionb) \
+       NOTIF_ADD_AUTOCVAR(name, default) \
+       float name; \
+       void RegisterNotification_##name() \
+       { \
+               SET_FIELD_COUNT(name, NOTIF_FIRST, NOTIF_CHOICE_COUNT) \
+               CHECK_MAX_COUNT(name, NOTIF_MAX, NOTIF_CHOICE_COUNT, "notifications") \
+               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 */ \
        } \
        ACCUMULATE_FUNCTION(RegisterNotifications, RegisterNotification_##name)
 
@@ -1288,10 +1342,12 @@ MSG_ANNCE_NOTIFICATIONS
 MSG_INFO_NOTIFICATIONS
 MSG_CENTER_NOTIFICATIONS
 MSG_MULTI_NOTIFICATIONS
+MSG_CHOICE_NOTIFICATIONS
 ACCUMULATE_FUNCTION(RegisterNotifications, RegisterNotifications_Done)
 #undef MSG_ANNCE_NOTIF
 #undef MSG_INFO_NOTIF
 #undef MSG_CENTER_NOTIF
 #undef MSG_MULTI_NOTIF
+#undef MSG_CHOICE_NOTIF
 
 #undef NOTIF_ADD_AUTOCVAR