From 33ef923235aeabd07308816bb07ef790cc6c1024 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 31 Jul 2014 23:20:54 +0300 Subject: Move popup related code from viewport into popupManager. --- src/gui/popupmanager.cpp | 315 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 src/gui/popupmanager.cpp (limited to 'src/gui/popupmanager.cpp') diff --git a/src/gui/popupmanager.cpp b/src/gui/popupmanager.cpp new file mode 100644 index 000000000..b5abb4f04 --- /dev/null +++ b/src/gui/popupmanager.cpp @@ -0,0 +1,315 @@ +/* + * The ManaPlus Client + * Copyright (C) 2004-2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011-2014 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "gui/popupmanager.h" + +#include "actormanager.h" +#include "configuration.h" +#include "game.h" +#include "settings.h" +#include "sdlshared.h" +#include "textmanager.h" + +#include "resources/mapitemtype.h" + +#include "resources/map/map.h" +#include "resources/map/mapitem.h" +#include "resources/map/maptype.h" +#include "resources/map/speciallayer.h" + +#include "being/localplayer.h" +#include "being/playerinfo.h" + +#include "input/inputmanager.h" + +#include "gui/gui.h" +#include "gui/viewport.h" + +#include "gui/fonts/font.h" + +#include "gui/popups/beingpopup.h" +#include "gui/popups/popupmenu.h" +#include "gui/popups/textpopup.h" + +#include "gui/windows/ministatuswindow.h" + +#include "utils/delete2.h" + +#include "debug.h" + +PopupManager *popupManager = nullptr; + +PopupManager::PopupManager() : + mPopupMenu(new PopupMenu), + mBeingPopup(new BeingPopup), + mTextPopup(new TextPopup) +{ + mBeingPopup->postInit(); + mPopupMenu->postInit(); + mTextPopup->postInit(); +} + +PopupManager::~PopupManager() +{ + delete2(mPopupMenu); + delete2(mBeingPopup); + delete2(mTextPopup); +} + +void PopupManager::showPopup(Window *const parent, + const int x, const int y, + Item *const item, + const bool isInventory) +{ + mPopupMenu->showPopup(parent, x, y, item, isInventory); +} + +void PopupManager::showPopup(MapItem *const item) +{ + mPopupMenu->showPopup(viewport->getMouseX(), viewport->getMouseY(), item); +} + +void PopupManager::showPopup(Window *const parent, + Item *const item, + const bool isInventory) +{ + mPopupMenu->showPopup(parent, viewport->getMouseX(), viewport->getMouseY(), + item, isInventory); +} + +void PopupManager::showPopup(const int x, const int y, + const std::vector &beings) +{ + mPopupMenu->showPopup(x, y, beings); +} + +void PopupManager::showPopup(const int x, const int y, + const FloorItem *const floorItem) +{ + mPopupMenu->showPopup(x, y, floorItem); +} + +void PopupManager::showPopup(const int x, const int y, MapItem *const mapItem) +{ + mPopupMenu->showPopup(x, y, mapItem); +} + +void PopupManager::showItemPopup(Item *const item) +{ + mPopupMenu->showItemPopup(viewport->getMouseX(), viewport->getMouseY(), + item); +} + +void PopupManager::showItemPopup(const int itemId, + const unsigned char color) +{ + mPopupMenu->showItemPopup(viewport->getMouseX(), viewport->getMouseY(), + itemId, color); +} + +void PopupManager::showDropPopup(Item *const item) +{ + mPopupMenu->showDropPopup(viewport->getMouseX(), viewport->getMouseY(), + item); +} + +void PopupManager::showOutfitsPopup(const int x, const int y) +{ + mPopupMenu->showOutfitsPopup(x, y); +} + +void PopupManager::showOutfitsPopup() +{ + mPopupMenu->showOutfitsPopup(viewport->getMouseX(), viewport->getMouseY()); +} + +void PopupManager::showSpellPopup(TextCommand *const cmd) +{ + mPopupMenu->showSpellPopup(viewport->getMouseX(), viewport->getMouseY(), + cmd); +} + +void PopupManager::showChatPopup(const int x, const int y, + ChatTab *const tab) +{ + mPopupMenu->showChatPopup(x, y, tab); +} + +void PopupManager::showChatPopup(ChatTab *const tab) +{ + mPopupMenu->showChatPopup(viewport->getMouseX(), viewport->getMouseY(), + tab); +} + +void PopupManager::showPopup(const int x, const int y, + const Being *const being) +{ + mPopupMenu->showPopup(x, y, being); +} + +void PopupManager::showPopup(const Being *const being) +{ + mPopupMenu->showPopup(viewport->getMouseX(), viewport->getMouseY(), being); +} + +void PopupManager::showPlayerPopup(const std::string &nick) +{ + mPopupMenu->showPlayerPopup(viewport->getMouseX(), viewport->getMouseY(), + nick); +} + +void PopupManager::showPopup(const int x, const int y, + Button *const button) +{ + mPopupMenu->showPopup(x, y, button); +} + +void PopupManager::showPopup(const int x, const int y, + const ProgressBar *const bar) +{ + mPopupMenu->showPopup(x, y, bar); +} + +void PopupManager::showAttackMonsterPopup(const std::string &name, + const int type) +{ + mPopupMenu->showAttackMonsterPopup(viewport->getMouseX(), + viewport->getMouseY(), + name, + type); +} + +void PopupManager::showPickupItemPopup(const std::string &name) +{ + mPopupMenu->showPickupItemPopup(viewport->getMouseX(), viewport->getMouseY(), + name); +} + +void PopupManager::showUndressPopup(const int x, const int y, + const Being *const being, + Item *const item) +{ + mPopupMenu->showUndressPopup(x, y, being, item); +} + +void PopupManager::showMapPopup(const int x, const int y) +{ + mPopupMenu->showMapPopup(viewport->getMouseX(), viewport->getMouseY(), + x, y); +} + +void PopupManager::showMapPopup(const int x1, const int y1, + const int x2, const int y2) +{ + mPopupMenu->showMapPopup(x1, y1, x2, y2); +} + +void PopupManager::showTextFieldPopup(TextField *const input) +{ + mPopupMenu->showTextFieldPopup(viewport->getMouseX(), + viewport->getMouseY(), + input); +} + +void PopupManager::showLinkPopup(const std::string &link) +{ + mPopupMenu->showLinkPopup(viewport->getMouseX(), + viewport->getMouseY(), + link); +} + +void PopupManager::showWindowsPopup() +{ + mPopupMenu->showWindowsPopup(viewport->getMouseX(), viewport->getMouseY()); +} + +void PopupManager::showNpcDialogPopup(const int npcId) +{ + mPopupMenu->showNpcDialogPopup(npcId, + viewport->getMouseX(), + viewport->getMouseY()); +} + +void PopupManager::showWindowPopup(Window *const window) +{ + mPopupMenu->showWindowPopup(window, viewport->getMouseX(), + viewport->getMouseY()); +} + +void PopupManager::closePopupMenu() +{ + if (mPopupMenu) + mPopupMenu->handleLink("cancel", nullptr); +} + +void PopupManager::hideBeingPopup() +{ + if (mBeingPopup) + mBeingPopup->setVisible(false); +} + +void PopupManager::hideTextPopup() +{ + if (mTextPopup) + mTextPopup->setVisible(false); +} + +void PopupManager::hidePopupMenu() +{ + if (mPopupMenu) + mPopupMenu->setVisible(false); +} + +bool PopupManager::isPopupMenuVisible() const +{ + return mPopupMenu ? mPopupMenu->isPopupVisible() : false; +} + +void PopupManager::clearPopup() +{ + if (mPopupMenu) + mPopupMenu->clear(); +} + +void PopupManager::showBeingPopup(const int x, const int y, + Being *const b) +{ + if (mBeingPopup) + mBeingPopup->show(x, y, b); +} + +void PopupManager::showTextPopup(const int x, const int y, + const std::string &text) +{ + if (mTextPopup) + mTextPopup->show(x, y, text); +} + +bool PopupManager::isTextPopupVisible() const +{ + return mTextPopup ? mTextPopup->isPopupVisible() : false; +} + +bool PopupManager::isBeingPopupVisible() const +{ + return mBeingPopup ? mBeingPopup->isPopupVisible() : false; +} -- cgit v1.2.3-60-g2f50