From 69353631f07aa1d2ebf2b0bc7ec87371c2eb5e7c Mon Sep 17 00:00:00 2001 From: zico Date: Sat, 26 Sep 2015 20:28:49 +0200 Subject: [PATCH] Made missile views from friendly players optional (off by default) --- common/main/playsave.h | 1 + similar/main/gamerend.cpp | 4 +++- similar/main/laser.cpp | 12 ++++++++---- similar/main/menu.cpp | 1 + similar/main/playsave.cpp | 5 +++++ 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/common/main/playsave.h b/common/main/playsave.h index 3fd57c476..29632935b 100644 --- a/common/main/playsave.h +++ b/common/main/playsave.h @@ -100,6 +100,7 @@ struct player_config int ReticleSize; #if defined(DXX_BUILD_DESCENT_II) int MissileViewEnabled; + int FriendMissileView; int HeadlightActiveDefault; int GuidedInBigWindow; ntstring GuidebotName, GuidebotNameReal; diff --git a/similar/main/gamerend.cpp b/similar/main/gamerend.cpp index 2fc27e726..dc9b887af 100644 --- a/similar/main/gamerend.cpp +++ b/similar/main/gamerend.cpp @@ -486,7 +486,9 @@ static bool choose_missile_viewer() { if (!better_match(other_player_missile, o)) continue; - if (game_mode & GM_MULTI_COOP) + if (!PlayerCfg.FriendMissileView) + continue; + else if (game_mode & GM_MULTI_COOP) { /* Always allow missiles of other players */ } diff --git a/similar/main/laser.cpp b/similar/main/laser.cpp index 7c7af667a..dfd927bd3 100644 --- a/similar/main/laser.cpp +++ b/similar/main/laser.cpp @@ -58,6 +58,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #include "multi.h" #include "fwdwall.h" #include "reverse.h" +#include "playsave.h" #include "compiler-range_for.h" #include "highest_valid.h" @@ -1380,10 +1381,13 @@ static objptridx_t Laser_player_fire_spread_delay(const vobjptridx_t obj, enum w const auto can_view_missile = [obj]{ if (obj->id == Player_num) return true; - if (Game_mode & GM_MULTI_COOP) - return true; - if (Game_mode & GM_TEAM) - return get_team(Player_num) == get_team(obj->id); + if (PlayerCfg.FriendMissileView) + { + if (Game_mode & GM_MULTI_COOP) + return true; + if (Game_mode & GM_TEAM) + return get_team(Player_num) == get_team(obj->id); + } return false; }; if (need_new_missile_viewer() && can_view_missile()) diff --git a/similar/main/menu.cpp b/similar/main/menu.cpp index d7ade7b1d..da8731c7e 100644 --- a/similar/main/menu.cpp +++ b/similar/main/menu.cpp @@ -1321,6 +1321,7 @@ static void reticle_config() #elif defined(DXX_BUILD_DESCENT_II) #define DXX_GAME_SPECIFIC_HUDOPTIONS(VERB) \ DXX_##VERB##_CHECK("Missile view",opt_missileview, PlayerCfg.MissileViewEnabled) \ + DXX_##VERB##_CHECK("Missile view of friendly players",opt_friendmissileview, PlayerCfg.FriendMissileView) \ DXX_##VERB##_CHECK("Show guided missile in main display", opt_guidedbigview,PlayerCfg.GuidedInBigWindow ) \ #endif diff --git a/similar/main/playsave.cpp b/similar/main/playsave.cpp index 527eb982a..e1373cd5a 100644 --- a/similar/main/playsave.cpp +++ b/similar/main/playsave.cpp @@ -163,6 +163,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. #define TOGGLES_AUTOMAPFREEFLIGHT_NAME_TEXT "automapfreeflight" #define TOGGLES_NOFIREAUTOSELECT_NAME_TEXT "nofireautoselect" #define TOGGLES_CYCLEAUTOSELECTONLY_NAME_TEXT "cycleautoselectonly" +#define TOGGLES_FRIENDMISSILEVIEW_NAME_TEXT "friendmissileview" #define GRAPHICS_HEADER_TEXT "[graphics]" #define GRAPHICS_ALPHAEFFECTS_NAME_TEXT "alphaeffects" #define GRAPHICS_DYNLIGHTCOLOR_NAME_TEXT "dynlightcolor" @@ -237,6 +238,7 @@ int new_player_config() PlayerCfg.Cockpit3DView[0]=CV_NONE; PlayerCfg.Cockpit3DView[1]=CV_NONE; PlayerCfg.MissileViewEnabled = 1; + PlayerCfg.FriendMissileView = 0; PlayerCfg.HeadlightActiveDefault = 1; PlayerCfg.GuidedInBigWindow = 0; PlayerCfg.GuidebotName = "GUIDE-BOT"; @@ -445,6 +447,8 @@ static int read_player_dxx(const char *filename) #elif defined(DXX_BUILD_DESCENT_II) if(!strcmp(line,TOGGLES_ESCORTHOTKEYS_NAME_TEXT)) PlayerCfg.EscortHotKeys = atoi(value); + if(!strcmp(line,TOGGLES_FRIENDMISSILEVIEW_NAME_TEXT)) + PlayerCfg.FriendMissileView = atoi(value); #endif if(!strcmp(line,TOGGLES_PERSISTENTDEBRIS_NAME_TEXT)) PlayerCfg.PersistentDebris = atoi(value); @@ -747,6 +751,7 @@ static int write_player_dxx(const char *filename) PHYSFSX_printf(fout,TOGGLES_BOMBGAUGE_NAME_TEXT "=%i\n",PlayerCfg.BombGauge); #elif defined(DXX_BUILD_DESCENT_II) PHYSFSX_printf(fout,TOGGLES_ESCORTHOTKEYS_NAME_TEXT "=%i\n",PlayerCfg.EscortHotKeys); + PHYSFSX_printf(fout,TOGGLES_FRIENDMISSILEVIEW_NAME_TEXT "=%i\n",PlayerCfg.FriendMissileView); #endif PHYSFSX_printf(fout,TOGGLES_PERSISTENTDEBRIS_NAME_TEXT "=%i\n",PlayerCfg.PersistentDebris); PHYSFSX_printf(fout,TOGGLES_PRSHOT_NAME_TEXT "=%i\n",PlayerCfg.PRShot);