From fe2e19d6558640b2cdf6d28a4bca2e61613773d2 Mon Sep 17 00:00:00 2001 From: Kp Date: Sun, 1 Jul 2012 01:06:55 +0000 Subject: [PATCH] Convert text index macros to ternary expressions --- main/text.h | 95 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 84 insertions(+), 11 deletions(-) diff --git a/main/text.h b/main/text.h index 757bb9e1f..1e91b23ba 100644 --- a/main/text.h +++ b/main/text.h @@ -661,18 +661,91 @@ extern char *Text_string[]; #define N_TEXT_STRINGS 649 -// Weapon names. -#define PRIMARY_WEAPON_NAMES(weapon_num) (*(&TXT_W_LASER + (weapon_num))) -#define SECONDARY_WEAPON_NAMES(weapon_num) (*(&TXT_W_C_MISSILE + (weapon_num))) -#define PRIMARY_WEAPON_NAMES_SHORT(weapon_num) (*(&TXT_W_LASER_S + (weapon_num))) -#define SECONDARY_WEAPON_NAMES_SHORT(weapon_num) (*(&TXT_W_C_MISSILE_S + (weapon_num))) +#define dxx_text_ensure_simple_expr(E,T) ((void)(E), (Int3()), (T)) -// Network connect states -#define CONNECT_STATES(state_num) (*(&TXT_NET_DISCONNECTED + (state_num))) -// Network dump strings -#define NET_DUMP_STRINGS(dump_num) (*(&TXT_NET_GAME_CLOSED + (dump_num))) -#define MENU_DIFFICULTY_TEXT(difficulty) (*(&TXT_DIFFICULTY_1 + (difficulty))) -#define MENU_DETAIL_TEXT(detail) (*(&TXT_DETAIL_1 + (detail))) +#define PRIMARY_WEAPON_NAMES(u) ( \ + ((u) == LASER_INDEX) ? TXT_W_LASER : \ + ((u) == VULCAN_INDEX) ? TXT_W_VULCAN : \ + ((u) == SPREADFIRE_INDEX) ? TXT_W_SPREADFIRE : \ + ((u) == PLASMA_INDEX) ? TXT_W_PLASMA : \ + ((u) == FUSION_INDEX) ? TXT_W_FUSION : \ + ((u) == SUPER_LASER_INDEX) ? TXT_W_SLASER : \ + ((u) == GAUSS_INDEX) ? TXT_W_SVULCAN : \ + ((u) == HELIX_INDEX) ? TXT_W_SSPREADFIRE : \ + ((u) == PHOENIX_INDEX) ? TXT_W_SPLASMA : \ + ((u) == OMEGA_INDEX) ? TXT_W_SFUSION : \ + (dxx_text_ensure_simple_expr(&(u), TXT_W_LASER)) \ + ) + +#define SECONDARY_WEAPON_NAMES(u) ( \ + ((u) == CONCUSSION_INDEX) ? TXT_W_C_MISSILE : \ + ((u) == HOMING_INDEX) ? TXT_W_H_MISSILE : \ + ((u) == PROXIMITY_INDEX) ? TXT_W_P_BOMB : \ + ((u) == SMART_INDEX) ? TXT_W_S_MISSILE : \ + ((u) == MEGA_INDEX) ? TXT_W_M_MISSILE : \ + ((u) == SMISSILE1_INDEX) ? TXT_W_SMISSILE1 : \ + ((u) == GUIDED_INDEX) ? TXT_W_SMISSILE2 : \ + ((u) == SMART_MINE_INDEX) ? TXT_W_SMISSILE3 : \ + ((u) == SMISSILE4_INDEX) ? TXT_W_SMISSILE4 : \ + ((u) == SMISSILE5_INDEX) ? TXT_W_SMISSILE5 : \ + (dxx_text_ensure_simple_expr(&(u), TXT_W_C_MISSILE)) \ + ) + +#define PRIMARY_WEAPON_NAMES_SHORT(u) ( \ + ((u) == LASER_INDEX) ? TXT_W_LASER_S : \ + ((u) == VULCAN_INDEX) ? TXT_W_VULCAN_S : \ + ((u) == SPREADFIRE_INDEX) ? TXT_W_SPREADFIRE_S : \ + ((u) == PLASMA_INDEX) ? TXT_W_PLASMA_S : \ + ((u) == FUSION_INDEX) ? TXT_W_FUSION_S : \ + ((u) == SUPER_LASER_INDEX) ? TXT_W_SLASER_S : \ + ((u) == GAUSS_INDEX) ? TXT_W_SVULCAN_S : \ + ((u) == HELIX_INDEX) ? TXT_W_SSPREADFIRE_S : \ + ((u) == PHOENIX_INDEX) ? TXT_W_SPLASMA_S : \ + ((u) == OMEGA_INDEX) ? TXT_W_SFUSION_S : \ + (dxx_text_ensure_simple_expr(&(u), TXT_W_LASER_S)) \ + ) + +#define SECONDARY_WEAPON_NAMES_SHORT(u) ( \ + ((u) == CONCUSSION_INDEX) ? TXT_W_C_MISSILE_S : \ + ((u) == HOMING_INDEX) ? TXT_W_H_MISSILE_S : \ + ((u) == PROXIMITY_INDEX) ? TXT_W_P_BOMB_S : \ + ((u) == SMART_INDEX) ? TXT_W_S_MISSILE_S : \ + ((u) == MEGA_INDEX) ? TXT_W_M_MISSILE_S : \ + ((u) == SMISSILE1_INDEX) ? TXT_W_SMISSILE1_S : \ + ((u) == GUIDED_INDEX) ? TXT_W_SMISSILE2_S : \ + ((u) == SMART_MINE_INDEX) ? TXT_W_SMISSILE3_S : \ + ((u) == SMISSILE4_INDEX) ? TXT_W_SMISSILE4_S : \ + ((u) == SMISSILE5_INDEX) ? TXT_W_SMISSILE5_S : \ + (dxx_text_ensure_simple_expr(&(u), TXT_W_C_MISSILE_S)) \ + ) + +#define NET_DUMP_STRINGS(u) ( \ + ((u) == DUMP_CLOSED) ? TXT_NET_GAME_CLOSED : \ + ((u) == DUMP_FULL) ? TXT_NET_GAME_FULL : \ + ((u) == DUMP_ENDLEVEL) ? TXT_NET_GAME_BETWEEN : \ + ((u) == DUMP_DORK) ? TXT_NET_GAME_NSELECT : \ + ((u) == DUMP_ABORTED) ? TXT_NET_GAME_NSTART : \ + ((u) == DUMP_CONNECTED) ? TXT_NET_GAME_CONNECT : \ + ((u) == DUMP_LEVEL) ? TXT_NET_GAME_WRONGLEV : \ + (dxx_text_ensure_simple_expr(&(u), TXT_NET_GAME_CLOSED)) \ + ) +#define MENU_DIFFICULTY_TEXT(u) ( \ + ((u) == 0) ? TXT_DIFFICULTY_1 : \ + ((u) == 1) ? TXT_DIFFICULTY_2 : \ + ((u) == 2) ? TXT_DIFFICULTY_3 : \ + ((u) == 3) ? TXT_DIFFICULTY_4 : \ + ((u) == 4) ? TXT_DIFFICULTY_5 : \ + /* &u is ill-formed when u is a literal number */ \ + (dxx_text_ensure_simple_expr(NULL, TXT_DIFFICULTY_1)) \ + ) +#define MENU_DETAIL_TEXT(u) ( \ + ((u) == 0) ? TXT_DETAIL_1 : \ + ((u) == 1) ? TXT_DETAIL_2 : \ + ((u) == 2) ? TXT_DETAIL_3 : \ + ((u) == 3) ? TXT_DETAIL_4 : \ + ((u) == 4) ? TXT_DETAIL_5 : \ + (dxx_text_ensure_simple_expr(&(u), TXT_DETAIL_1)) \ + ) void decode_text_line(char *text_line); // decryption for bitmaps.tbl void decode_text(char *text, int len); // decryption for briefings, etc.