void TouchManager::init() { config.addListener("showScreenJoystick", this); config.addListener("showScreenButtons", this); config.addListener("showScreenKeyboard", this); config.addListener("screenButtonsSize", this); config.addListener("screenJoystickSize", this); config.addListener("screenButtonsFormat", this); mShowJoystick = config.getBoolValue("showScreenJoystick"); mShowButtons = config.getBoolValue("showScreenButtons"); mShowKeyboard = config.getBoolValue("showScreenKeyboard"); mButtonsSize = config.getIntValue("screenButtonsSize"); mJoystickSize = config.getIntValue("screenJoystickSize"); mButtonsFormat = config.getIntValue("screenButtonsFormat"); setHalfJoyPad(getPadSize() / 2); if (mShowKeyboard) loadKeyboard(); if (mShowJoystick) loadPad(); if (mShowButtons) loadButtons(); mWidth = mainGraphics->mWidth; mHeight = mainGraphics->mHeight; }
void ExchangeDialog::execute(Character *&c, int &charIndex) { Screen &screen = *_vm->_screen; EventsManager &events = *_vm->_events; Interface &intf = *_vm->_interface; Party &party = *_vm->_party; loadButtons(); Window &w = screen._windows[31]; w.open(); w.writeString(Res.EXCHANGE_WITH_WHOM); _iconSprites.draw(w, 0, Common::Point(225, 120)); w.update(); while (!_vm->shouldQuit()) { events.pollEventsAndWait(); checkEvents(_vm); if (_buttonValue >= Common::KEYCODE_F1 && _buttonValue <= Common::KEYCODE_F6) { _buttonValue -= Common::KEYCODE_F1; if (_buttonValue < (int)party._activeParty.size()) { SWAP(party._activeParty[charIndex], party._activeParty[_buttonValue]); charIndex = _buttonValue; c = &party._activeParty[charIndex]; break; } } else if (_buttonValue == Common::KEYCODE_ESCAPE) { break; } } w.close(); intf.drawParty(true); intf.highlightChar(charIndex); }
GUI_ScrollBar::GUI_ScrollBar(int x, int y, int h, GUI_CallBack *callback) : GUI_Widget(NULL, x, y, SCROLLBAR_WIDTH, h) { callback_object = callback; drag = false; loadButtons(); track_length = area.h - 2 * button_height; slider_length = track_length / 2; slider_y = 5; }
WindowMenu::WindowMenu(const Widget2 *const widget) : Container(widget), ActionListener(), SelectionListener(), MouseListener(), mSkin(theme ? theme->load("windowmenu.xml", "") : nullptr), mPadding(mSkin ? mSkin->getPadding() : 1), mSpacing(mSkin ? mSkin->getOption("spacing", 3) : 3), mButtons(), mButtonTexts(), mButtonNames(), mHaveMouse(false), mAutoHide(1), mSmallWindow(mainGraphics->getWidth() < 600) { int x = mPadding; int h = 0; setFocusable(false); // TRANSLATORS: short button name for who is online window. addButton(N_("ONL"), _("Who is online"), x, h, InputAction::WINDOW_ONLINE); // TRANSLATORS: short button name for help window. addButton(N_("HLP"), _("Help"), x, h, InputAction::WINDOW_HELP); // TRANSLATORS: short button name for quests window. addButton(N_("QE"), _("Quests"), x, h, InputAction::WINDOW_QUESTS); // TRANSLATORS: short button name for kill stats window. addButton(N_("KS"), _("Kill stats"), x, h, InputAction::WINDOW_KILLS); addButton(":-)", _("Smilies"), x, h, InputAction::WINDOW_EMOTE_SHORTCUT); // TRANSLATORS: short button name for chat window. addButton(N_("CH"), _("Chat"), x, h, InputAction::WINDOW_CHAT, #ifdef ANDROID Visible_true); #else Visible_false); #endif // TRANSLATORS: short button name for status window. addButton(N_("STA"), _("Status"), x, h, InputAction::WINDOW_STATUS); // TRANSLATORS: short button name for equipment window. addButton(N_("EQU"), _("Equipment"), x, h, InputAction::WINDOW_EQUIPMENT); // TRANSLATORS: short button name for inventory window. addButton(N_("INV"), _("Inventory"), x, h, InputAction::WINDOW_INVENTORY); // TRANSLATORS: short button name for cart window. addButton(N_("CA"), _("Cart"), x, h, InputAction::WINDOW_CART); // TRANSLATORS: short button name for map window. addButton(N_("MAP"), _("Map"), x, h, InputAction::WINDOW_MINIMAP, Visible_false); if (skillDialog->hasSkills()) { // TRANSLATORS: short button name for skills window. addButton(N_("SKI"), _("Skills"), x, h, InputAction::WINDOW_SKILL); } // TRANSLATORS: short button name for social window. addButton(N_("SOC"), // TRANSLATORS: full button name _("Social"), x, h, InputAction::WINDOW_SOCIAL); // TRANSLATORS: short button name for shortcuts window. addButton(N_("SH"), // TRANSLATORS: full button name _("Shortcuts"), x, h, InputAction::WINDOW_SHORTCUT); // TRANSLATORS: short button name for spells window. addButton(N_("SP"), // TRANSLATORS: full button name _("Spells"), x, h, InputAction::WINDOW_SPELLS); // TRANSLATORS: short button name for drops window. addButton(N_("DR"), // TRANSLATORS: full button name _("Drop"), x, h, InputAction::WINDOW_DROP, Visible_false); // TRANSLATORS: short button name for did you know window. addButton(N_("YK"), // TRANSLATORS: full button name _("Did you know"), x, h, InputAction::WINDOW_DIDYOUKNOW, Visible_false); // TRANSLATORS: short button name for shop window. addButton(N_("SHP"), // TRANSLATORS: full button name _("Shop"), x, h, InputAction::WINDOW_SHOP, Visible_false); // TRANSLATORS: short button name for outfits window. addButton(N_("OU"), // TRANSLATORS: full button name _("Outfits"), x, h, InputAction::WINDOW_OUTFIT, Visible_false); // TRANSLATORS: short button name for updates window. addButton(N_("UP"), // TRANSLATORS: full button name _("Updates"), x, h, InputAction::WINDOW_UPDATER, Visible_false); // TRANSLATORS: short button name for bank window. addButton(N_("BA"), // TRANSLATORS: full button name _("Bank"), x, h, InputAction::WINDOW_BANK, Visible_true); // TRANSLATORS: short button name for mail window. addButton(N_("MA"), // TRANSLATORS: full button name _("Mail"), x, h, InputAction::WINDOW_MAIL, Visible_true), // TRANSLATORS: short button name for debug window. addButton(N_("DBG"), // TRANSLATORS: full button name _("Debug"), x, h, InputAction::WINDOW_DEBUG, #ifdef ANDROID Visible_true); #else Visible_false); #endif // TRANSLATORS: short button name for windows list menu. addButton(N_("WIN"), // TRANSLATORS: full button name _("Windows"), x, h, InputAction::SHOW_WINDOWS, Visible_false); // TRANSLATORS: short button name for setup window. addButton(N_("SET"), // TRANSLATORS: full button name _("Setup"), x, h, InputAction::WINDOW_SETUP); x += mPadding - mSpacing; if (mainGraphics) setDimension(Rect(mainGraphics->mWidth - x, 0, x, h)); loadButtons(); addMouseListener(this); setVisible(Visible_true); config.addListener("autohideButtons", this); mAutoHide = config.getIntValue("autohideButtons"); }
bool TownMessage::execute(int portrait, const Common::String &name, const Common::String &text, int confirm) { EventsManager &events = *_vm->_events; Interface &intf = *_vm->_interface; Screen &screen = *_vm->_screen; Town &town = *_vm->_town; Window &w = screen._windows[11]; town._townMaxId = 4; town._townActionId = 7; town._drawFrameIndex = 0; town._townPos = Common::Point(23, 22); if (!confirm) loadButtons(); if (town._townSprites[0].empty()) { town._townSprites[0].load(Common::String::format("face%02d.fac", portrait)); town._townSprites[1].load("frame.fac"); } if (!w._enabled) w.open(); int result = -1; Common::String msgText = text; for (;;) { Common::String msg = Common::String::format("\r\v014\x03c\t125%s\t000\v054%s", name.c_str(), msgText.c_str()); const char *msgEnd = w.writeString(msg.c_str()); int wordCount = 0; for (const char *msgP = msg.c_str(); msgP < msgEnd; ++msgP) { if (*msgP == ' ') ++wordCount; } town._drawCtr2 = wordCount * 2; town._townSprites[1].draw(screen, 0, Common::Point(16, 16)); town._townSprites[0].draw(screen, town._drawFrameIndex, Common::Point(23, 22)); w.update(); if (!msgEnd) { // Doesn't look like the code here in original can ever be reached assert(0); } if (confirm == 2) { intf._face1State = intf._face2State = 2; return false; } do { events.clearEvents(); events.updateGameCounter(); if (msgEnd) clearButtons(); do { events.wait(3); checkEvents(_vm); if (_vm->shouldQuit()) return false; town.drawTownAnim(false); events.updateGameCounter(); } while (!_buttonValue); if (msgEnd) break; if (!msgEnd) { if (confirm || _buttonValue == Common::KEYCODE_ESCAPE || _buttonValue == Common::KEYCODE_n) result = 0; else if (_buttonValue == Common::KEYCODE_y) result = 1; } } while (result == -1); if (msgEnd) { msgText = Common::String(msgEnd); town._drawCtr2 = wordCount; continue; } } while (result == -1); intf._face1State = intf._face2State = 2; if (!confirm) intf.mainIconsPrint(); town._townSprites[0].clear(); town._townSprites[1].clear(); return result == 1; }
void NGLScene::timerEvent(QTimerEvent *_event) { Data *data = Data::instance(); ngl::ShaderLib *shader=ngl::ShaderLib::instance(); if(_event->timerId() == m_timer1){ QPoint p = mapFromGlobal(QCursor::pos()); m_mousePos[0] = (p.x() / float(m_width) * 2) - 1; m_mousePos[1] = (p.y() / float(m_height) * 2) - 1; m_mousePos[1] *= -1; float currentTime = QTime::currentTime().msecsSinceStartOfDay() / 1000.0; switch(Data::instance()->mode){ case Data::DWELLING : m_currentButton = checkButtonMouseOver(); for(Button &button : m_buttons){ if(m_currentButton && &button == m_currentButton){ if(button.m_selectedTime == 0){ button.m_isSelected = true; button.m_firstSelected = currentTime; button.m_selectedTime = 0.001; button.m_color.set(data->selectedColor); } else{ button.m_selectedTime = currentTime - button.m_firstSelected; if(button.m_selectedTime > data->dwellTime){ m_action = button.click(currentTime); } } } else{ button.m_color.set(data->baseColor); button.m_isSelected = false; button.m_firstSelected = 0; button.m_selectedTime = 0; } } break; case Data::SCANNING : if(m_buttons.size() == 1){ m_currentButton = &(m_buttons[0]); } if(m_currentButton){ m_currentButton->m_selectedTime = currentTime - m_currentButton->m_firstSelected; if(m_currentButton->m_selectedTime > data->dwellTime){ m_currentButton->m_isSelected = false; m_currentButton->m_selectedTime = 0; m_currentButton->m_color.set(data->baseColor); if(m_currentButton == &m_buttons[m_buttons.size()-1]){ m_currentButton = &m_buttons[0]; } else{ m_currentButton++; } m_currentButton->m_isSelected = true; m_currentButton->m_firstSelected = currentTime; m_currentButton->m_color.set(data->selectedColor); } } break; case Data::TOUCHLARGE : case Data::TOUCHSMALL_L : case Data::TOUCHSMALL_R : break; default : std::cerr << "mode not set" << std::endl; break; } int start = 0; int dir = 0; int rotIndex = 0; int hueChange = 0; switch(m_action){ case Button::Action::NONE : break; case Button::Action::SPIN_CCW : if(m_geo[0]->m_localRotation[1] < (m_geo[0]->m_maxAngle)){ rotIndex = 1; start = 0; dir += 1; } break; case Button::Action::SPIN_CW : if(m_geo[0]->m_localRotation[1] > -(m_geo[0]->m_maxAngle)){ rotIndex = 1; start = 0; dir -= 1; } break; case Button::Action::ROTATE_1_R : rotIndex = 0; if(m_geo[1]->m_localRotation[0] > -(m_geo[1]->m_maxAngle)){ start = 1; dir -= 1; } break; case Button::Action::ROTATE_1_L : rotIndex = 0; if(m_geo[1]->m_localRotation[0] < m_geo[1]->m_maxAngle){ start = 1; dir += 1; } break; case Button::Action::ROTATE_2_R : rotIndex = 0; if(m_geo[2]->m_localRotation[0] > -(m_geo[2]->m_maxAngle)){ start = 2; dir -= 1; } break; case Button::Action::ROTATE_2_L : rotIndex = 0; if(m_geo[2]->m_localRotation[0] < m_geo[2]->m_maxAngle){ start = 2; dir += 1; } break; case Button::Action::ROTATE_3_R : rotIndex = 0; if(m_geo[3]->m_localRotation[0] > -(m_geo[3]->m_maxAngle)){ start = 3; dir -= 1; } break; case Button::Action::ROTATE_3_L : rotIndex = 0; if(m_geo[3]->m_localRotation[0] < m_geo[3]->m_maxAngle){ start = 3; dir += 1; } break; case Button::Action::KEY : writeKey(); break; case Button::Action::FINISH : exit(writeOut()); break; case Button::Action::COLOR_L : hueChange = 1; break; case Button::Action::COLOR_R : hueChange = -1; break; case Button::Action::COLOR_SET : m_timer3 = startTimer(data->dwellTime/5 * 1000); break; default : std::cout << "ERROR: button action" << std::endl; break; } if(hueChange){ data->updateColor(hueChange); shader->use("buttonShader"); shader->setRegisteredUniform("geoColor", data->geoColor); } m_geo[start]->m_localRotation[rotIndex] += data->rotateAngle * dir; for(unsigned int i = start; i<m_geo.size(); i++){ m_geo[i]->m_rotation[rotIndex] += data->rotateAngle * dir; } m_action = Button::Action::NONE; shader->use("buttonShader"); shader->setRegisteredUniform("currentTime", currentTime); update(); } else if(_event->timerId() == m_timer2){ m_frame++; } else if(_event->timerId() == m_timer3){ m_colorSet = true; loadButtons(); killTimer(m_timer3); } }
void NGLScene::initializeGL() { // we need to initialise the NGL lib which will load all of the OpenGL functions, this must // be done once we have a valid GL context but before we call any GL commands. If we dont do // this everything will crash ngl::NGLInit::instance(); glClearColor(0.8, 0.9, 0.9, 1.0); // Grey Background // enable depth testing for drawing glEnable(GL_DEPTH_TEST); // enable multisampling for smoother drawing glEnable(GL_MULTISAMPLE); std::cout << "generating" << std::endl; ngl::ShaderLib *shader=ngl::ShaderLib::instance(); Data *data = Data::instance(); shader->createShaderProgram("geoShader"); // now we are going to create empty shaders for Frag and Vert shader->attachShader("geoVertex",ngl::ShaderType::VERTEX); shader->attachShader("geoFragment",ngl::ShaderType::FRAGMENT); // attach the source shader->loadShaderSource("geoVertex","shaders/GeoVertex.glsl"); shader->loadShaderSource("geoFragment","shaders/GeoFragment.glsl"); // compile the shaders shader->compileShader("geoVertex"); shader->compileShader("geoFragment"); // add them to the program shader->attachShaderToProgram("geoShader","geoVertex"); shader->attachShaderToProgram("geoShader","geoFragment"); // now we have associated that data we can link the shader shader->linkProgramObject("geoShader"); // and make it active ready to load values shader->use("geoShader"); shader->setRegisteredUniform("simpleGhosting", data->simpleGhosting); // we are creating a shader called buttonShader shader->createShaderProgram("buttonShader"); // now we are going to create empty shaders for Frag and Vert shader->attachShader("buttonVertex",ngl::ShaderType::VERTEX); shader->attachShader("buttonFragment",ngl::ShaderType::FRAGMENT); shader->attachShader("buttonGeometry", ngl::ShaderType::GEOMETRY); // attach the source shader->loadShaderSource("buttonVertex","shaders/ButtonVertex.glsl"); shader->loadShaderSource("buttonFragment","shaders/ButtonFragment.glsl"); shader->loadShaderSource("buttonGeometry", "shaders/ButtonGeometry.glsl"); // compile the shaders shader->compileShader("buttonVertex"); shader->compileShader("buttonFragment"); shader->compileShader("buttonGeometry"); // add them to the program shader->attachShaderToProgram("buttonShader","buttonVertex"); shader->attachShaderToProgram("buttonShader","buttonFragment"); shader->attachShaderToProgram("buttonShader","buttonGeometry"); // now we have associated that data we can link the shader shader->linkProgramObject("buttonShader"); // and make it active ready to load values shader->use("buttonShader"); shader->setRegisteredUniform("clickedColor", data->clickedColor); shader->setRegisteredUniform("circleSize", data->circleSize); shader->setRegisteredUniform("dwellTime", data->dwellTime); shader->setRegisteredUniform("clickMovement", data->clickMovement); shader->setRegisteredUniform("borderSize", data->borderSize); shader->setRegisteredUniform("loadingBarSize", data->loadingBarSize); shader->setRegisteredUniform("borderColor", data->borderColor); shader->setRegisteredUniform("loadingBarColor", data->loadingBarColor); shader->setRegisteredUniform("mode", data->shaderMode); shader->setRegisteredUniform("animLength", data->animLength); shader->setRegisteredUniform("originalColor", data->baseColor); shader->setRegisteredUniform("hueChangeAmount", data->hueChangeAmount); shader->setRegisteredUniform("geoColor", data->geoColor); shader->createShaderProgram("progressShader"); shader->attachShader("progressVertex",ngl::ShaderType::VERTEX); shader->attachShader("progressFragment",ngl::ShaderType::FRAGMENT); shader->loadShaderSource("progressVertex","shaders/ProgressVertex.glsl"); shader->loadShaderSource("progressFragment","shaders/ProgressFragment.glsl"); shader->compileShader("progressVertex"); shader->compileShader("progressFragment"); shader->attachShaderToProgram("progressShader","progressVertex"); shader->attachShaderToProgram("progressShader","progressFragment"); shader->linkProgramObject("progressShader"); shader->use("progressShader"); shader->setRegisteredUniform("frame", m_frame); shader->setRegisteredUniform("animLength", data->animLength); shader->setRegisteredUniform("backgroundColor", data->backgroundColor); shader->setRegisteredUniform("progressBarSize", data->progressBarSize); shader->setRegisteredUniform("progressBarColor", data->progressBarColor); shader->setRegisteredUniform("progressBarSelection", data->progressBarSelection); shader->setRegisteredUniform("progressBarBack", data->progressBarBack); shader->setRegisteredUniform("borderSize", data->borderSize); shader->setRegisteredUniform("borderColor", data->borderColor); m_view = ngl::lookAt(ngl::Vec3(5,1,0), ngl::Vec3(0,1,0), ngl::Vec3(0,1,0)); m_geo.push_back(new Geo("geo/base.obj", 0.05, 360000)); m_geo.push_back(new Geo("geo/lower.obj", 0.8, 90)); m_geo.push_back(new Geo("geo/upper.obj", 0.8, 90)); m_geo.push_back(new Geo("geo/hand.obj", 0.2, 90)); for(auto &geo : m_geo){ geo->m_mesh.createVAO(); } createQuad(); glGenVertexArrays(2, m_vaoIDs); glGenBuffers(3, m_vboIDs); //loadTextures(); loadButtons(); m_timer1 = startTimer(16); }