]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/notifications/all.qc
Merge branch 'master' into terencehill/bot_AI
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / notifications / all.qc
index 853280d6e023410758388258c2543e15beff954d..2a9217b25bbdb409dd10c92d71902a5a995e82e2 100644 (file)
@@ -1,14 +1,15 @@
+#include "all.qh"
 #if defined(CSQC)
        #include <client/announcer.qh>
 #elif defined(MENUQC)
 #elif defined(SVQC)
        #include <common/constants.qh>
+       #include <common/net_linked.qh>
        #include <common/teams.qh>
        #include <server/autocvars.qh>
        #include <server/constants.qh>
        #include <server/defs.qh>
-       #include "all.qh"
-       #include <server/mutators/all.qh>
+       #include <server/mutators/_mod.qh>
 #endif
 
 // ================================================
@@ -153,7 +154,7 @@ void Destroy_Notification_Entity(entity notif)
        if (notif.nent_icon != "") strunzone(notif.nent_icon);
        if (notif.nent_durcnt != "") strunzone(notif.nent_durcnt);
        if (notif.nent_string != "") strunzone(notif.nent_string);
-       remove(notif);
+       delete(notif);
 }
 
 void Destroy_All_Notifications()
@@ -397,7 +398,8 @@ void Create_Notification_Entity(entity notif,
        float var_default,
        float var_cvar,
        MSG typeId,
-       string namestring)
+       string namestring,
+       int teamnum)
 {
        // =====================
        //  Global Entity Setup
@@ -406,6 +408,7 @@ void Create_Notification_Entity(entity notif,
        notif.nent_enabled = (var_cvar >= 1);
        notif.nent_type = typeId;
        notif.nent_name = strzone(namestring);
+       notif.nent_teamnum = teamnum;
 
        // Other pre-notif-setup requisites
        notif_error = false;
@@ -572,7 +575,7 @@ void Create_Notification_Entity_InfoCenter(entity notif,
                                }
                                else if(icon != "")
                                {
-                                       LOG_WARNINGF(
+                                       LOG_WARNF(
                                                (
                                                        "^1NOTIFICATION HAS ICON BUT NO HUDARGS: "
                                                        "^7net_type = %s, net_name = %s.\n"
@@ -589,7 +592,7 @@ void Create_Notification_Entity_InfoCenter(entity notif,
 
                                        if (cpid == CPID_Null && durcnt != "0 0")
                                        {
-                                               LOG_WARNINGF(
+                                               LOG_WARNF(
                                                        (
                                                                "Notification has durcnt but no cpid: "
                                                                "net_type = %s, net_name = %s."
@@ -766,7 +769,7 @@ void Notification_GetCvars(entity this)
                        get_cvars_s,
                        get_cvars_f,
                        msg_choice_choices[it.nent_choice_idx],
-                       sprintf("notification_%s", it.nent_name)
+                       sprintf("notification_%s", Get_Notif_CvarName(it))
                );
        });
 }
@@ -783,7 +786,7 @@ void Dump_Notifications(int fh, bool alsoprint)
        #define NOTIF_WRITE_ENTITY(e, description) MACRO_BEGIN { \
                string notif_msg = sprintf( \
                        "seta notification_%s \"%d\" \"%s\"\n", \
-                       e.nent_name, e.nent_default, description \
+                       Get_Notif_CvarName(e), e.nent_default, description \
                ); \
                NOTIF_WRITE(notif_msg); \
        } MACRO_END
@@ -792,8 +795,8 @@ void Dump_Notifications(int fh, bool alsoprint)
                string notif_msg = sprintf( \
                        "seta notification_%s \"%d\" \"%s\"\n" \
                        "seta notification_%s_ALLOWED \"%d\" \"%s\"\n", \
-                       e.nent_name, e.nent_default, descriptiona, \
-                       e.nent_name, e.nent_challow_def, descriptionb \
+                       Get_Notif_CvarName(e), e.nent_default, descriptiona, \
+                       Get_Notif_CvarName(e), e.nent_challow_def, descriptionb \
                ); \
                NOTIF_WRITE(notif_msg); \
        } MACRO_END
@@ -830,7 +833,7 @@ void Dump_Notifications(int fh, bool alsoprint)
 
        int NOTIF_ANNCE_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_ANNCE, { ++NOTIF_ANNCE_COUNT; });
        NOTIF_WRITE(sprintf("\n// MSG_ANNCE notifications (count = %d):\n", NOTIF_ANNCE_COUNT));
-       FOREACH(Notifications, it.nent_type == MSG_ANNCE, {
+       FOREACH(Notifications, it.nent_type == MSG_ANNCE && (!it.nent_teamnum || it.nent_teamnum == NUM_TEAM_1), {
                NOTIF_WRITE_ENTITY(it,
                        "0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled"
                );
@@ -838,7 +841,7 @@ void Dump_Notifications(int fh, bool alsoprint)
 
        int NOTIF_INFO_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_INFO, { ++NOTIF_INFO_COUNT; });
        NOTIF_WRITE(sprintf("\n// MSG_INFO notifications (count = %d):\n", NOTIF_INFO_COUNT));
-       FOREACH(Notifications, it.nent_type == MSG_INFO, {
+       FOREACH(Notifications, it.nent_type == MSG_INFO && (!it.nent_teamnum || it.nent_teamnum == NUM_TEAM_1), {
                NOTIF_WRITE_ENTITY(it,
                        "0 = off, 1 = print to console, "
                        "2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
@@ -847,7 +850,7 @@ void Dump_Notifications(int fh, bool alsoprint)
 
        int NOTIF_CENTER_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_CENTER, { ++NOTIF_CENTER_COUNT; });
        NOTIF_WRITE(sprintf("\n// MSG_CENTER notifications (count = %d):\n", NOTIF_CENTER_COUNT));
-       FOREACH(Notifications, it.nent_type == MSG_CENTER, {
+       FOREACH(Notifications, it.nent_type == MSG_CENTER && (!it.nent_teamnum || it.nent_teamnum == NUM_TEAM_1), {
                NOTIF_WRITE_ENTITY(it,
                        "0 = off, 1 = centerprint"
                );
@@ -855,7 +858,7 @@ void Dump_Notifications(int fh, bool alsoprint)
 
        int NOTIF_MULTI_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_MULTI, { ++NOTIF_MULTI_COUNT; });
        NOTIF_WRITE(sprintf("\n// MSG_MULTI notifications (count = %d):\n", NOTIF_MULTI_COUNT));
-       FOREACH(Notifications, it.nent_type == MSG_MULTI, {
+       FOREACH(Notifications, it.nent_type == MSG_MULTI && (!it.nent_teamnum || it.nent_teamnum == NUM_TEAM_1), {
                NOTIF_WRITE_ENTITY(it,
                        "Enable this multiple notification"
                );
@@ -863,7 +866,7 @@ void Dump_Notifications(int fh, bool alsoprint)
 
        int NOTIF_CHOICE_COUNT = 0; FOREACH(Notifications, it.nent_type == MSG_CHOICE, { ++NOTIF_CHOICE_COUNT; });
        NOTIF_WRITE(sprintf("\n// MSG_CHOICE notifications (count = %d):\n", NOTIF_CHOICE_COUNT));
-       FOREACH(Notifications, it.nent_type == MSG_CHOICE, {
+       FOREACH(Notifications, it.nent_type == MSG_CHOICE && (!it.nent_teamnum || it.nent_teamnum == NUM_TEAM_1), {
                NOTIF_WRITE_ENTITY_CHOICE(it,
                        "Choice for this notification 0 = off, 1 = default message, 2 = verbose message",
                        "Allow choice for this notification 0 = off, 1 = only in warmup mode, 2 = always"
@@ -875,7 +878,7 @@ void Dump_Notifications(int fh, bool alsoprint)
 
        NOTIF_WRITE_HARDCODED(
                "allow_chatboxprint", "1",
-               "Allow INFO notifications to be printed to chat box"
+               "Allow INFO notifications to be printed to chat box "
                "0 = do not allow, "
                "1 = allow only if allowed by individual notification_INFO* cvars, "
                "2 = force all INFO notifications to be printed to the chatbox"
@@ -1210,7 +1213,7 @@ void Local_Notification(MSG net_type, Notification net_name, ...count)
                        Get_Notif_TypeName(net_type)
                ));
                #endif
-               LOG_WARNINGF("Incorrect usage of Local_Notification: %s\n", "Null notification");
+               LOG_WARNF("Incorrect usage of Local_Notification: %s", "Null notification");
                return;
        }
 
@@ -1366,7 +1369,7 @@ void Local_Notification(MSG net_type, Notification net_name, ...count)
                {
                        entity found_choice = notif.nent_optiona;
                        if (notif.nent_challow_var && (warmup_stage || (notif.nent_challow_var == 2))) {
-                               switch (cvar(sprintf("notification_%s", notif.nent_name)))
+                               switch (cvar(sprintf("notification_%s", Get_Notif_CvarName(notif))))
                                {
                                        case 1: break;
                                        case 2: found_choice = notif.nent_optionb; break;
@@ -1491,7 +1494,7 @@ void Net_Notification_Remove(entity this)
        ));
        #endif
        for (int i = 0; i < this.nent_stringcount; ++i) { if (this.nent_strings[i]) strunzone(this.nent_strings[i]); }
-       remove(this);
+       delete(this);
 }
 
 bool Net_Write_Notification(entity this, entity client, int sf)
@@ -1523,7 +1526,7 @@ void Kill_Notification(
        #endif
 
        string checkargs = Notification_CheckArgs(broadcast, client);
-       if (checkargs != "") { LOG_WARNINGF("Incorrect usage of Kill_Notification: %s", checkargs); return; }
+       if (checkargs != "") { LOG_WARNF("Incorrect usage of Kill_Notification: %s", checkargs); return; }
 
        entity net_notif = new_pure(net_kill_notification);
        net_notif.nent_broadcast = broadcast;
@@ -1532,8 +1535,8 @@ void Kill_Notification(
        net_notif.nent_net_name = ORDINAL(net_cpid);
        Net_LinkEntity(net_notif, false, autocvar_notification_lifetime_runtime, Net_Write_Notification);
 
-       FOREACH_ENTITY_CLASS(
-               "net_notification",
+       IL_EACH(
+               g_notifications,
                (it.owner.nent_type == net_type || net_type == MSG_Null) && (it.owner.nent_cpid == net_cpid || net_cpid == CPID_Null),
                {
                        it.nent_net_name = -1;
@@ -1561,7 +1564,7 @@ void Send_Notification(
 
        if (!notif)
        {
-               LOG_WARNING("Send_Notification: Could not find notification entity!");
+               LOG_WARN("Send_Notification: Could not find notification entity!");
                return;
        }
 
@@ -1570,7 +1573,7 @@ void Send_Notification(
     if (!net_name) { checkargs = sprintf("No notification provided! %s", checkargs); }
        if (checkargs != "")
        {
-               LOG_WARNINGF("Incorrect usage of Send_Notification: %s", checkargs);
+               LOG_WARNF("Incorrect usage of Send_Notification: %s", checkargs);
                return;
        }
 
@@ -1594,7 +1597,7 @@ void Send_Notification(
 
        if ((notif.nent_stringcount + notif.nent_floatcount) != count)
        {
-               LOG_WARNINGF(
+               LOG_WARNF(
                        "Argument mismatch for Send_Notification(%s, ...)! "
                        "stringcount(%d) + floatcount(%d) != count(%d)\n"
                        "Check the definition and function call for accuracy...?\n",
@@ -1682,6 +1685,7 @@ void Send_Notification(
        else
        {
                entity net_notif = new_pure(net_notification);
+               IL_PUSH(g_notifications, net_notif);
                net_notif.owner = notif;
                net_notif.nent_broadcast = broadcast;
                net_notif.nent_client = client;