STATIC_INIT(Notifications) { FOREACH(Notifications, true, it.m_id = i); }
REGISTRY_CHECK(Notifications)
-const int NOTIF_CHOICE_MAX = 50;
+const int NOTIF_CHOICE_MAX = 20;
+// NOTE: a team choice is actually made of 4 choices (one per team) with the same nent_choice_idx
+// thus they are counted as 1 in nent_choice_count
int nent_choice_count = 0;
.int nent_choice_idx;
.int msg_choice_choices[NOTIF_CHOICE_MAX]; // set on each player containing MSG_CHOICE choices
bool notif_error;
bool notif_global_error;
-STATIC_INIT_LATE(Notif_Choices) {
- int c = 0;
- FOREACH(Notifications, it.nent_type == MSG_CHOICE, { c++; });
- if (c > NOTIF_CHOICE_MAX) {
- LOG_FATALF("Too many MSG_CHOICE notifications (%d)", c);
- }
+STATIC_INIT_LATE(Notif_Choices)
+{
+ if (nent_choice_count > NOTIF_CHOICE_MAX)
+ LOG_FATALF("Too many MSG_CHOICE notifications (%d), hit NOTIF_CHOICE_MAX (%d) limit",
+ nent_choice_count, NOTIF_CHOICE_MAX);
}
string Get_Notif_CvarName(Notification notif)
#define MSG_CHOICE_NOTIF_(teamnum, name, cvarname, default, challow, chtype, optiona, optionb) \
REGISTER(Notifications, name, m_id, new_pure(msg_choice_notification)) { \
- this.nent_choice_idx = nent_choice_count++; \
+ this.nent_choice_idx = nent_choice_count; \
+ if (!teamnum || teamnum == NUM_TEAM_4) \
+ nent_choice_count++; \
Create_Notification_Entity (this, default, ACVNN(cvarname), MSG_CHOICE, strtoupper(#name), teamnum); \
Create_Notification_Entity_Choice(this, ACVNN(cvarname), strtoupper(#name), \
challow, /* challow_def */ \
ATTRIB(Client, zoomstate, bool, this.zoomstate);
ATTRIB(Client, just_joined, bool, this.just_joined);
ATTRIB(Client, race_completed, bool, this.race_completed);
- ATTRIBARRAY(Client, msg_choice_choices, int, 50); // TODO: actually NOTIF_CHOICE_MAX
+ ATTRIBARRAY(Client, msg_choice_choices, int, 20); // TODO: actually NOTIF_CHOICE_MAX
ATTRIB(Client, latency_sum, float, this.latency_sum);
ATTRIB(Client, latency_cnt, int, this.latency_cnt);
ATTRIB(Client, latency_time, float, this.latency_time);