From 4156fabddbc7d1163a5734d1cacae832b3cd414d Mon Sep 17 00:00:00 2001 From: Kp Date: Sun, 26 Apr 2015 20:15:52 +0000 Subject: [PATCH] Only page in needed key gauges --- similar/main/gauges.cpp | 43 ++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/similar/main/gauges.cpp b/similar/main/gauges.cpp index be79dc1f1..ca739884e 100644 --- a/similar/main/gauges.cpp +++ b/similar/main/gauges.cpp @@ -980,26 +980,43 @@ static void hud_show_homing_warning(void) static void hud_show_keys(void) { - grs_bitmap *blue,*yellow,*red; + const unsigned player_key_flags = Players[Player_num].flags & (PLAYER_FLAGS_BLUE_KEY | PLAYER_FLAGS_GOLD_KEY | PLAYER_FLAGS_RED_KEY); + if (!player_key_flags) + return; + class gauge_key + { + grs_bitmap *const bm; + public: + gauge_key(const unsigned key_icon) : + bm(&GameBitmaps[PAGE_IN_GAUGE(key_icon), GET_GAUGE_INDEX(key_icon)]) + { + } + grs_bitmap *operator->() const + { + return bm; + } + operator grs_bitmap *() const + { + return bm; + } + }; + const gauge_key blue(KEY_ICON_BLUE); int y=HUD_SCALE_Y_AR(GameBitmaps[ GET_GAUGE_INDEX(GAUGE_LIVES) ].bm_h+2)+FSPACY(1); - PAGE_IN_GAUGE( KEY_ICON_BLUE ); - PAGE_IN_GAUGE( KEY_ICON_YELLOW ); - PAGE_IN_GAUGE( KEY_ICON_RED ); - - blue=&GameBitmaps[ GET_GAUGE_INDEX(KEY_ICON_BLUE) ]; - yellow=&GameBitmaps[ GET_GAUGE_INDEX(KEY_ICON_YELLOW) ]; - red=&GameBitmaps[ GET_GAUGE_INDEX(KEY_ICON_RED) ]; - - if (Players[Player_num].flags & PLAYER_FLAGS_BLUE_KEY) + if (player_key_flags & PLAYER_FLAGS_BLUE_KEY) hud_bitblt_free(FSPACX(2),y,HUD_SCALE_X_AR(blue->bm_w),HUD_SCALE_Y_AR(blue->bm_h),blue); - if (Players[Player_num].flags & PLAYER_FLAGS_GOLD_KEY) + if (!(player_key_flags & (PLAYER_FLAGS_GOLD_KEY | PLAYER_FLAGS_RED_KEY))) + return; + const gauge_key yellow(KEY_ICON_YELLOW); + if (player_key_flags & PLAYER_FLAGS_GOLD_KEY) hud_bitblt_free(FSPACX(2)+HUD_SCALE_X_AR(blue->bm_w+3),y,HUD_SCALE_X_AR(yellow->bm_w),HUD_SCALE_Y_AR(yellow->bm_h),yellow); - if (Players[Player_num].flags & PLAYER_FLAGS_RED_KEY) + if (player_key_flags & PLAYER_FLAGS_RED_KEY) + { + const gauge_key red(KEY_ICON_RED); hud_bitblt_free(FSPACX(2)+HUD_SCALE_X_AR(blue->bm_w+yellow->bm_w+6),y,HUD_SCALE_X_AR(red->bm_w),HUD_SCALE_Y_AR(red->bm_h),red); - + } } #if defined(DXX_BUILD_DESCENT_II)