GCC Code Coverage Report
Directory: src/ Exec Total Coverage
File: src/net/eathena/generalhandler.cpp Lines: 1 124 0.8 %
Date: 2019-03-24 Branches: 0 184 0.0 %

Line Branch Exec Source
1
/*
2
 *  The ManaPlus Client
3
 *  Copyright (C) 2009  The Mana World Development Team
4
 *  Copyright (C) 2009-2010  The Mana Developers
5
 *  Copyright (C) 2011-2019  The ManaPlus Developers
6
 *
7
 *  This file is part of The ManaPlus Client.
8
 *
9
 *  This program is free software; you can redistribute it and/or modify
10
 *  it under the terms of the GNU General Public License as published by
11
 *  the Free Software Foundation; either version 2 of the License, or
12
 *  any later version.
13
 *
14
 *  This program is distributed in the hope that it will be useful,
15
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
 *  GNU General Public License for more details.
18
 *
19
 *  You should have received a copy of the GNU General Public License
20
 *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
 */
22
23
#include "net/eathena/generalhandler.h"
24
25
#include "client.h"
26
27
#include "gui/windows/skilldialog.h"
28
#include "gui/windows/socialwindow.h"
29
30
#include "gui/widgets/tabs/chat/clantab.h"
31
#include "gui/widgets/tabs/chat/guildtab.h"
32
#include "gui/widgets/tabs/chat/partytab.h"
33
34
#include "net/eathena/adminhandler.h"
35
#include "net/eathena/auctionhandler.h"
36
#include "net/eathena/achievementhandler.h"
37
#include "net/eathena/attendancehandler.h"
38
#include "net/eathena/bankhandler.h"
39
#include "net/eathena/barterhandler.h"
40
#include "net/eathena/battlegroundhandler.h"
41
#include "net/eathena/beinghandler.h"
42
#include "net/eathena/buyingstorehandler.h"
43
#include "net/eathena/buysellhandler.h"
44
#include "net/eathena/cashshophandler.h"
45
#include "net/eathena/chathandler.h"
46
#include "net/eathena/clanhandler.h"
47
#include "net/eathena/charserverhandler.h"
48
#include "net/eathena/elementalhandler.h"
49
#include "net/eathena/familyhandler.h"
50
#include "net/eathena/friendshandler.h"
51
#include "net/eathena/gamehandler.h"
52
#include "net/eathena/guildhandler.h"
53
#include "net/eathena/homunculushandler.h"
54
#include "net/eathena/inventoryhandler.h"
55
#include "net/eathena/itemhandler.h"
56
#include "net/eathena/loginhandler.h"
57
#include "net/eathena/maphandler.h"
58
#include "net/eathena/mail2handler.h"
59
#include "net/eathena/mailhandler.h"
60
#include "net/eathena/markethandler.h"
61
#include "net/eathena/mercenaryhandler.h"
62
#include "net/eathena/network.h"
63
#include "net/eathena/npchandler.h"
64
#include "net/eathena/partyhandler.h"
65
#include "net/eathena/pethandler.h"
66
#include "net/eathena/playerhandler.h"
67
#include "net/eathena/roulettehandler.h"
68
#include "net/eathena/searchstorehandler.h"
69
#include "net/eathena/serverfeatures.h"
70
#include "net/eathena/tradehandler.h"
71
#include "net/eathena/skillhandler.h"
72
#include "net/eathena/questhandler.h"
73
#include "net/eathena/vendinghandler.h"
74
75
#include "utils/delete2.h"
76
#include "utils/gettext.h"
77
78
#include "debug.h"
79
80
namespace EAthena
81
{
82
83
GeneralHandler::GeneralHandler() :
84
    mAdminHandler(new AdminHandler),
85
    mBeingHandler(new BeingHandler),
86
    mBuySellHandler(new BuySellHandler),
87
    mCharServerHandler(new CharServerHandler),
88
    mChatHandler(new ChatHandler),
89
    mClanHandler(new ClanHandler),
90
    mGameHandler(new GameHandler),
91
    mGuildHandler(new GuildHandler),
92
    mInventoryHandler(new InventoryHandler),
93
    mItemHandler(new ItemHandler),
94
    mLoginHandler(new LoginHandler),
95
    mNpcHandler(new NpcHandler),
96
    mPartyHandler(new PartyHandler),
97
    mPetHandler(new PetHandler),
98
    mPlayerHandler(new PlayerHandler),
99
    mSkillHandler(new SkillHandler),
100
    mTradeHandler(new TradeHandler),
101
    mQuestHandler(new QuestHandler),
102
    mServerFeatures(new ServerFeatures),
103
    mMail2Handler(new Mail2Handler),
104
    mMailHandler(new MailHandler),
105
    mAuctionHandler(new AuctionHandler),
106
    mAchievementHandler(new AchievementHandler),
107
    mAttendanceHandler(new AttendanceHandler),
108
    mCashShopHandler(new CashShopHandler),
109
    mFamilyHandler(new FamilyHandler),
110
    mBankHandler(new BankHandler),
111
    mBattleGroundHandler(new BattleGroundHandler),
112
    mMercenaryHandler(new MercenaryHandler),
113
    mBuyingStoreHandler(new BuyingStoreHandler),
114
    mHomunculusHandler(new HomunculusHandler),
115
    mFriendsHandler(new FriendsHandler),
116
    mElementalHandler(new ElementalHandler),
117
    mMapHandler(new MapHandler),
118
    mMarketHandler(new MarketHandler),
119
    mBarterHandler(new BarterHandler),
120
    mVendingHandler(new VendingHandler),
121
    mRouletteHandler(new RouletteHandler),
122
    mSearchStoreHandler(new SearchStoreHandler)
123
{
124
    generalHandler = this;
125
    logger->log("Creating eathena handler");
126
}
127
128
GeneralHandler::~GeneralHandler()
129
{
130
    delete2(Network::mInstance)
131
132
    delete2(mAdminHandler)
133
    delete2(mBeingHandler)
134
    delete2(mBuySellHandler)
135
    delete2(mCharServerHandler)
136
    delete2(mChatHandler)
137
    delete2(mClanHandler)
138
    delete2(mGameHandler)
139
    delete2(mGuildHandler)
140
    delete2(mInventoryHandler)
141
    delete2(mItemHandler)
142
    delete2(mLoginHandler)
143
    delete2(mNpcHandler)
144
    delete2(mPartyHandler)
145
    delete2(mPetHandler)
146
    delete2(mPlayerHandler)
147
    delete2(mSkillHandler)
148
    delete2(mTradeHandler)
149
    delete2(mQuestHandler)
150
    delete2(mServerFeatures)
151
    delete2(mMail2Handler)
152
    delete2(mMailHandler)
153
    delete2(mAuctionHandler)
154
    delete2(mAchievementHandler)
155
    delete2(mAttendanceHandler)
156
    delete2(mCashShopHandler)
157
    delete2(mFamilyHandler)
158
    delete2(mBankHandler)
159
    delete2(mBattleGroundHandler)
160
    delete2(mMercenaryHandler)
161
    delete2(mBuyingStoreHandler)
162
    delete2(mHomunculusHandler)
163
    delete2(mFriendsHandler)
164
    delete2(mElementalHandler)
165
    delete2(mMapHandler)
166
    delete2(mMarketHandler)
167
    delete2(mBarterHandler)
168
    delete2(mVendingHandler)
169
    delete2(mRouletteHandler)
170
    delete2(mSearchStoreHandler)
171
}
172
173
void GeneralHandler::load() const
174
{
175
    new Network;
176
    Network::mInstance->registerHandlers();
177
}
178
179
void GeneralHandler::reload() const
180
{
181
    if (Network::mInstance != nullptr)
182
        Network::mInstance->disconnect();
183
184
    static_cast<LoginHandler*>(mLoginHandler)->clearWorlds();
185
    const CharServerHandler *const charHandler =
186
        static_cast<CharServerHandler*>(mCharServerHandler);
187
    charHandler->setCharCreateDialog(nullptr);
188
    charHandler->setCharSelectDialog(nullptr);
189
    PartyHandler::reload();
190
}
191
192
void GeneralHandler::reloadPartially() const
193
{
194
    PartyHandler::reload();
195
}
196
197
void GeneralHandler::unload() const
198
{
199
    clearHandlers();
200
}
201
202
void GeneralHandler::flushSend() const
203
{
204
    if (Network::mInstance == nullptr)
205
        return;
206
207
    Network::mInstance->flush();
208
}
209
210
void GeneralHandler::flushNetwork() const
211
{
212
    if (Network::mInstance == nullptr)
213
        return;
214
215
    Network::mInstance->flush();
216
    Network::mInstance->dispatchMessages();
217
218
    if (Network::mInstance->getState() == Network::NET_ERROR)
219
    {
220
        if (!Network::mInstance->getError().empty())
221
        {
222
            errorMessage = Network::mInstance->getError();
223
        }
224
        else
225
        {
226
            // TRANSLATORS: error message
227
            errorMessage = _("Got disconnected from server!");
228
        }
229
230
        client->setState(State::ERROR);
231
    }
232
}
233
234
void GeneralHandler::clearHandlers() const
235
{
236
    if (Network::mInstance != nullptr)
237
        Network::mInstance->clearHandlers();
238
}
239
240
void GeneralHandler::gameStarted() const
241
{
242
    if (skillDialog != nullptr)
243
        skillDialog->loadSkills();
244
}
245
246
void GeneralHandler::gameEnded() const
247
{
248
    if (socialWindow != nullptr)
249
    {
250
        socialWindow->removeTab(taGuild);
251
        socialWindow->removeTab(Ea::taParty);
252
    }
253
254
    delete2(guildTab)
255
    delete2(partyTab)
256
    delete2(clanTab)
257
}
258
259
2
}  // namespace EAthena