summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game.cpp80
-rw-r--r--src/gui/widgets/createwidget.h4
2 files changed, 36 insertions, 48 deletions
diff --git a/src/game.cpp b/src/game.cpp
index 5ffc461f5..ca12252f6 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -88,6 +88,7 @@
#include "gui/widgets/tabs/chat/battletab.h"
+#include "gui/widgets/createwidget.h"
#include "gui/widgets/emoteshortcutcontainer.h"
#include "gui/widgets/itemshortcutcontainer.h"
#include "gui/widgets/spellshortcutcontainer.h"
@@ -181,42 +182,32 @@ static void createGuiWindows()
GameModifiers::init();
// Create dialogs
- emoteWindow = new EmoteWindow;
- emoteWindow->postInit();
- chatWindow = new ChatWindow;
- chatWindow->postInit();
- tradeWindow = new TradeWindow;
- tradeWindow->postInit();
- equipmentWindow = new EquipmentWindow(PlayerInfo::getEquipment(),
+ CREATEWIDGET1(emoteWindow, EmoteWindow);
+ CREATEWIDGET1(chatWindow, ChatWindow);
+ CREATEWIDGET1(tradeWindow, TradeWindow);
+ CREATEWIDGET(equipmentWindow, EquipmentWindow,
+ PlayerInfo::getEquipment(),
localPlayer);
- equipmentWindow->postInit();
- beingEquipmentWindow = new EquipmentWindow(nullptr, nullptr, true);
- beingEquipmentWindow->postInit();
+ CREATEWIDGET(beingEquipmentWindow, EquipmentWindow,
+ nullptr, nullptr, true);
beingEquipmentWindow->setVisible(Visible_false);
- statusWindow = new StatusWindow;
- statusWindow->postInit();
- miniStatusWindow = new MiniStatusWindow;
- miniStatusWindow->postInit();
- inventoryWindow = new InventoryWindow(PlayerInfo::getInventory());
- inventoryWindow->postInit();
+ CREATEWIDGET1(statusWindow, StatusWindow);
+ CREATEWIDGET1(miniStatusWindow, MiniStatusWindow);
+ CREATEWIDGET(inventoryWindow, InventoryWindow,
+ PlayerInfo::getInventory());
#ifdef EATHENA_SUPPORT
if (serverFeatures->haveCart())
{
- cartWindow = new InventoryWindow(PlayerInfo::getCartInventory());
- cartWindow->postInit();
+ CREATEWIDGET(cartWindow, InventoryWindow,
+ PlayerInfo::getCartInventory());
}
#endif
- shopWindow = new ShopWindow;
- shopWindow->postInit();
- skillDialog = new SkillDialog;
- skillDialog->postInit();
- minimap = new Minimap;
- minimap->postInit();
- debugWindow = new DebugWindow;
- debugWindow->postInit();
- itemShortcutWindow = new ShortcutWindow(
+ CREATEWIDGET1(shopWindow, ShopWindow);
+ CREATEWIDGET1(skillDialog, SkillDialog);
+ CREATEWIDGET1(minimap, Minimap);
+ CREATEWIDGET1(debugWindow, DebugWindow);
+ CREATEWIDGET(itemShortcutWindow, ShortcutWindow,
"ItemShortcut", "items.xml", 83, 460);
- itemShortcutWindow->postInit();
for (unsigned f = 0; f < SHORTCUT_TABS; f ++)
{
@@ -229,22 +220,20 @@ static void createGuiWindows()
didYouKnowWindow->loadData();
}
- emoteShortcutWindow = new ShortcutWindow("EmoteShortcut",
+ CREATEWIDGET(emoteShortcutWindow, ShortcutWindow,
+ "EmoteShortcut",
new EmoteShortcutContainer(nullptr),
"emotes.xml",
130, 480);
- emoteShortcutWindow->postInit();
- outfitWindow = new OutfitWindow();
- outfitWindow->postInit();
- dropShortcutWindow = new ShortcutWindow("DropShortcut",
+ CREATEWIDGET1(outfitWindow, OutfitWindow);
+ CREATEWIDGET(dropShortcutWindow, ShortcutWindow,
+ "DropShortcut",
new VirtShortcutContainer(nullptr, dropShortcut),
"drops.xml");
- dropShortcutWindow->postInit();
- spellShortcutWindow = new ShortcutWindow(
+ CREATEWIDGET(spellShortcutWindow, ShortcutWindow,
"SpellShortcut",
"spells.xml",
265, 328);
- spellShortcutWindow->postInit();
for (unsigned f = 0; f < SPELL_SHORTCUT_TABS; f ++)
{
spellShortcutWindow->addTab(toString(f + 1),
@@ -252,19 +241,13 @@ static void createGuiWindows()
}
#ifdef EATHENA_SUPPORT
- bankWindow = new BankWindow;
- bankWindow->postInit();
- mailWindow = new MailWindow;
- mailWindow->postInit();
+ CREATEWIDGET1(bankWindow, BankWindow);
+ CREATEWIDGET1(mailWindow, MailWindow);
#endif
- whoIsOnline = new WhoIsOnline;
- whoIsOnline->postInit();
- killStats = new KillStats;
- killStats->postInit();
- socialWindow = new SocialWindow;
- socialWindow->postInit();
- questsWindow = new QuestsWindow;
- questsWindow->postInit();
+ CREATEWIDGET1(whoIsOnline, WhoIsOnline);
+ CREATEWIDGET1(killStats, KillStats);
+ CREATEWIDGET1(socialWindow, SocialWindow);
+ CREATEWIDGET1(questsWindow, QuestsWindow);
// TRANSLATORS: chat tab header
localChatTab = new ChatTab(chatWindow, _("General"),
@@ -336,6 +319,7 @@ static void destroyGuiWindows()
if (guildManager)
guildManager->clear();
#endif
+
delete2(windowMenu);
delete2(localChatTab) // Need to do this first, so it can remove itself
delete2(debugChatTab)
diff --git a/src/gui/widgets/createwidget.h b/src/gui/widgets/createwidget.h
index 61f85e4c0..9c72b95f5 100644
--- a/src/gui/widgets/createwidget.h
+++ b/src/gui/widgets/createwidget.h
@@ -25,6 +25,10 @@
var = new type(__VA_ARGS__); \
var->postInit()
+#define CREATEWIDGET1(var, type) \
+ var = new type; \
+ var->postInit()
+
#define CREATEWIDGET2(type, ...) \
static_cast<type*>(Widget::callPostInit(new type(__VA_ARGS__)))