void Setup_Input::apply() { keyUnresolved(); InputActionT key1; InputActionT key2; if (inputManager.hasConflicts(key1, key2)) { const std::string str1 = keyToString(key1); const std::string str2 = keyToString(key2); CREATEWIDGET(OkDialog, // TRANSLATORS: input settings error header _("Key Conflict(s) Detected."), // TRANSLATORS: input settings error strprintf(_("Conflict \"%s\" and \"%s\" keys. " "Resolve them, or gameplay may result in strange behaviour."), gettext(str1.c_str()), gettext(str2.c_str())), // TRANSLATORS: ok dialog button _("OK"), DialogType::ERROR, Modal_true, ShowCenter_true, nullptr, 260); } keyboard.setEnabled(true); inputManager.store(); }
void BuySellRecv::processNpcBuySellChoice(Net::MessageIn &msg) { if (!BuySellDialog::isActive()) { mNpcId = msg.readBeingId("npc id"); CREATEWIDGET(BuySellDialog, mNpcId); } }
void ServerDialog::action(const ActionEvent &event) { const std::string &eventId = event.getId(); if (eventId == "connect") { connectToSelectedServer(); } else if (eventId == "quit") { close(); } else if (eventId == "load") { downloadServerList(); } else if (eventId == "addEntry") { CREATEWIDGET(EditServerDialog, this, ServerInfo(), -1); } else if (eventId == "editEntry") { const int index = mServersList->getSelected(); if (index >= 0) { CREATEWIDGET(EditServerDialog, this, mServers.at(index), index); } } else if (eventId == "remove") { const int index = mServersList->getSelected(); if (index >= 0) { mServersList->setSelected(0); mServers.erase(mServers.begin() + index); saveCustomServers(); } } }
void Setup_Video::action(const ActionEvent &event) { const std::string &id = event.getId(); if (id == "videomode") { std::string mode = mModeListModel->getElementAt( mModeList->getSelected()); if (mode == "custom") { if (mDialog) { mode = mDialog->getText(); mDialog = nullptr; } else { CREATEWIDGETV(mDialog, TextDialog, // TRANSLATORS: resolution question dialog _("Custom resolution (example: 1024x768)"), // TRANSLATORS: resolution question dialog _("Enter new resolution: ")); mDialog->setActionEventId("videomode"); mDialog->addActionListener(this); return; } } const int width = atoi(mode.substr(0, mode.find("x")).c_str()); const int height = atoi(mode.substr(mode.find("x") + 1).c_str()); if (!width || !height) return; if (width != mainGraphics->mActualWidth || height != mainGraphics->mActualHeight) { #if defined(WIN32) || defined(__APPLE__) || defined(ANDROID) if (intToRenderType(config.getIntValue("opengl")) == RENDER_SOFTWARE) { WindowManager::doResizeVideo(width, height, false); } else { if (width < mainGraphics->mActualWidth || height < mainGraphics->mActualHeight) { CREATEWIDGET(OkDialog, // TRANSLATORS: video settings warning _("Screen Resolution Changed"), // TRANSLATORS: video settings warning _("Restart your client for the change to take effect.") // TRANSLATORS: video settings warning + std::string("\n") + _("Some windows may be moved to " "fit the lowered resolution."), // TRANSLATORS: ok dialog button _("OK"), DialogType::OK, Modal_true, ShowCenter_true, nullptr, 260); } else { CREATEWIDGET(OkDialog, // TRANSLATORS: video settings warning _("Screen Resolution Changed"), // TRANSLATORS: video settings warning _("Restart your client for the change" " to take effect."), // TRANSLATORS: ok dialog button _("OK"), DialogType::OK, Modal_true, ShowCenter_true, nullptr, 260); } } #else // defined(WIN32) || defined(__APPLE__) || defined(ANDROID) mainGraphics->setWindowSize(width, height); WindowManager::doResizeVideo(width, height, false); #endif // defined(WIN32) || defined(__APPLE__) || defined(ANDROID) } config.setValue("oldscreen", config.getBoolValue("screen")); config.setValue("oldscreenwidth", mainGraphics->mActualWidth); config.setValue("oldscreenheight", mainGraphics->mActualHeight); config.setValue("screenwidth", width); config.setValue("screenheight", height); } if (id == "~videomode") { mDialog = nullptr; } else if (id == "customcursor") { config.setValue("customcursor", mCustomCursorCheckBox->isSelected()); } else if (id == "fpslimitcheckbox" || id == "fpslimitslider") { int tempFps = CAST_S32(mFpsSlider->getValue()); if (id == "fpslimitcheckbox" && !mFpsSlider->isEnabled()) tempFps = 60; else tempFps = tempFps > 0 ? tempFps : 60; mFps = mFpsCheckBox->isSelected() ? tempFps : 0; // TRANSLATORS: video settings label const std::string text = mFps > 0 ? toString(mFps) : _("None"); mFpsLabel->setCaption(text); mFpsSlider->setEnabled(mFps > 0); mFpsSlider->setValue(mFps); } else if (id == "altfpslimitslider") { int tempFps = CAST_S32(mAltFpsSlider->getValue()); tempFps = tempFps > 0 ? tempFps : CAST_S32( mAltFpsSlider->getScaleStart()); mAltFps = tempFps; // TRANSLATORS: video settings label const std::string text = mAltFps > 0 ? toString(mAltFps) : _("None"); // TRANSLATORS: video settings label mAltFpsLabel->setCaption(_("Alt FPS limit: ") + text); mAltFpsSlider->setEnabled(mAltFps > 0); mAltFpsSlider->setValue(mAltFps); } else if (id == "enableresize") { config.setValue("enableresize", mEnableResizeCheckBox->isSelected()); } else if (id == "noframe") { config.setValue("noframe", mNoFrameCheckBox->isSelected()); } #if defined(USE_OPENGL) && !defined(ANDROID) && !defined(__APPLE__) else if (id == "detect") { TestMain *test = graphicsManager.startDetection(); if (test) { Configuration &conf = test->getConfig(); const int val = conf.getValueInt("opengl", -1); if (val >= 0 && CAST_U32(val) < sizeof(renderToIndex) / sizeof(int)) { mOpenGLDropDown->setSelected(renderToIndex[val]); } config.setValue("textureSize", conf.getValue("textureSize", "1024,1024,1024,1024,1024,1024")); config.setValue("testInfo", conf.getValue("testInfo", "")); delete test; } } #endif // defined(USE_OPENGL) && !defined(ANDROID) && !defined(__APPLE__) }
void Setup_Video::apply() { // Full screen changes bool fullscreen = mFsCheckBox->isSelected(); if (fullscreen != config.getBoolValue("screen")) { /* The OpenGL test is only necessary on Windows, since switching * to/from full screen works fine on Linux. On Windows we'd have to * reinitialize the OpenGL state and reload all textures. * * See http://libsdl.org/cgi/docwiki.cgi/SDL_SetVideoMode */ #if defined(WIN32) || defined(__APPLE__) || defined(ANDROID) // checks for opengl usage if (intToRenderType(config.getIntValue("opengl")) == RENDER_SOFTWARE) { #endif // defined(WIN32) || defined(__APPLE__) || defined(ANDROID) if (!WindowManager::setFullScreen(fullscreen)) { fullscreen = !fullscreen; if (!WindowManager::setFullScreen(fullscreen)) { std::stringstream errorMsg; if (fullscreen) { // TRANSLATORS: video error message errorMsg << _("Failed to switch to windowed mode " "and restoration of old mode also " "failed!") << std::endl; } else { // TRANSLATORS: video error message errorMsg << _("Failed to switch to fullscreen mode" " and restoration of old mode also " "failed!") << std::endl; } logger->safeError(errorMsg.str()); } } #if defined(WIN32) || defined(__APPLE__) || defined(ANDROID) } else { CREATEWIDGET(OkDialog, // TRANSLATORS: video settings warning _("Switching to Full Screen"), // TRANSLATORS: video settings warning _("Restart needed for changes to take effect."), // TRANSLATORS: ok dialog button _("OK"), DialogType::OK, Modal_true, ShowCenter_true, nullptr, 260); } #endif // defined(WIN32) || defined(__APPLE__) || defined(ANDROID) config.setValue("screen", fullscreen); } const int sel = mOpenGLDropDown->getSelected(); RenderType mode = RENDER_SOFTWARE; if (sel >= 0 && CAST_U32(sel) < sizeof(indexToRender)) mode = indexToRender[mOpenGLDropDown->getSelected()]; // OpenGL change if (mode != mOpenGLEnabled) { config.setValue("opengl", CAST_S32(mode)); // OpenGL can currently only be changed by restarting, notify user. CREATEWIDGET(OkDialog, // TRANSLATORS: video settings warning _("Changing to OpenGL"), // TRANSLATORS: video settings warning _("Applying change to OpenGL requires restart."), // TRANSLATORS: ok dialog button _("OK"), DialogType::OK, Modal_true, ShowCenter_true, nullptr, 260); } mFps = mFpsCheckBox->isSelected() ? CAST_S32(mFpsSlider->getValue()) : 0; mAltFps = CAST_S32(mAltFpsSlider->getValue()); mFpsSlider->setEnabled(mFps > 0); mAltFpsSlider->setEnabled(mAltFps > 0); // FPS change config.setValue("fpslimit", mFps); config.setValue("altfpslimit", mAltFps); // We sync old and new values at apply time mFullScreenEnabled = config.getBoolValue("screen"); mCustomCursorEnabled = config.getBoolValue("customcursor"); mOpenGLEnabled = intToRenderType(config.getIntValue("opengl")); mEnableResize = config.getBoolValue("enableresize"); mNoFrame = config.getBoolValue("noframe"); }
void CharCreateDialog::action(const ActionEvent &event) { const std::string &id = event.getId(); if (id == "create") { if (getName().length() >= 4) { // Attempt to create the character mCreateButton->setEnabled(false); std::vector<int> atts; for (size_t i = 0, sz = mAttributeSlider.size(); i < sz; i++) { atts.push_back(static_cast<int>( mAttributeSlider[i]->getValue())); } const int characterSlot = mSlot; charServerHandler->newCharacter(getName(), characterSlot, mGender, mHairStyle, mHairColor, static_cast<unsigned char>(mRace), static_cast<unsigned char>(mLook), atts); } else { CREATEWIDGET(OkDialog, // TRANSLATORS: char creation error _("Error"), // TRANSLATORS: char creation error _("Your name needs to be at least 4 characters."), // TRANSLATORS: ok dialog button _("OK"), DialogType::ERROR, Modal_true, ShowCenter_true, nullptr, 260); } } else if (id == "cancel") { scheduleDelete(); } else if (id == "nextcolor") { mHairColor ++; updateHair(); } else if (id == "prevcolor") { mHairColor --; updateHair(); } else if (id == "nextstyle") { mHairStyle ++; updateHair(); } else if (id == "prevstyle") { mHairStyle --; updateHair(); } else if (id == "nextrace") { mRace ++; updateRace(); } else if (id == "prevrace") { mRace --; updateRace(); } else if (id == "nextlook") { mLook ++; updateLook(); } else if (id == "prevlook") { mLook --; updateLook(); } else if (id == "statslider") { updateSliders(); } else if (id == "action") { mAction ++; if (mAction >= 5) mAction = 0; updatePlayer(); } else if (id == "rotate") { mDirection ++; if (mDirection >= 4) mDirection = 0; updatePlayer(); } else if (id == "gender_m") { mGender = Gender::MALE; mPlayer->setGender(Gender::MALE); } else if (id == "gender_f") { mGender = Gender::FEMALE; mPlayer->setGender(Gender::FEMALE); } else if (id == "gender_u") { mGender = Gender::UNSPECIFIED; mPlayer->setGender(mDefaultGender); } }