void OptionsScreenInput::buildDeviceList() { GUIEngine::ListWidget* devices = this->getWidget<GUIEngine::ListWidget>("devices"); assert( devices != NULL ); assert( m_icon_bank != NULL ); devices->setIcons(m_icon_bank); const int keyboard_config_count = input_manager->getDeviceList()->getKeyboardConfigAmount(); for (int i=0; i<keyboard_config_count; i++) { //KeyboardConfig *config = input_manager->getDeviceList()->getKeyboardConfig(i); std::ostringstream kbname; kbname << "keyboard" << i; const std::string internal_name = kbname.str(); // since irrLicht's list widget has the nasty tendency to put the // icons very close to the text, I'm adding spaces to compensate. devices->addItem(internal_name, (core::stringw(" ") + _("Keyboard %i", i)).c_str(), 0 /* icon */); } const int gpad_config_count = input_manager->getDeviceList()->getGamePadConfigAmount(); for (int i = 0; i < gpad_config_count; i++) { GamepadConfig *config = input_manager->getDeviceList()->getGamepadConfig(i); // Don't display the configuration if a matching device is not available if (config->isPlugged()) { // since irrLicht's list widget has the nasty tendency to put the // icons very close to the text, I'm adding spaces to compensate. irr::core::stringw name = (" " + config->getName()).c_str(); if (config->getNumberOfDevices() > 1) { name += core::stringw(L" (x"); name += config->getNumberOfDevices(); name += core::stringw(L")"); } std::ostringstream gpname; gpname << "gamepad" << i; const std::string internal_name = gpname.str(); const int icon = (config->isEnabled() ? 1 : 2); devices->addItem(internal_name, name, icon); } // if config->isPlugged } // for i<gpad_config_count } // buildDeviceList
void OptionsScreenInput2::init() { Screen::init(); RibbonWidget* tabBar = getWidget<RibbonWidget>("options_choice"); if (tabBar != NULL) tabBar->select( "tab_controls", PLAYER_ID_GAME_MASTER ); tabBar->getRibbonChildren()[0].setTooltip( _("Graphics") ); tabBar->getRibbonChildren()[1].setTooltip( _("Audio") ); tabBar->getRibbonChildren()[2].setTooltip( _("User Interface") ); tabBar->getRibbonChildren()[3].setTooltip( _("Players") ); ButtonWidget* deleteBtn = getWidget<ButtonWidget>("delete"); if (m_config->getType() != DEVICE_CONFIG_TYPE_KEYBOARD) { core::stringw label = (m_config->isEnabled() ? //I18N: button to disable a gamepad configuration _("Disable Device") : //I18N: button to enable a gamepad configuration _("Enable Device")); // Make sure button is wide enough as the text is being changed away // from the original value core::dimension2d<u32> size = GUIEngine::getFont()->getDimension(label.c_str()); const int needed = size.Width + deleteBtn->getWidthNeededAroundLabel(); if (deleteBtn->m_w < needed) deleteBtn->m_w = needed; deleteBtn->setLabel(label); } else { deleteBtn->setLabel(_("Delete Configuration")); if (input_manager->getDeviceList()->getKeyboardAmount() < 2) { // don't allow deleting the last config deleteBtn->setDeactivated(); } else { deleteBtn->setActivated(); } } // Make the two buttons the same length, not strictly needed but will // look nicer... ButtonWidget* backBtn = getWidget<ButtonWidget>("back_to_device_list"); if (backBtn->m_w < deleteBtn->m_w) backBtn->m_w = deleteBtn->m_w; else deleteBtn->m_w = backBtn->m_w; backBtn->moveIrrlichtElement(); deleteBtn->moveIrrlichtElement(); LabelWidget* label = getWidget<LabelWidget>("title"); label->setText( m_config->getName().c_str(), false ); GUIEngine::ListWidget* actions = getWidget<GUIEngine::ListWidget>("actions"); assert( actions != NULL ); // ---- create list skeleton (right number of items, right internal names) // their actualy contents will be adapted as needed after //I18N: Key binding section actions->addItem("game_keys_section", _("Game Keys") ); actions->addItem(KartActionStrings[PA_STEER_LEFT], L"" ); actions->addItem(KartActionStrings[PA_STEER_RIGHT], L"" ); actions->addItem(KartActionStrings[PA_ACCEL], L"" ); actions->addItem(KartActionStrings[PA_BRAKE], L"" ); actions->addItem(KartActionStrings[PA_FIRE], L"" ); actions->addItem(KartActionStrings[PA_NITRO], L"" ); actions->addItem(KartActionStrings[PA_DRIFT], L"" ); actions->addItem(KartActionStrings[PA_LOOK_BACK], L"" ); actions->addItem(KartActionStrings[PA_RESCUE], L"" ); actions->addItem(KartActionStrings[PA_PAUSE_RACE], L"" ); //I18N: Key binding section actions->addItem("menu_keys_section", _("Menu Keys") ); actions->addItem(KartActionStrings[PA_MENU_UP], L"" ); actions->addItem(KartActionStrings[PA_MENU_DOWN], L"" ); actions->addItem(KartActionStrings[PA_MENU_LEFT], L"" ); actions->addItem(KartActionStrings[PA_MENU_RIGHT], L"" ); actions->addItem(KartActionStrings[PA_MENU_SELECT], L""); actions->addItem(KartActionStrings[PA_MENU_CANCEL], L"" ); updateInputButtons(); } // init