ref: 529ad8fd4d3313a2d60dff0c513b621b7219c94f
parent: 036df9796a134357506f19e4513f1a1f4c165476
parent: 236bb3ae5ea98ca9fa6b6eb2a1b51717516b0647
author: Turo Lamminen <[email protected]>
date: Wed Apr 27 14:06:11 EDT 2022
Merge pull request #1459 from mikeday0/hhmouseusearti Heretic/Hexen: Add mouse button for "use artifact'
--- a/src/heretic/g_game.c
+++ b/src/heretic/g_game.c
@@ -423,7 +423,7 @@
}
// Use artifact key
- if (gamekeydown[key_useartifact])
+ if (gamekeydown[key_useartifact] || mousebuttons[mousebuseartifact])
{
if (gamekeydown[key_speed] && !noartiskip)
{
@@ -430,6 +430,7 @@
if (players[consoleplayer].inventory[inv_ptr].type != arti_none)
{
gamekeydown[key_useartifact] = false;
+ mousebuttons[mousebuseartifact] = false;
cmd->arti = 0xff; // skip artifact code
}
}
@@ -840,7 +841,10 @@
static void SetMouseButtons(unsigned int buttons_mask)
{
int i;
+ player_t *plr;
+ plr = &players[consoleplayer];
+
for (i=0; i<MAX_MOUSE_BUTTONS; ++i)
{
unsigned int button_on = (buttons_mask & (1 << i)) != 0;
@@ -864,6 +868,14 @@
else if (i == mousebinvright)
{
InventoryMoveRight();
+ }
+ else if (i == mousebuseartifact)
+ {
+ if (!inventory)
+ {
+ plr->readyArtifact = plr->inventory[inv_ptr].type;
+ }
+ usearti = true;
}
}
--- a/src/hexen/g_game.c
+++ b/src/hexen/g_game.c
@@ -361,7 +361,7 @@
look = TOCENTER;
}
// Use artifact key
- if (gamekeydown[key_useartifact])
+ if (gamekeydown[key_useartifact] || mousebuttons[mousebuseartifact])
{
if (gamekeydown[key_speed] && artiskip)
{
@@ -368,6 +368,7 @@
if (players[consoleplayer].inventory[inv_ptr].type != arti_none)
{ // Skip an artifact
gamekeydown[key_useartifact] = false;
+ mousebuttons[mousebuseartifact] = false;
P_PlayerNextArtifact(&players[consoleplayer]);
}
}
@@ -805,7 +806,10 @@
static void SetMouseButtons(unsigned int buttons_mask)
{
int i;
+ player_t *plr;
+ plr = &players[consoleplayer];
+
for (i=0; i<MAX_MOUSE_BUTTONS; ++i)
{
unsigned int button_on = (buttons_mask & (1 << i)) != 0;
@@ -829,6 +833,14 @@
else if (i == mousebinvright)
{
InventoryMoveRight();
+ }
+ else if (i == mousebuseartifact)
+ {
+ if (!inventory)
+ {
+ plr->readyArtifact = plr->inventory[inv_ptr].type;
+ }
+ usearti = true;
}
}
--- a/src/m_config.c
+++ b/src/m_config.c
@@ -1099,6 +1099,14 @@
CONFIG_VARIABLE_INT(mouseb_invright),
//!
+ // @game heretic hexen
+ //
+ // Mouse button to use artifact.
+ //
+
+ CONFIG_VARIABLE_INT(mouseb_useartifact),
+
+ //!
// If non-zero, double-clicking a mouse button acts like pressing
// the "use" key to use an object in-game, eg. a door or switch.
//
--- a/src/m_controls.c
+++ b/src/m_controls.c
@@ -122,6 +122,7 @@
int mousebnextweapon = -1;
int mousebinvleft = -1;
int mousebinvright = -1;
+int mousebuseartifact = -1;
int key_message_refresh = KEY_ENTER;
int key_pause = KEY_PAUSE;
@@ -275,6 +276,7 @@
M_BindIntVariable("mouseb_invleft", &mousebinvleft);
M_BindIntVariable("mouseb_invright", &mousebinvright);
+ M_BindIntVariable("mouseb_useartifact", &mousebuseartifact);
M_BindIntVariable("key_arti_quartz", &key_arti_quartz);
M_BindIntVariable("key_arti_urn", &key_arti_urn);
--- a/src/m_controls.h
+++ b/src/m_controls.h
@@ -151,6 +151,7 @@
extern int mousebnextweapon;
extern int mousebinvleft;
extern int mousebinvright;
+extern int mousebuseartifact;
extern int joybfire;
extern int joybstrafe;
--- a/src/setup/mouse.c
+++ b/src/setup/mouse.c
@@ -50,6 +50,7 @@
&mousebspeed,
&mousebinvleft,
&mousebinvright,
+ &mousebuseartifact,
&mousebturnleft,
&mousebturnright,
};
@@ -113,6 +114,7 @@
{
AddMouseControl(buttons_table, "Inventory left", &mousebinvleft);
AddMouseControl(buttons_table, "Inventory right", &mousebinvright);
+ AddMouseControl(buttons_table, "Use artifact", &mousebuseartifact);
}
if (gamemission == hexen || gamemission == strife)