fixed going back in menus with gamepad (use rescue, should now work)
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/irrlicht@3373 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
parent
d7a032944e
commit
de53cd22c1
@ -797,13 +797,14 @@ void RibbonGridWidget::add()
|
|||||||
|
|
||||||
// add arrow buttons on each side
|
// add arrow buttons on each side
|
||||||
// FIXME? these arrow buttons are outside of the widget's boundaries
|
// FIXME? these arrow buttons are outside of the widget's boundaries
|
||||||
// create sub-widgets if they don't already exist
|
if(m_left_widget != NULL)
|
||||||
//if(m_left_widget == NULL)
|
{
|
||||||
//{
|
// FIXME - do proper memory management, find why it crashes when i try to clean-up
|
||||||
// FIXME - memory leak, irrlicht will probably delete its own widget; I don't delete mine however.
|
//delete m_left_widget;
|
||||||
m_left_widget = new Widget();
|
//delete m_right_widget;
|
||||||
m_right_widget = new Widget();
|
}
|
||||||
//}
|
m_left_widget = new Widget();
|
||||||
|
m_right_widget = new Widget();
|
||||||
|
|
||||||
const int average_y = y + (h-label_height)/2;
|
const int average_y = y + (h-label_height)/2;
|
||||||
const int button_w = 30, button_h = 50;
|
const int button_w = 30, button_h = 50;
|
||||||
|
@ -339,7 +339,7 @@ void InputManager::input(Input::InputType type, int id0, int id1, int id2,
|
|||||||
const bool action_found = m_device_manager->mapInputToPlayerAndAction( type, id0, id1, id2, value, &player, &action );
|
const bool action_found = m_device_manager->mapInputToPlayerAndAction( type, id0, id1, id2, value, &player, &action );
|
||||||
if(!action_found) return;
|
if(!action_found) return;
|
||||||
|
|
||||||
if(m_timer_in_use) return; // time between keys not elapsed yet
|
evt.PressedDown = abs(value) > MAX_VALUE/2;
|
||||||
|
|
||||||
if(action == PA_FIRE || action == PA_NITRO)
|
if(action == PA_FIRE || action == PA_NITRO)
|
||||||
evt.Key = irr::KEY_RETURN;
|
evt.Key = irr::KEY_RETURN;
|
||||||
@ -352,26 +352,34 @@ void InputManager::input(Input::InputType type, int id0, int id1, int id2,
|
|||||||
else if(action == PA_LEFT)
|
else if(action == PA_LEFT)
|
||||||
evt.Key = irr::KEY_LEFT;
|
evt.Key = irr::KEY_LEFT;
|
||||||
else if(action == PA_RESCUE)
|
else if(action == PA_RESCUE)
|
||||||
evt.Key = irr::KEY_ESCAPE;
|
{
|
||||||
|
// escape (or 'rescue' on gamepad) is a little special
|
||||||
|
if(evt.PressedDown) StateManager::escapePressed();
|
||||||
|
return;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
return; // only those bindings are accepted in menus for now.
|
return; // only those bindings are accepted in menus for now.
|
||||||
|
|
||||||
evt.PressedDown = abs(value) > MAX_VALUE/2;
|
if(type == Input::IT_STICKMOTION)
|
||||||
if(evt.PressedDown && type == Input::IT_STICKMOTION)
|
|
||||||
{
|
{
|
||||||
// minimum time between two gamepad events in menu
|
if(m_timer_in_use) return; // time between keys not elapsed yet
|
||||||
m_timer_in_use = true;
|
|
||||||
m_timer = 0.25;
|
if(evt.PressedDown)
|
||||||
}
|
{
|
||||||
}
|
// minimum time between two gamepad events in menu
|
||||||
|
m_timer_in_use = true;
|
||||||
|
m_timer = 0.25;
|
||||||
|
}
|
||||||
|
} // end if (gamepad input type)
|
||||||
|
} // end if (keyboard vs gamepad)
|
||||||
|
|
||||||
// send event to irrLicht
|
// send event to irrLicht
|
||||||
irr::SEvent wrapper;
|
irr::SEvent wrapper;
|
||||||
wrapper.KeyInput = evt;
|
wrapper.KeyInput = evt;
|
||||||
wrapper.EventType = EET_KEY_INPUT_EVENT;
|
wrapper.EventType = EET_KEY_INPUT_EVENT;
|
||||||
|
|
||||||
GUIEngine::getDevice()->postEventFromUser(wrapper);
|
GUIEngine::getDevice()->postEventFromUser(wrapper);
|
||||||
|
|
||||||
}
|
}
|
||||||
// in-game event handling
|
// in-game event handling
|
||||||
else
|
else
|
||||||
@ -475,7 +483,7 @@ void InputManager::input()
|
|||||||
case SDL_KEYDOWN:
|
case SDL_KEYDOWN:
|
||||||
|
|
||||||
// escape is a little special
|
// escape is a little special
|
||||||
if(ev.key.keysym.sym == 27)
|
if(ev.key.keysym.sym == SDLK_ESCAPE)
|
||||||
{
|
{
|
||||||
StateManager::escapePressed();
|
StateManager::escapePressed();
|
||||||
return;
|
return;
|
||||||
|
Loading…
Reference in New Issue
Block a user