introduce hide weapon option (#1007)

* Add second page to weapon menu, restore first/chainsaw toggle menu option.

* Clean screenshots without weapon. Add new "clean screenshot" key, like in
  Crispy.
This commit is contained in:
Roman Fomin 2023-04-24 13:59:37 +07:00 committed by GitHub
parent b49f0adbf4
commit 974d306880
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 84 additions and 31 deletions

View File

@ -114,6 +114,8 @@ int doom_weapon_toggles; // killough 10/98
int monkeys, default_monkeys;
boolean hide_weapon;
// [FG] centered weapon sprite
int center_weapon;

View File

@ -251,6 +251,8 @@ extern boolean noblit;
extern boolean nosfxparm;
extern boolean nomusicparm;
extern boolean clean_screenshot;
// This one is related to the 3-screen display mode.
// ANG90 = left side, ANG270 = right
extern int viewangleoffset;
@ -433,6 +435,8 @@ extern int flashing_hom; // killough 10/98
extern int doom_weapon_toggles; // killough 10/98
extern boolean hide_weapon;
// [FG] centered weapon sprite
extern int center_weapon;

View File

@ -2217,18 +2217,21 @@ static void G_DoLoadGame(void)
}
}
boolean clean_screenshots;
boolean clean_screenshot;
void G_CleanScreenshot(void)
{
int old_screenblocks;
boolean old_hide_weapon;
old_screenblocks = screenblocks;
old_hide_weapon = hide_weapon;
hide_weapon = true;
R_SetViewSize(11);
R_ExecuteSetViewSize();
R_RenderPlayerView(&players[displayplayer]);
R_SetViewSize(old_screenblocks);
hide_weapon = old_hide_weapon;
}
//
@ -2276,8 +2279,11 @@ void G_Ticker(void)
G_DoWorldDone();
break;
case ga_screenshot:
if (clean_screenshots)
if (clean_screenshot)
{
G_CleanScreenshot();
clean_screenshot = false;
}
M_ScreenShot();
gameaction = ga_nothing;
break;

View File

@ -81,6 +81,7 @@ enum
input_zoomin,
input_zoomout,
input_screenshot,
input_clean_screenshot,
input_setup,
input_pause,
input_spy,

View File

@ -2973,6 +2973,7 @@ setup_menu_t keys_settings5[] = // Key Binding screen strings
{"LARGER VIEW" ,S_INPUT ,m_scrn,KB_X,M_Y+13*M_SPC,{0},input_zoomin},
{"SMALLER VIEW",S_INPUT ,m_scrn,KB_X,M_Y+14*M_SPC,{0},input_zoomout},
{"SCREENSHOT" ,S_INPUT ,m_scrn,KB_X,M_Y+15*M_SPC,{0},input_screenshot},
{"CLEAN SCREENSHOT",S_INPUT ,m_scrn,KB_X,M_Y+16*M_SPC,{0},input_clean_screenshot},
{"<- PREV", S_SKIP|S_PREV,m_null,M_X_PREV,M_Y_PREVNEXT, {keys_settings4}},
{"NEXT ->", S_SKIP|S_NEXT,m_null,M_X_NEXT,M_Y_PREVNEXT, {keys_settings6}},
@ -3147,19 +3148,27 @@ enum { // killough 10/98: enum for y-offset info
weap1_pref8,
weap1_pref9,
weap1_stub1,
weap1_bfg,
weap1_toggle,
weap1_toggle_line,
weap1_stub2,
weap1_title1,
weap1_bobbing,
weap1_recoilpitch,
weap1_center // [FG] centered weapon sprite
weap1_bfg,
};
enum {
weap2_title1,
weap2_hide_weapon,
weap2_center, // [FG] centered weapon sprite
weap2_bobbing,
weap2_recoilpitch,
};
setup_menu_t weap_settings1[];
setup_menu_t weap_settings2[];
setup_menu_t* weap_settings[] =
{
weap_settings1,
weap_settings2,
NULL
};
@ -3174,7 +3183,7 @@ static const char *default_bobfactor_strings[] = {
static void M_UpdateCenteredWeaponItem(void)
{
DISABLE_ITEM(!cosmetic_bobbing, weap_settings1[weap1_center]);
DISABLE_ITEM(!cosmetic_bobbing, weap_settings1[weap2_center]);
}
setup_menu_t weap_settings1[] = // Weapons Settings screen
@ -3191,28 +3200,47 @@ setup_menu_t weap_settings1[] = // Weapons Settings screen
{"", S_SKIP, m_null, M_X, M_Y + weap1_stub1*M_SPC},
{"Pre-Beta BFG" ,S_YESNO,m_null,M_X, // killough 8/8/98
M_Y+ weap1_bfg*M_SPC, {"classic_bfg"}},
{"Enable Fist/Chainsaw\n& SG/SSG toggle", S_YESNO|S_BOOM, m_null, M_X,
M_Y+ weap1_toggle*M_SPC, {"doom_weapon_toggles"}},
{"", S_SKIP, m_null, M_X, M_Y + weap1_stub2*M_SPC},
{"Cosmetic",S_SKIP|S_TITLE,m_null,M_X,M_Y+weap1_title1*M_SPC},
{"Player View/Weapon Bobbing",S_CHOICE,m_null,M_X, M_Y+weap1_bobbing*M_SPC, {"cosmetic_bobbing"}, 0, M_UpdateCenteredWeaponItem, default_bobfactor_strings},
{"Enable Recoil Pitch", S_YESNO,m_null,M_X, M_Y+ weap1_recoilpitch*M_SPC, {"weapon_recoilpitch"}},
// [FG] centered or bobbing weapon sprite
{"Weapon Attack Alignment",S_CHOICE|S_STRICT,m_null,M_X, M_Y+weap1_center*M_SPC, {"center_weapon"}, 0, NULL, weapon_attack_alignment_strings},
{"Pre-Beta BFG" ,S_YESNO,m_null,M_X, // killough 8/8/98
M_Y+ weap1_bfg*M_SPC, {"classic_bfg"}},
// Button for resetting to defaults
{0,S_RESET,m_null,X_BUTTON,Y_BUTTON},
{"NEXT ->",S_SKIP|S_NEXT,m_null,M_X_NEXT,M_Y_PREVNEXT, {weap_settings2}},
// Final entry
{0,S_SKIP|S_END,m_null}
};
setup_menu_t weap_settings2[] =
{
{"Cosmetic",S_SKIP|S_TITLE,m_null,M_X,M_Y+weap2_title1*M_SPC},
{"Hide Weapon", S_YESNO|S_STRICT, m_null, M_X,
M_Y + weap2_hide_weapon*M_SPC, {"hide_weapon"}},
// [FG] centered or bobbing weapon sprite
{"Weapon Attack Alignment", S_CHOICE|S_STRICT, m_null, M_X,
M_Y + weap2_center * M_SPC, {"center_weapon"}, 0, NULL, weapon_attack_alignment_strings},
{"Player View/Weapon Bobbing", S_CHOICE, m_null, M_X,
M_Y + weap2_bobbing * M_SPC, {"cosmetic_bobbing"}, 0, M_UpdateCenteredWeaponItem, default_bobfactor_strings},
{"Enable Recoil Pitch", S_YESNO, m_null, M_X,
M_Y + weap2_recoilpitch*M_SPC, {"weapon_recoilpitch"}},
{"<- PREV" ,S_SKIP|S_PREV,m_null,M_X_PREV,M_Y_PREVNEXT, {weap_settings1}},
// Final entry
{0,S_SKIP|S_END,m_null}
};
// Setting up for the Weapons screen. Turn on flags, set pointers,
// locate the first item on the screen where the cursor is allowed to
// land.
@ -4000,7 +4028,6 @@ enum {
gen3_strictmode,
gen3_screen_melt,
gen3_death_action,
gen3_clean_screenshots,
gen3_demobar,
gen3_palette_changes,
gen3_level_brightness,
@ -4156,9 +4183,6 @@ setup_menu_t gen_settings3[] = { // General Settings screen3
{"On death action", S_CHOICE, m_null, M_X,
M_Y + gen3_death_action*M_SPC, {"death_use_action"}, 0, NULL, death_use_action_strings},
{"Clean Screenshots", S_YESNO, m_null, M_X,
M_Y + gen3_clean_screenshots*M_SPC, {"clean_screenshots"}},
{"Show demo progress bar", S_YESNO, m_null, M_X,
M_Y + gen3_demobar*M_SPC, {"demobar"}},
@ -5423,6 +5447,12 @@ boolean M_Responder (event_t* ev)
// return true; // [FG] don't let toggles eat keys
}
if (M_InputActivated(input_clean_screenshot))
{
clean_screenshot = true;
G_ScreenShot();
}
// If there is no active menu displayed...
if (!menuactive && !chat_on) // phares

View File

@ -105,7 +105,6 @@ extern boolean r_swirl;
extern int death_use_action;
extern boolean palette_changes;
extern boolean screen_melt;
extern boolean clean_screenshots;
extern boolean hangsolid;
extern boolean blockmapfix;
extern int extra_level_brightness;
@ -596,13 +595,6 @@ default_t defaults[] = {
"0 to disable screen melt"
},
{
"clean_screenshots",
(config_t *) &clean_screenshots, NULL,
{0}, {0,1}, number, ss_gen, wad_yes,
"1 to enable clean screenshots without any HUD elements"
},
{
"net_player_name",
(config_t *) &net_player_name, NULL,
@ -681,6 +673,13 @@ default_t defaults[] = {
"Player View/Weapon Bobbing (0 = off, 1 = full, 2 = 75%)"
},
{
"hide_weapon",
(config_t *) &hide_weapon, NULL,
{0}, {0,1}, number, ss_weap, wad_no,
"1 to hide weapon"
},
// [FG] centered or bobbing weapon sprite
{
"center_weapon",
@ -1861,6 +1860,14 @@ default_t defaults[] = {
input_screenshot, { {input_type_key, KEY_PRTSCR} }
},
{
"input_clean_screenshot",
NULL, NULL,
{0}, {UL,UL}, input, ss_keys, wad_no,
"key to take a clean screenshot",
input_screenshot, { {0, 0} }
},
{ // HOME key // killough 10/98: shortcut to setup menu
"input_setup",
NULL, NULL,

View File

@ -824,6 +824,9 @@ void R_DrawPSprite (pspdef_t *psp)
// [crispy] free look
vis->texturemid += (centery - viewheight/2) * pspriteiscale;
if (STRICTMODE(hide_weapon))
return;
R_DrawVisSprite(vis, vis->x1, vis->x2);
}