foxygit / doom Log in
commit 3213faa4e68c749a7660661fd4fcc204b13ee5a8
Author:     Wintermute0110 <wintermute0110@gmail.com>
AuthorDate: Mon Mar 20 23:44:42 2017 +0900
Commit:     Wintermute0110 <wintermute0110@gmail.com>
CommitDate: Mon Mar 20 23:44:42 2017 +0900

    Simulate Y/N key press with joystick Fire/Use buttons in YES/NO dialogs.
---
 src/doom/m_menu.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/doom/m_menu.c b/src/doom/m_menu.c
index 8df6ad7c..b60b9168 100644
--- a/src/doom/m_menu.c
+++ b/src/doom/m_menu.c
@@ -1396,6 +1396,8 @@ boolean M_Responder (event_t* ev)

     if (ev->type == ev_joystick && joywait < I_GetTime())
     {
+        // Simulate key presses from joyticks events to interact with the menu.
+
 	if (ev->data3 < 0)
 	{
 	    key = key_menu_up;
@@ -1433,6 +1435,20 @@ boolean M_Responder (event_t* ev)
             key = key_menu_activate;
 	    joywait = I_GetTime() + 5;
         }
+
+        // Simulate a 'Y' keypress when Doom show a Y/N dialog with Fire button.
+        if (messageToPrint && messageNeedsInput && joybmenu >= 0 && ev->data1&1)
+        {
+            key = key_menu_confirm;
+            joywait = I_GetTime() + 5;
+        }
+
+        // Simulate a 'N' keypress when Doom show a Y/N dialog with Use button.
+        if (messageToPrint && messageNeedsInput && joybmenu >= 0 && ev->data1&2)
+        {
+            key = key_menu_abort;
+            joywait = I_GetTime() + 5;
+        }
     }
     else
     {