Fix no-joystick build

When joystick support is not present, `event_joystick_get_button` is not
declared in joy.h.

Fixes: c24864b180 ("make menus controllable with joystick")
This commit is contained in:
Kp 2020-09-11 03:08:02 +00:00
parent 3ee3ac7b7a
commit b3c3066a38
12 changed files with 46 additions and 11 deletions

View file

@ -443,12 +443,14 @@ void joy_close()
joybutton_text.clear();
}
#if DXX_MAX_AXES_PER_JOYSTICK
const d_event_joystick_axis_value &event_joystick_get_axis(const d_event &event)
{
auto &e = static_cast<const d_event_joystick_moved &>(event);
Assert(e.type == EVENT_JOYSTICK_MOVED);
return e;
}
#endif
void joy_flush()
{
@ -465,12 +467,14 @@ void joy_flush()
#endif
}
#if DXX_MAX_BUTTONS_PER_JOYSTICK
int event_joystick_get_button(const d_event &event)
{
auto &e = static_cast<const d_event_joystickbutton &>(event);
Assert(e.type == EVENT_JOYSTICK_BUTTON_DOWN || e.type == EVENT_JOYSTICK_BUTTON_UP);
return e.button;
}
#endif
int apply_deadzone(int value, int deadzone)
{
@ -482,10 +486,10 @@ int apply_deadzone(int value, int deadzone)
return 0;
}
#if DXX_MAX_BUTTONS_PER_JOYSTICK
bool joy_translate_menu_key(const d_event &event) {
if (event.type != EVENT_JOYSTICK_BUTTON_DOWN)
return false;
#if DXX_MAX_JOYSTICKS
auto &e = static_cast<const d_event_joystickbutton &>(event);
assert(e.button < joy_key_map.size());
auto key = joy_key_map[e.button];
@ -495,8 +499,8 @@ bool joy_translate_menu_key(const d_event &event) {
return true;
}
return false;
#endif
}
#endif
}
#endif

View file

@ -24,9 +24,13 @@ enum event_type : unsigned
EVENT_IDLE = 0,
EVENT_QUIT,
#if DXX_MAX_BUTTONS_PER_JOYSTICK
EVENT_JOYSTICK_BUTTON_DOWN,
EVENT_JOYSTICK_BUTTON_UP,
#endif
#if DXX_MAX_AXES_PER_JOYSTICK
EVENT_JOYSTICK_MOVED,
#endif
EVENT_MOUSE_BUTTON_DOWN,
EVENT_MOUSE_BUTTON_UP,

View file

@ -34,10 +34,7 @@ struct d_event_joystick_axis_value
extern void joy_init();
extern void joy_close();
const d_event_joystick_axis_value &event_joystick_get_axis(const d_event &event);
extern void joy_flush();
bool joy_translate_menu_key(const d_event &event);
extern int event_joystick_get_button(const d_event &event);
extern int apply_deadzone(int value, int deadzone);
}
@ -50,6 +47,8 @@ extern int apply_deadzone(int value, int deadzone);
namespace dcx {
#if DXX_MAX_BUTTONS_PER_JOYSTICK
bool joy_translate_menu_key(const d_event &event);
int event_joystick_get_button(const d_event &event);
window_event_result joy_button_handler(const SDL_JoyButtonEvent *jbe);
#else
#define joy_button_handler(jbe) (static_cast<const SDL_JoyButtonEvent *const &>(jbe), window_event_result::ignored)
@ -62,6 +61,7 @@ window_event_result joy_hat_handler(const SDL_JoyHatEvent *jhe);
#endif
#if DXX_MAX_AXES_PER_JOYSTICK
const d_event_joystick_axis_value &event_joystick_get_axis(const d_event &event);
window_event_result joy_axis_handler(const SDL_JoyAxisEvent *jae);
#else
#define joy_axis_handler(jbe) (static_cast<const SDL_JoyAxisEvent *const &>(jbe), window_event_result::ignored)

View file

@ -1116,9 +1116,13 @@ window_event_result editor_handler(UI_DIALOG *, const d_event &event, unused_ui_
if (!keyd_pressed[ KEY_LCTRL ] && !keyd_pressed[ KEY_RCTRL ])
break;
DXX_BOOST_FALLTHROUGH;
#if DXX_MAX_BUTTONS_PER_JOYSTICK
case EVENT_JOYSTICK_BUTTON_UP:
case EVENT_JOYSTICK_BUTTON_DOWN:
#endif
#if DXX_MAX_AXES_PER_JOYSTICK
case EVENT_JOYSTICK_MOVED:
#endif
case EVENT_KEY_COMMAND:
case EVENT_KEY_RELEASE:
case EVENT_IDLE:

View file

@ -1104,9 +1104,13 @@ window_event_result automap::event_handler(const d_event &event)
#endif
case EVENT_IDLE:
#if DXX_MAX_BUTTONS_PER_JOYSTICK
case EVENT_JOYSTICK_BUTTON_UP:
case EVENT_JOYSTICK_BUTTON_DOWN:
#endif
#if DXX_MAX_AXES_PER_JOYSTICK
case EVENT_JOYSTICK_MOVED:
#endif
case EVENT_MOUSE_BUTTON_UP:
case EVENT_MOUSE_BUTTON_DOWN:
case EVENT_MOUSE_MOVED:

View file

@ -132,8 +132,10 @@ window_event_result credits_window::event_handler(const d_event &event)
}
break;
#if DXX_MAX_BUTTONS_PER_JOYSTICK
case EVENT_JOYSTICK_BUTTON_DOWN:
return window_event_result::close;
#endif
case EVENT_IDLE:
if (done > NUM_LINES)

View file

@ -1597,9 +1597,13 @@ window_event_result game_window::event_handler(const d_event &event)
key_toggle_repeat(1);
break;
#if DXX_MAX_BUTTONS_PER_JOYSTICK
case EVENT_JOYSTICK_BUTTON_UP:
case EVENT_JOYSTICK_BUTTON_DOWN:
#endif
#if DXX_MAX_AXES_PER_JOYSTICK
case EVENT_JOYSTICK_MOVED:
#endif
case EVENT_MOUSE_BUTTON_UP:
case EVENT_MOUSE_BUTTON_DOWN:
case EVENT_MOUSE_MOVED:

View file

@ -485,7 +485,11 @@ static int HandleDeathInput(const d_event &event)
}
if (RespawnMode == RespawnPress::Any
? (event.type == EVENT_JOYSTICK_BUTTON_UP || event.type == EVENT_MOUSE_BUTTON_UP)
? (
#if DXX_MAX_BUTTONS_PER_JOYSTICK
event.type == EVENT_JOYSTICK_BUTTON_UP ||
#endif
event.type == EVENT_MOUSE_BUTTON_UP)
: (Controls.state.fire_primary || Controls.state.fire_secondary || Controls.state.fire_flare))
return 1;
return 0;

View file

@ -715,8 +715,10 @@ namespace {
window_event_result kc_menu::event_handler(const d_event &event)
{
#if DXX_MAX_BUTTONS_PER_JOYSTICK
if (!changing && joy_translate_menu_key(event))
return window_event_result::handled;
#endif
switch (event.type)
{
@ -917,7 +919,7 @@ static void kc_change_key( kc_menu &menu,const d_event &event, kc_mitem &mitem )
kc_set_exclusive_binding(menu, mitem, BT_KEY, keycode);
}
#if DXX_MAX_BUTTONS_PER_JOYSTICK || DXX_MAX_HATS_PER_JOYSTICK
#if DXX_MAX_BUTTONS_PER_JOYSTICK
static void kc_change_joybutton( kc_menu &menu,const d_event &event, kc_mitem &mitem )
{
int button = 255;
@ -1152,7 +1154,7 @@ void kconfig_read_controls(control_info &Controls, const d_event &event, int aut
}
}
break;
#if DXX_MAX_BUTTONS_PER_JOYSTICK || DXX_MAX_HATS_PER_JOYSTICK || DXX_MAX_AXES_PER_JOYSTICK
#if DXX_MAX_BUTTONS_PER_JOYSTICK
case EVENT_JOYSTICK_BUTTON_DOWN:
case EVENT_JOYSTICK_BUTTON_UP:
if (!(PlayerCfg.ControlType & CONTROL_USING_JOYSTICK))

View file

@ -1572,8 +1572,10 @@ static window_event_result newmenu_draw(window *wind, newmenu *menu)
static window_event_result newmenu_handler(window *wind,const d_event &event, newmenu *menu)
{
#if DXX_MAX_BUTTONS_PER_JOYSTICK
if (joy_translate_menu_key(event))
return window_event_result::handled;
#endif
if (menu->subfunction)
{
@ -2187,8 +2189,10 @@ static window_event_result listbox_handler(window *wind,const d_event &event, li
return rval; // event handled
}
#if DXX_MAX_BUTTONS_PER_JOYSTICK
if (joy_translate_menu_key(event))
return window_event_result::handled;
#endif
switch (event.type)
{

View file

@ -404,8 +404,10 @@ static window_event_result scores_handler(window *wind,const d_event &event, sco
}
break;
#if DXX_MAX_BUTTONS_PER_JOYSTICK
case EVENT_JOYSTICK_BUTTON_DOWN:
return window_event_result::close;
#endif
case EVENT_IDLE:
timer_delay2(50);

View file

@ -145,11 +145,10 @@ static window_event_result title_handler(window *, const d_event &event, title_s
}
return result;
#if DXX_MAX_BUTTONS_PER_JOYSTICK
case EVENT_JOYSTICK_BUTTON_DOWN:
{
return window_event_result::close;
}
break;
#endif
case EVENT_IDLE:
timer_delay2(50);
@ -1555,6 +1554,7 @@ static window_event_result briefing_handler(window *, const d_event &event, brie
}
break;
#if DXX_MAX_BUTTONS_PER_JOYSTICK
case EVENT_JOYSTICK_BUTTON_DOWN:
// using joy_translate_menu_key doesn't work here for unclear
// reasons, so we build a reasonable facsimile right here
@ -1572,6 +1572,7 @@ static window_event_result briefing_handler(window *, const d_event &event, brie
else
br->delay_count = 0;
return window_event_result::handled;
#endif
case EVENT_KEY_COMMAND:
{