Save keyboard and gamepad availability result in kart selection screen

Calling hasHardwareKeyboard maybe expensive in iOS
This commit is contained in:
Benau 2020-06-12 20:43:00 +08:00
parent b054c3b4a0
commit ae3497a31d
2 changed files with 8 additions and 4 deletions

View File

@ -268,6 +268,8 @@ void KartSelectionScreen::loadedFromFile()
void KartSelectionScreen::beforeAddingWidget()
{
m_has_external_keyboard = irr_driver->getDevice()->hasHardwareKeyboard();
m_has_external_gamepad = input_manager->getGamepadCount() > 0;
if (useContinueButton())
{
getWidget("kartlist")->m_properties[GUIEngine::PROP_WIDTH] = "85%";
@ -1008,8 +1010,7 @@ void KartSelectionScreen::addMultiplayerMessage()
{
m_multiplayer_message = new BubbleWidget();
m_multiplayer_message->m_properties[PROP_TEXT_ALIGN] = "center";
if (!irr_driver->getDevice()->hasHardwareKeyboard() &&
input_manager->getGamepadCount() == 0)
if (!m_has_external_keyboard && !m_has_external_gamepad)
{
m_multiplayer_message->setText(_("Connect a keyboard or "
"gamepad to play splitscreen multiplayer"));
@ -1593,8 +1594,7 @@ bool KartSelectionScreen::useContinueButton() const
{
if (m_multiplayer)
return false;
if (irr_driver->getDevice()->hasHardwareKeyboard() ||
input_manager->getGamepadCount() > 0)
if (m_has_external_keyboard || m_has_external_gamepad)
return false;
bool multitouch_enabled = (UserConfigParams::m_multitouch_active == 1 &&
irr_driver->getDevice()->supportsTouchDevice()) ||

View File

@ -76,6 +76,10 @@ protected:
*/
bool m_game_master_confirmed;
/** For mobile STK to handle the continue button */
bool m_has_external_keyboard;
bool m_has_external_gamepad;
GUIEngine::PlayerKartWidget* m_removed_widget;
/** Message shown in multiplayer mode */