/client/GUIEngine.cpp
C++ | 584 lines | 559 code | 4 blank | 21 comment | 94 complexity | 8616aa28ed50437d7527b42376c7f962 MD5 | raw file
Possible License(s): AGPL-3.0, BSD-3-Clause
- /*
- This file is a part of World Apocalypse.
- Copyright (C) 2011 Le Sommer Leo Robin
- World Apocalypse is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- World Apocalypse is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
- You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- #include <OgreWindowEventUtilities.h>
- #include "GUIEngine.h"
- #include "socket.h"
- #include "sleep.h"
- #include <mysql.h>
- #include <string>
- #include <cstdlib>
- #include "GameEngine.h"
- #include "ConfigGlobalObject.h"
- Ogre::UTFString convertToUTF(Ogre::String string)
- {
- Ogre::UTFString UTFString;
- Ogre::UTFString::code_point cp;
- for(auto elem : string)
- {
- cp = elem;
- cp &= 0xFF;
- UTFString.append(1, cp);
- }
- return UTFString;
- }
- bool isNotEmpty(const char* string)
- {
- int i = 0;
- while(string[i] != '\0')
- {
- if(string[i] != ' ')
- return true;
- i++;
- }
- return false;
- }
- namespace gui
- {
- GUIEngine::GUIEngine()
- {
- m_isInitiated = false;
- }
- GUIEngine::~GUIEngine()
- {
- }
- void GUIEngine::init(Ogre::RenderWindow* win, Ogre::SceneManager* sceneManager, audio::AudioEngine* audioEngine)
- {
- m_window = win;
- m_sceneManager = sceneManager;
- m_audioEngine = audioEngine;
- m_platform = new MyGUI::OgrePlatform();
- m_platform->initialise(win, sceneManager, "GUI");
- m_gui = new MyGUI::Gui();
- m_gui->initialise("media/gui/MyGUI_Core.xml");
- //m_gui->showPointer();
- //event focus
- m_hasEventKeyboardFocus = false;
- m_hasEventMouseFocus = false;
- //pointers initialisation
- //menu
- m_menuList = 0;
- m_menuButton = 0;
- //sous menus
- m_inventaire = 0;
- m_groupDialog = 0;
- m_questLog = 0;
- m_magasin = 0;
- m_questDialog = 0;
- m_textDialog = 0;
- m_choiceDialog = 0;
- m_chatBox = 0;
- m_quitter = 0;
- m_configurationDialog = 0;
- m_isInitiated = true;
- }
- void GUIEngine::remove()
- {
- if(!m_isInitiated)
- return;
- //sous menus
- m_gui->shutdown();
- delete m_gui;
- m_platform->shutdown();
- delete m_platform;
- }
- void GUIEngine::setNetEngine(network::NetEngine* netEngine)
- {
- m_netEngine = netEngine;
- }
- MyGUI::Gui* GUIEngine::getGUI()
- {
- return m_gui;
- }
- MyGUI::OgrePlatform* GUIEngine::getMyGUIOgrePlateform()
- {
- return m_platform;
- }
- void GUIEngine::initGUI(game::GameEngine* gameEngine)
- {
- //menu
- m_menuIsButtonPressed = false;
- m_menuButton = createButton(820, 720, 200, 46, "Menu");
- m_menuButton->setFontHeight(40);
- m_menuList = 0;
- //sous menus
- m_inventaire = new Inventaire(this, m_netEngine, gameEngine);
- m_groupDialog = new GroupDialog(this, m_netEngine, gameEngine);
- m_questLog = new QuestLog(this, m_netEngine);
- m_magasin = new Magasin(this, m_netEngine, gameEngine);
- m_questDialog = new QuestDialog(this, m_netEngine);
- m_textDialog = new TextDialog(this);
- m_choiceDialog = new ChoiceDialog(this);
- m_chatBox = new ChatBox(this, m_netEngine);
- m_chatBox->init();
- m_configurationDialog = new ConfigurationDialog(this, gameEngine);
- m_quitter = new WindowQuit(this, gameEngine);
- }
- void GUIEngine::cleanGUI()
- {
- //menu
- if(m_menuList != 0)
- deleteWidget(m_menuList);
- m_menuList = 0;
- if(m_menuButton != 0)
- deleteWidget(m_menuButton);
- m_menuButton = 0;
- //sous menus
- if(m_inventaire != 0)
- delete m_inventaire;
- m_inventaire = 0;
- if(m_groupDialog != 0)
- delete m_groupDialog;
- m_groupDialog = 0;
- if(m_questLog != 0)
- delete m_questLog;
- m_questLog = 0;
- if(m_magasin != 0)
- delete m_magasin;
- m_magasin = 0;
- if(m_textDialog != 0)
- delete m_textDialog;
- m_textDialog = 0;
- if(m_questDialog != 0)
- delete m_questDialog;
- m_questDialog = 0;
- if(m_choiceDialog != 0)
- delete m_choiceDialog;
- m_choiceDialog = 0;
- if(m_chatBox != 0)
- delete m_chatBox;
- m_chatBox = 0;
- if(m_quitter != 0)
- delete m_quitter;
- m_quitter = 0;
- }
- void GUIEngine::update()
- {
- if(m_inventaire != 0)
- m_inventaire->update();
- if(m_groupDialog != 0)
- m_groupDialog->update();
- if(m_questLog != 0)
- m_questLog->update();
- if(m_magasin != 0)
- m_magasin->update();
- if(m_chatBox != 0)
- m_chatBox->update();
- if(m_configurationDialog != 0)
- m_configurationDialog->update();
- if(m_quitter != 0)
- m_quitter->update();
- if(m_questDialog != 0)
- m_questDialog->update();
- if(m_menuButton)
- {
- if(m_menuButton->getStateSelected())
- {
- if(m_menuIsButtonPressed == false)
- {
- m_menuIsButtonPressed = true;
- if(m_menuList == 0)
- {
- m_menuList = createList(0, 0, 0, 0);
- m_menuList->addItem("Personnage (non disponible)");
- m_menuList->addItem("Chat Box");
- m_menuList->addItem("Compétences (non disponible)");
- m_menuList->addItem("Quete (non disponible)");
- m_menuList->addItem("Inventaire (en cour)");
- m_menuList->addItem("Groupe (en cour)");
- m_menuList->addItem("Configuration (en cour)");
- m_menuList->addItem("Quitter (en cour)");
- m_menuList->setPosition(m_menuButton->getPosition().left, m_menuButton->getPosition().top - m_menuList->getOptimalHeight());
- m_menuList->setSize(200, m_menuList->getOptimalHeight());
- }
- else
- {
- deleteWidget(m_menuList);
- m_menuList = 0;
- }
- }
- }
- else
- {
- m_menuIsButtonPressed = false;
- }
- if(m_menuList != 0)
- {
- if(m_menuList->getIndexSelected() < m_menuList->getItemCount())
- {
- switch(m_menuList->getIndexSelected())
- {
- case 0 :
- break;
- case 1 : //chatBox
- m_chatBox->init();
- break;
- case 2 :
- break;
- case 3 : //quetes
- //m_questLog->init();
- break;
- case 4 : //inventaire
- m_inventaire->init();
- break;
- case 5 : //group
- m_groupDialog->init();
- break;
- case 6 : //configuration
- m_configurationDialog->init();
- break;
- case 7 :
- m_quitter->init();
- break;
- }
- m_menuList->clearIndexSelected();
- }
- }
- }
- }
- bool GUIEngine::keyPressed(const OIS::KeyEvent &arg)
- {
- MyGUI::InputManager::getInstance().injectKeyPress(MyGUI::KeyCode::Enum(arg.key), arg.text);
- return true;
- }
- bool GUIEngine::keyReleased(const OIS::KeyEvent &arg)
- {
- MyGUI::InputManager::getInstance().injectKeyRelease(MyGUI::KeyCode::Enum(arg.key));
- return true;
- }
- bool GUIEngine::mouseMoved(const OIS::MouseEvent &arg)
- {
- MyGUI::InputManager::getInstance().injectMouseMove(arg.state.X.abs, arg.state.Y.abs, arg.state.Z.abs);
- return true;
- }
- bool GUIEngine::mousePressed(const OIS::MouseEvent &arg, OIS::MouseButtonID id)
- {
- MyGUI::InputManager::getInstance().injectMousePress(arg.state.X.abs, arg.state.Y.abs, MyGUI::MouseButton::Enum(id));
- return true;
- }
- bool GUIEngine::mouseReleased(const OIS::MouseEvent &arg, OIS::MouseButtonID id)
- {
- MyGUI::InputManager::getInstance().injectMouseRelease(arg.state.X.abs, arg.state.Y.abs, MyGUI::MouseButton::Enum(id));
- return true;
- }
- void GUIEngine::windowMovedOrResized(int left, int top, unsigned int width, unsigned int height)
- {
- if(m_menuButton != 0)
- m_menuButton->setPosition(width - 200, height - 40);
- }
- bool GUIEngine::getIfHasEventKeyboardFocus()
- {
- return m_hasEventKeyboardFocus;
- }
- bool GUIEngine::getIfHasEventMouseFocus()
- {
- return m_hasEventMouseFocus;
- }
- void GUIEngine::showLoadingScreen(Ogre::Root* root)
- {
- std::string image = "loadingScreen.jpg";
- m_loadingScreenWidget = createImageArea(0, 0, m_platform->getRenderManagerPtr()->getViewSize().width, m_platform->getRenderManagerPtr()->getViewSize().height, image.c_str());
- root->renderOneFrame();
- }
- void GUIEngine::hideLoadingScreen()
- {
- deleteWidget(m_loadingScreenWidget);
- }
- MyGUI::Window* GUIEngine::createWindow(int posX, int posY, int dimX, int dimY, const char* text, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::Window* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::Window>("WindowC", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::Window>("WindowC", posX, posY, dimX, dimY, align, "Main");
- widget->setCaption(text);
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- MyGUI::Window* GUIEngine::createMovableWindow(int posX, int posY, int dimX, int dimY, const char* text, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::Window* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::Window>("WindowCSX", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::Window>("WindowCSX", posX, posY, dimX, dimY, align, "Main");
- widget->setCaption(text);
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- void buttonPressed(MyGUI::Widget* widget, int x, int y, MyGUI::MouseButton button)
- {
- (static_cast<MyGUI::Button*>(widget))->setStateSelected(true);
- }
- void buttonReleased(MyGUI::Widget* widget, int x, int y, MyGUI::MouseButton button)
- {
- (static_cast<MyGUI::Button*>(widget))->setStateSelected(false);
- }
- MyGUI::Button* GUIEngine::createButton(int posX, int posY, int dimX, int dimY, const char* text, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::Button* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::Button>("Button", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::Button>("Button", posX, posY, dimX, dimY, align, "Main");
- widget->setCaption(text);
- widget->eventMouseButtonPressed += MyGUI::newDelegate<MyGUI::Widget*, int, int, MyGUI::MouseButton>(&buttonPressed);
- widget->eventMouseButtonReleased += MyGUI::newDelegate<MyGUI::Widget*, int, int, MyGUI::MouseButton>(&buttonReleased);
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- MyGUI::EditBox* GUIEngine::createEditArea(int posX, int posY, int dimX, int dimY, MyGUI::Widget* parent, const char* text, MyGUI::Align align)
- {
- MyGUI::EditBox* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::EditBox>("EditBox", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::EditBox>("EditBox", posX, posY, dimX, dimY, align, "Main");
- widget->setCaption(text);
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- MyGUI::ListBox* GUIEngine::createList(int posX, int posY, int dimX, int dimY, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::ListBox* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::ListBox>("ListBox", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::ListBox>("ListBox", posX, posY, dimX, dimY, align, "Main");
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- MyGUI::MultiList* GUIEngine::createMultiList(int posX, int posY, int dimX, int dimY, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::MultiList* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::MultiList>("MultiList", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::MultiList>("MultiList", posX, posY, dimX, dimY, align, "Main");
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- MyGUI::Tab* GUIEngine::createTab(int posX, int posY, int dimX, int dimY, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::Tab* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::Tab>("TabControl", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::Tab>("TabControl", posX, posY, dimX, dimY, align, "Main");
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- MyGUI::ItemBox* GUIEngine::createItemBox(int posX, int posY, int dimX, int dimY, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::ItemBox* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::ItemBox>("ItemBox", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::ItemBox>("ItemBox", posX, posY, dimX, dimY, align, "Main");
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- void checkBoxPressed(MyGUI::Widget* widget, int x, int y, MyGUI::MouseButton button)
- {
- (static_cast<MyGUI::Button*>(widget))->setStateSelected(!(static_cast<MyGUI::Button*>(widget))->getStateSelected());
- }
- MyGUI::Button* GUIEngine::createCheckBox(int posX, int posY, int dimX, int dimY, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::Button* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::Button>("CheckBox", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::Button>("CheckBox", posX, posY, dimX, dimY, align, "Main");
- widget->eventMouseButtonPressed += MyGUI::newDelegate<MyGUI::Widget*, int, int, MyGUI::MouseButton>(&checkBoxPressed);
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- MyGUI::ComboBox* GUIEngine::createComboBox(int posX, int posY, int dimX, int dimY, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::ComboBox* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::ComboBox>("ComboBox", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::ComboBox>("ComboBox", posX, posY, dimX, dimY, align, "Main");
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- MyGUI::StaticText* GUIEngine::createTextArea(int posX, int posY, int dimX, int dimY, const char* text, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::EditBox* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::EditBox>("WordWrapEmpty", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::EditBox>("WordWrapEmpty", posX, posY, dimX, dimY, align, "Main");
- widget->setCaption(convertToUTF(text).c_str());
- widget->setEditStatic(true);
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- MyGUI::ImageBox* GUIEngine::createImageArea(int posX, int posY, int dimX, int dimY, const char* image, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::ImageBox* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::ImageBox>("ImageBox", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::ImageBox>("ImageBox", posX, posY, dimX, dimY, align, "Main");
- if(image != 0)
- widget->setImageTexture(image);
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- MyGUI::ScrollBar* GUIEngine::createHSlider(int posX, int posY, int dimX, int dimY, int max, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::ScrollBar* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::ScrollBar>("SliderH", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::ScrollBar>("SliderH", posX, posY, dimX, dimY, align, "Main");
- widget->setScrollRange(max);
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- MyGUI::Widget* GUIEngine::createSimpleWidget(int posX, int posY, int dimX, int dimY, MyGUI::Widget* parent, MyGUI::Align align)
- {
- MyGUI::ComboBox* widget;
- if(parent == 0)
- widget = m_gui->createWidget<MyGUI::ComboBox>("List", posX, posY, dimX, dimY, align, "Main");
- else
- widget = parent->createWidget<MyGUI::ComboBox>("List", posX, posY, dimX, dimY, align, "Main");
- widget->eventKeySetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetKeyboardFocus);
- widget->eventKeyLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostKeyboardFocus);
- widget->eventMouseSetFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetGetMouseFocus);
- widget->eventMouseLostFocus += MyGUI::newDelegate(this, &GUIEngine::aWidgetLostMouseFocus);
- return widget;
- }
- void GUIEngine::aWidgetGetKeyboardFocus(MyGUI::Widget* _sender, MyGUI::Widget* _new)
- {
- m_hasEventKeyboardFocus = true;
- }
- void GUIEngine::aWidgetLostKeyboardFocus(MyGUI::Widget* _sender, MyGUI::Widget* _new)
- {
- m_hasEventKeyboardFocus = false;
- }
- void GUIEngine::aWidgetGetMouseFocus(MyGUI::Widget* _sender, MyGUI::Widget* _new)
- {
- m_hasEventMouseFocus = true;
- }
- void GUIEngine::aWidgetLostMouseFocus(MyGUI::Widget* _sender, MyGUI::Widget* _new)
- {
- m_hasEventMouseFocus = false;
- }
- void GUIEngine::deleteWidget(MyGUI::Widget* widget)
- {
- m_gui->destroyWidget(widget);
- m_hasEventKeyboardFocus = false;
- m_hasEventMouseFocus = false;
- }
- void GUIEngine::createErrorMessage(const char* error, Ogre::Root* root, io::EventEngine* eventEngine)
- {
- MyGUI::Window* win = createWindow(50, 50, 300, 140, "An Error Was Occured");
- MyGUI::StaticText* text = createTextArea(10, 10, 280, 52, error, win);
- MyGUI::Button* button = createButton(10, 70, 280, 26, "Cancel", win);
- while(eventEngine->update())
- {
- Ogre::WindowEventUtilities::messagePump();
- if(m_window->isClosed() || button->getStateSelected() || eventEngine->isDown(io::E_FORM_ENTER))
- break;
- root->renderOneFrame();
- if(eventEngine->getTimeSinceLastFrame() < (1.0 / GLOBAL_ConfigEngine->m_FPS))
- sleep((1.0 / GLOBAL_ConfigEngine->m_FPS) - eventEngine->getTimeSinceLastFrame());
- }
- deleteWidget(text);
- deleteWidget(button);
- deleteWidget(win);
- }
- void GUIEngine::addMessageToChatBox(std::string message)
- {
- m_chatBox->addMessageToChatBox(message);
- }
- Magasin* GUIEngine::getMagasin()
- {
- return m_magasin;
- }
- QuestDialog* GUIEngine::getQuestDialog()
- {
- return m_questDialog;
- }
- TextDialog* GUIEngine::getTextDialog()
- {
- return m_textDialog;
- }
- ChoiceDialog* GUIEngine::getChoiceDialog()
- {
- return m_choiceDialog;
- }
- void GUIEngine::refreshInventaire()
- {
- if(m_inventaire == 0)
- return;
- if(m_inventaire->isOpen())
- {
- m_inventaire->clean();
- m_inventaire->init();
- }
- }
- void GUIEngine::refreshGroupDialog()
- {
- if(m_groupDialog == 0)
- return;
- if(m_groupDialog->isOpen())
- {
- m_groupDialog->clean();
- m_groupDialog->init();
- }
- }
- }