47 if (is_bright ==
false)
73 static int num_iff_colors = 0;
76 Assert(r >= 0 && r <= 255);
77 Assert(g >= 0 && g <= 255);
78 Assert(b >= 0 && b <= 255);
88 for (i = 0; i < num_iff_colors; i++)
92 if (c->r == r && c->g == g && c->b == b)
101 c = &temp_colors[
idx];
181 bool alternate_blip_color =
false;
182 for (i = 0; i < 5; i++)
184 for (j = 0; j < 2; j++)
186 for (k = 0; k < 3; k++)
196 int dim_iff_brightness;
215 for (i = 0; i < 3; i++)
217 Assert(rgb[i] >= 0 && rgb[i] <= 255);
226 for (i = 0; i < 3; i++)
228 Assert(rgb[i] >= 0 && rgb[i] <= 255);
237 for (i = 0; i < 3; i++)
239 Assert(rgb[i] >= 0 && rgb[i] <= 255);
248 for (i = 0; i < 3; i++)
250 Assert(rgb[i] >= 0 && rgb[i] <= 255);
259 for (i = 0; i < 3; i++)
261 Assert(rgb[i] >= 0 && rgb[i] <= 255);
267 if (alternate_blip_color ==
true)
271 for (i = 0; i < 5; i++)
275 for (j = 0; j < 3; j++)
287 for (i = 0; i < 5; i++)
345 num_attack_names[cur_iff] = 0;
348 num_observed_colors[cur_iff] = 0;
357 observed_color_table[cur_iff][num_observed_colors[cur_iff]].color_index =
iff_init_color(rgb[0], rgb[1], rgb[2]);
360 num_observed_colors[cur_iff]++;
373 for (string_idx = 0; string_idx < num_strings; string_idx++)
375 if (!
stricmp(
NOX(
"support allowed"), flag_strings[string_idx]))
377 else if (!
stricmp(
NOX(
"exempt from all teams at war"), flag_strings[string_idx]))
379 else if (!
stricmp(
NOX(
"orders hidden"), flag_strings[string_idx]))
381 else if (!
stricmp(
NOX(
"orders shown"), flag_strings[string_idx]))
383 else if (!
stricmp(
NOX(
"wing name hidden"), flag_strings[string_idx]))
386 Warning(
LOCATION,
"Bogus string in iff flags: %s\n", flag_strings[string_idx]);
398 for (i = 0; i < num_strings; i++)
411 Warning(
LOCATION,
"Bogus string in iff default ship flags: %s\n", flag_strings[i]);
422 for (i = 0; i < num_strings; i++)
435 Warning(
LOCATION,
"Bogus string in iff default ship flags2: %s\n", flag_strings[i]);
452 Warning(
LOCATION,
"Traitor IFF %s not found in iff_defs.tbl! Defaulting to %s.\n", traitor_name, Iff_info[
Iff_traitor].iff_name);
456 for (
int cur_iff = 0; cur_iff <
Num_iffs; cur_iff++)
469 for (
int list_index = 0; list_index <
MAX_IFFS; list_index++)
472 if (list_index < num_attack_names[cur_iff])
475 int target_iff =
iff_lookup(attack_names[cur_iff][list_index]);
481 Warning(
LOCATION,
"Attack target IFF %s not found for IFF %s in iff_defs.tbl!\n", attack_names[cur_iff][list_index], iff->
iff_name);
485 if (list_index < num_observed_colors[cur_iff])
488 int target_iff =
iff_lookup(observed_color_table[cur_iff][list_index].iff_name);
494 Warning(
LOCATION,
"Observed color IFF %s not found for IFF %s in iff_defs.tbl!\n", observed_color_table[cur_iff][list_index].iff_name, iff->
iff_name);
507 for (
int other_iff = 0; other_iff <
Num_iffs; other_iff++)
529 mprintf((
"TABLES: Unable to parse '%s'! Error message = %s.\n",
"iff_defs.tbl", e.what()));
549 if (!
stricmp(iff_name, Iff_info[
i].iff_name))
587 int i, attacker_bitmask = 0;
594 return attacker_bitmask;
638 return &Iff_colors[color_index][is_bright];
648 Assert(is_bright == 0 || is_bright == 1);
652 if (seen_from_team < 0)
665 int color_index = Iff_info[seen_from_team].observed_color_index[
team];
667 color_index = Iff_info[
team].color_index;
670 return &Iff_colors[color_index][is_bright];
682 Assert(is_bright == 0 || is_bright == 1);
684 int alt_color_index = -1;
687 if (seen_from_team < 0)
690 int color_index = Iff_info[seen_from_team].observed_color_index[
team];
710 if (alt_color_index >= 0)
711 color_index = alt_color_index;
713 color_index = Iff_info[
team].color_index;
716 return &Iff_colors[color_index][is_bright];
color Iff_colors[MAX_IFF_COLORS][2]
int timestamp(int delta_ms)
int stuff_string_list(SCP_vector< SCP_string > &slp)
int iff_get_attacker_mask(int attackee_team)
int check_for_string(const char *pstr)
int parse_string_flag_list(int *dest, flag_def_list defs[], int defs_size)
color * iff_get_color_by_team(int team, int seen_from_team, int is_bright)
void fs2netd_add_table_validation(const char *tblname)
int iff_get_alpha_value(bool is_bright)
color * iff_get_color_by_team_and_object(int team, int seen_from_team, int is_bright, object *objp)
int ship_iff_color[MAX_IFFS][MAX_IFFS]
void _cdecl void void _cdecl void _cdecl Warning(char *filename, int line, SCP_FORMAT_STRING const char *format,...) SCP_FORMAT_STRING_ARGS(3
void gr_init_alphacolor(color *clr, int r, int g, int b, int alpha, int type)
const char * defaults_get_file(const char *filename)
#define MAX_PARSE_OBJECT_FLAGS
int required_string_either(char *str1, char *str2)
Checks for one of two required strings.
#define HUD_COLOR_ALPHA_MAX
iff_info Iff_info[MAX_IFFS]
int iff_get_attackee_mask(int attacker_team)
char * Parse_object_flags[MAX_PARSE_OBJECT_FLAGS]
GLdouble GLdouble GLdouble r
void stuff_string_until(char *outstr, char *endstr, int len)
#define IFFF_EXEMPT_FROM_ALL_TEAMS_AT_WAR
int cf_exists_full(const char *filename, int dir_type)
int radar_target_id_flags
void stuff_string(char *outstr, int type, int len, char *terminators)
int iff_lookup(char *iff_name)
int required_string(const char *pstr)
int * iff_color_brightness
int optional_string(const char *pstr)
void read_file_text(const char *filename, int mode, char *processed_text, char *raw_text)
#define IFFF_ORDERS_HIDDEN
int iff_x_attacks_y(int team_x, int team_y)
#define MAX_PARSE_OBJECT_FLAGS_2
for(int idx=0;idx< i;idx++)
void read_file_text_from_array(const char *array, char *processed_text, char *raw_text)
void stuff_boolean(int *i, bool a_to_eol)
int iff_get_mask(int team)
#define IFFF_ORDERS_SHOWN
flag_def_list rti_flags[]
void reset_parse(char *text)
int attackee_bitmask_all_teams_at_war
color * iff_get_color(int color_index, int is_bright)
GLboolean GLboolean GLboolean b
int iff_init_color(int r, int g, int b)
int stuff_int_list(int *ilp, int max_ints, int lookup_type)
char * Parse_object_flags_2[MAX_PARSE_OBJECT_FLAGS_2]
SCP_vector< ship_info > Ship_info
#define IFFF_WING_NAME_HIDDEN
int iff_matches_mask(int team, int mask)
char iff_name[NAME_LENGTH]
int radar_iff_color[5][2][4]
int skip_to_start_of_string(char *pstr, char *end)
#define IFFF_SUPPORT_ALLOWED
int observed_color_index[MAX_IFFS]