diff options
-rw-r--r-- | src/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/client.cpp | 105 | ||||
-rw-r--r-- | src/resources/dbmanager.cpp | 135 | ||||
-rw-r--r-- | src/resources/dbmanager.h | 30 |
5 files changed, 172 insertions, 102 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e91222219..7ca8b0dbd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -637,6 +637,8 @@ SET(SRCS resources/db/commandsdb.h resources/cursors.cpp resources/cursors.h + resources/dbmanager.cpp + resources/dbmanager.h resources/delayedmanager.cpp resources/delayedmanager.h resources/db/deaddb.cpp diff --git a/src/Makefile.am b/src/Makefile.am index 87c06296d..3c05b05bf 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -932,6 +932,8 @@ SRC = ${BASE_SRC} \ actions/windows.h \ client.cpp \ client.h \ + resources/dbmanager.cpp \ + resources/dbmanager.h \ resources/sprite/imagesprite.cpp \ resources/sprite/imagesprite.h \ resources/inventory/inventory.cpp \ diff --git a/src/client.cpp b/src/client.cpp index 4a82ee9ce..322315e50 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -102,38 +102,9 @@ #include "particle/particleengine.h" +#include "resources/dbmanager.h" #include "resources/imagehelper.h" -#include "resources/db/avatardb.h" -#include "resources/db/badgesdb.h" -#include "resources/db/chardb.h" -#include "resources/db/colordb.h" -#include "resources/db/deaddb.h" -#include "resources/db/elementaldb.h" -#include "resources/db/emotedb.h" -#include "resources/db/homunculusdb.h" -#include "resources/db/horsedb.h" -#include "resources/db/itemdb.h" -#include "resources/db/itemfielddb.h" -#include "resources/db/itemoptiondb.h" -#include "resources/db/languagedb.h" -#include "resources/db/sounddb.h" -#include "resources/db/mapdb.h" -#include "resources/db/mercenarydb.h" -#include "resources/db/moddb.h" -#include "resources/db/monsterdb.h" -#include "resources/db/networkdb.h" -#include "resources/db/npcdb.h" -#include "resources/db/npcdialogdb.h" -#include "resources/db/palettedb.h" -#include "resources/db/petdb.h" -#include "resources/db/skillunitdb.h" -#include "resources/db/statdb.h" -#include "resources/db/statuseffectdb.h" -#include "resources/db/textdb.h" -#include "resources/db/unitsdb.h" -#include "resources/db/weaponsdb.h" - #include "resources/dye/dyepalette.h" #include "resources/resourcemanager/resourcemanager.h" @@ -649,40 +620,7 @@ void Client::gameClear() windowContainer->slowLogic(); stopTimers(); - - // Unload XML databases - CharDB::unload(); - StatDb::unload(); - DeadDB::unload(); - ColorDB::unload(); - SoundDB::unload(); - LanguageDb::unload(); - TextDb::unload(); - EmoteDB::unload(); - ItemDB::unload(); - ItemOptionDb::unload(); - ItemFieldDb::unload(); - const ServerTypeT type = Net::getNetworkType(); - if (type == ServerType::EATHENA || - type == ServerType::EVOL2) - { - MercenaryDB::unload(); - HomunculusDB::unload(); - ElementalDb::unload(); - SkillUnitDb::unload(); - HorseDB::unload(); - NetworkDb::unload(); - } - MonsterDB::unload(); - NPCDB::unload(); - NpcDialogDB::unload(); - AvatarDB::unload(); - BadgesDB::unload(); - WeaponsDB::unload(); - PaletteDB::unload(); - PETDB::unload(); - StatusEffectDB::unload(); - ModDB::unload(); + DbManager::unloadDb(); if (loginHandler != nullptr) loginHandler->clearWorlds(); @@ -1385,44 +1323,7 @@ int Client::gameExec() spellShortcut = new SpellShortcut; AttributesEnum::init(); - // Load XML databases - CharDB::load(); - StatDb::load(); - DeadDB::load(); - PaletteDB::load(); - ColorDB::load(); - SoundDB::load(); - LanguageDb::load(); - TextDb::load(); - MapDB::load(); - ItemFieldDb::load(); - ItemOptionDb::load(); - ItemDB::load(); - Being::load(); - const ServerTypeT type = Net::getNetworkType(); - if (type == ServerType::EATHENA || - type == ServerType::EVOL2) - { - NetworkDb::load(); - if (loginHandler != nullptr) - loginHandler->updatePacketVersion(); - MercenaryDB::load(); - HomunculusDB::load(); - ElementalDb::load(); - SkillUnitDb::load(); - HorseDB::load(); - } - MonsterDB::load(); - AvatarDB::load(); - BadgesDB::load(); - WeaponsDB::load(); - UnitsDb::loadUnits(); - NPCDB::load(); - NpcDialogDB::load(); - PETDB::load(); - EmoteDB::load(); -// ModDB::load(); - StatusEffectDB::load(); + DbManager::loadDb(); EquipmentWindow::prepareSlotNames(); ActorSprite::load(); diff --git a/src/resources/dbmanager.cpp b/src/resources/dbmanager.cpp new file mode 100644 index 000000000..47a9deeee --- /dev/null +++ b/src/resources/dbmanager.cpp @@ -0,0 +1,135 @@ +/* + * The ManaPlus Client + * Copyright (C) 2017 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 <http://www.gnu.org/licenses/>. + */ + +#include "resources/dbmanager.h" + +#include "being/being.h" + +#include "net/loginhandler.h" +#include "net/net.h" + +#include "resources/db/avatardb.h" +#include "resources/db/badgesdb.h" +#include "resources/db/chardb.h" +#include "resources/db/colordb.h" +#include "resources/db/deaddb.h" +#include "resources/db/elementaldb.h" +#include "resources/db/emotedb.h" +#include "resources/db/homunculusdb.h" +#include "resources/db/horsedb.h" +#include "resources/db/itemdb.h" +#include "resources/db/itemfielddb.h" +#include "resources/db/itemoptiondb.h" +#include "resources/db/languagedb.h" +#include "resources/db/sounddb.h" +#include "resources/db/mapdb.h" +#include "resources/db/mercenarydb.h" +#include "resources/db/moddb.h" +#include "resources/db/monsterdb.h" +#include "resources/db/networkdb.h" +#include "resources/db/npcdb.h" +#include "resources/db/npcdialogdb.h" +#include "resources/db/palettedb.h" +#include "resources/db/petdb.h" +#include "resources/db/skillunitdb.h" +#include "resources/db/statdb.h" +#include "resources/db/statuseffectdb.h" +#include "resources/db/textdb.h" +#include "resources/db/unitsdb.h" +#include "resources/db/weaponsdb.h" + +#include "debug.h" + +void DbManager::loadDb() +{ + CharDB::load(); + StatDb::load(); + DeadDB::load(); + PaletteDB::load(); + ColorDB::load(); + SoundDB::load(); + LanguageDb::load(); + TextDb::load(); + MapDB::load(); + ItemFieldDb::load(); + ItemOptionDb::load(); + ItemDB::load(); + Being::load(); + const ServerTypeT type = Net::getNetworkType(); + if (type == ServerType::EATHENA || + type == ServerType::EVOL2) + { + NetworkDb::load(); + if (loginHandler != nullptr) + loginHandler->updatePacketVersion(); + MercenaryDB::load(); + HomunculusDB::load(); + ElementalDb::load(); + SkillUnitDb::load(); + HorseDB::load(); + } + MonsterDB::load(); + AvatarDB::load(); + BadgesDB::load(); + WeaponsDB::load(); + UnitsDb::loadUnits(); + NPCDB::load(); + NpcDialogDB::load(); + PETDB::load(); + EmoteDB::load(); +// ModDB::load(); + StatusEffectDB::load(); +} + +void DbManager::unloadDb() +{ + CharDB::unload(); + StatDb::unload(); + DeadDB::unload(); + ColorDB::unload(); + SoundDB::unload(); + LanguageDb::unload(); + TextDb::unload(); + EmoteDB::unload(); + ItemDB::unload(); + ItemOptionDb::unload(); + ItemFieldDb::unload(); + const ServerTypeT type = Net::getNetworkType(); + if (type == ServerType::EATHENA || + type == ServerType::EVOL2) + { + MercenaryDB::unload(); + HomunculusDB::unload(); + ElementalDb::unload(); + SkillUnitDb::unload(); + HorseDB::unload(); + NetworkDb::unload(); + } + MonsterDB::unload(); + NPCDB::unload(); + NpcDialogDB::unload(); + AvatarDB::unload(); + BadgesDB::unload(); + WeaponsDB::unload(); + PaletteDB::unload(); + PETDB::unload(); + StatusEffectDB::unload(); + ModDB::unload(); +} diff --git a/src/resources/dbmanager.h b/src/resources/dbmanager.h new file mode 100644 index 000000000..3aceacb0e --- /dev/null +++ b/src/resources/dbmanager.h @@ -0,0 +1,30 @@ +/* + * The ManaPlus Client + * Copyright (C) 2017 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 <http://www.gnu.org/licenses/>. + */ + +#ifndef RESOURCES_DBMANAGER_H +#define RESOURCES_DBMANAGER_H + +namespace DbManager +{ + void loadDb(); + void unloadDb(); +} + +#endif // RESOURCES_DBMANAGER_H |