diff options
-rw-r--r-- | src/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/client.cpp | 333 | ||||
-rw-r--r-- | src/client.h | 14 | ||||
-rw-r--r-- | src/configmanager.cpp | 322 | ||||
-rw-r--r-- | src/configmanager.h | 45 |
6 files changed, 395 insertions, 323 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c617842c5..929a1042a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -735,6 +735,8 @@ SET(SRCS commandhandler.h commands.cpp commands.h + configmanager.cpp + configmanager.h being/compounditem.h being/compoundsprite.cpp being/compoundsprite.h diff --git a/src/Makefile.am b/src/Makefile.am index 6bb9951f9..0104db56a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -850,6 +850,8 @@ manaplus_SOURCES += gui/widgets/avatarlistbox.cpp \ commandhandler.h \ commands.cpp \ commands.h \ + configmanager.cpp \ + configmanager.h \ being/compounditem.h \ being/compoundsprite.cpp \ being/compoundsprite.h \ diff --git a/src/client.cpp b/src/client.cpp index 1d3051372..081fe3996 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -26,6 +26,7 @@ #include "auctionmanager.h" #include "chatlogger.h" +#include "configmanager.h" #include "configuration.h" #include "dirs.h" #include "dropshortcut.h" @@ -160,10 +161,6 @@ #include "debug.h" -#if defined __native_client__ -#define _nacl_dir std::string("/persistent/manaplus") -#endif - #ifdef ANDROID #ifdef USE_SDL2 int loadingProgressCounter = 1; @@ -184,10 +181,6 @@ unsigned int mLastHost = 0; unsigned long mSearchHash = 0; int textures_count = 0; -#ifdef WIN32 -extern "C" char const *_nl_locale_name_default(void); -#endif - namespace { class AccountListener final : public ActionListener @@ -285,8 +278,8 @@ void Client::gameInit() #ifdef USE_FUZZER Fuzzer::init(); #endif - backupConfig(); - initConfiguration(); + ConfigManager::backupConfig("config.xml"); + ConfigManager::initConfiguration(); paths.setDefaultValues(getPathsDefaults()); initFeatures(); logger->log("init 4"); @@ -295,7 +288,7 @@ void Client::gameInit() config.incValue("runcount"); #ifndef ANDROID - storeSafeParameters(); + ConfigManager::storeSafeParameters(); #endif const ResourceManager *const resman = ResourceManager::getInstance(); @@ -354,7 +347,7 @@ void Client::gameInit() #endif setIcon(); - checkConfigVersion(); + ConfigManager::checkConfigVersion(); logVars(); Cpu::detect(); #if defined(USE_OPENGL) @@ -859,7 +852,25 @@ int Client::gameExec() mOldState == STATE_CHOOSE_SERVER) { settings.serverName = mCurrentServer.hostname; - initServerConfig(mCurrentServer.hostname); + ConfigManager::initServerConfig(mCurrentServer.hostname); + initPacketLimiter(); + initTradeFilter(); + Dirs::initUsersDir(); + player_relations.init(); + + // Initialize the item and emote shortcuts. + for (unsigned f = 0; f < SHORTCUT_TABS; f ++) + { + delete itemShortcut[f]; + itemShortcut[f] = new ItemShortcut(f); + } + delete emoteShortcut; + emoteShortcut = new EmoteShortcut; + + // Initialize the drop shortcuts. + delete dropShortcut; + dropShortcut = new DropShortcut; + initFeatures(); PlayerInfo::loadData(); loginData.registerUrl = mCurrentServer.registerUrl; @@ -1699,258 +1710,12 @@ void Client::action(const ActionEvent &event) } } -/** - * Initializes the home directory. On UNIX and FreeBSD, ~/.mana is used. On - * Windows and other systems we use the current working directory. - */ -void Client::initServerConfig(const std::string &serverName) -{ - settings.serverConfigDir = settings.configDir + dirSeparator + serverName; - - if (mkdir_r(settings.serverConfigDir.c_str())) - { - // TRANSLATORS: directory creation error - logger->error(strprintf(_("%s doesn't exist and can't be created! " - "Exiting."), settings.serverConfigDir.c_str())); - } - const std::string configPath = settings.serverConfigDir + "/config.xml"; - FILE *configFile = fopen(configPath.c_str(), "r"); - if (!configFile) - { - configFile = fopen(configPath.c_str(), "wt"); - logger->log("Creating new server config: " + configPath); - } - if (configFile) - { - fclose(configFile); - serverConfig.init(configPath); - serverConfig.setDefaultValues(getConfigDefaults()); - logger->log("serverConfigPath: " + configPath); - } - initPacketLimiter(); - initTradeFilter(); - Dirs::initUsersDir(); - player_relations.init(); - - // Initialize the item and emote shortcuts. - for (unsigned f = 0; f < SHORTCUT_TABS; f ++) - { - delete itemShortcut[f]; - itemShortcut[f] = new ItemShortcut(f); - } - delete emoteShortcut; - emoteShortcut = new EmoteShortcut; - - // Initialize the drop shortcuts. - delete dropShortcut; - dropShortcut = new DropShortcut; -} - void Client::initFeatures() { features.init(paths.getStringValue("featuresFile"), true); features.setDefaultValues(getFeaturesDefaults()); } -void Client::initConfiguration() const -{ -#ifdef DEBUG_CONFIG - config.setIsMain(true); -#endif - - // Fill configuration with defaults - config.setValue("hwaccel", false); -#ifdef USE_OPENGL -#if (defined __APPLE__) - config.setValue("opengl", static_cast<int>(RENDER_NORMAL_OPENGL)); -#elif (defined ANDROID) - config.setValue("opengl", static_cast<int>(RENDER_GLES_OPENGL)); -#elif (defined WIN32) - config.setValue("opengl", static_cast<int>(RENDER_SAFE_OPENGL)); -#else - config.setValue("opengl", static_cast<int>(RENDER_SOFTWARE)); -#endif -#else - config.setValue("opengl", static_cast<int>(RENDER_SOFTWARE)); -#endif - config.setValue("screen", false); - config.setValue("sound", true); - config.setValue("guialpha", 0.8F); -// config.setValue("remember", true); - config.setValue("sfxVolume", 100); - config.setValue("musicVolume", 60); - config.setValue("fpslimit", 60); - std::string defaultUpdateHost = branding.getValue("defaultUpdateHost", ""); - if (!checkPath(defaultUpdateHost)) - defaultUpdateHost.clear(); - config.setValue("updatehost", defaultUpdateHost); - config.setValue("useScreenshotDirectorySuffix", true); - config.setValue("ChatLogLength", 128); - - std::string configPath; - - if (settings.options.test.empty()) - configPath = settings.configDir + "/config.xml"; - else - configPath = settings.configDir + "/test.xml"; - - FILE *configFile = fopen(configPath.c_str(), "r"); - if (!configFile) - { - configFile = fopen(configPath.c_str(), "wt"); - logger->log1("Creating new config"); - } - if (!configFile) - { - logger->log("Can't create %s. Using defaults.", configPath.c_str()); - } - else - { - fclose(configFile); - config.init(configPath); - logger->log1("init 3"); - config.setDefaultValues(getConfigDefaults()); - logger->log("configPath: " + configPath); - } -} - -void Client::backupConfig() const -{ - const std::string confName = settings.configDir + "/config.xml.bak"; - const int maxFileIndex = 5; - ::remove((confName + toString(maxFileIndex)).c_str()); - for (int f = maxFileIndex; f > 1; f --) - { - const std::string fileName1 = confName + toString(f - 1); - const std::string fileName2 = confName + toString(f); - Files::renameFile(fileName1, fileName2); - } - const std::string fileName3 = settings.configDir + "/config.xml"; - const std::string fileName4 = confName + toString(1); - Files::copyFile(fileName3, fileName4); -} - -#ifndef ANDROID -void Client::storeSafeParameters() const -{ - bool tmpHwaccel; - RenderType tmpOpengl; - int tmpFpslimit; - int tmpAltFpslimit; - bool tmpSound; - int width; - int height; - std::string font; - std::string bFont; - std::string particleFont; - std::string helpFont; - std::string secureFont; - std::string npcFont; - std::string japanFont; - std::string chinaFont; - bool showBackground; - bool enableMumble; - bool enableMapReduce; - - isSafeMode = config.getBoolValue("safemode"); - if (isSafeMode) - logger->log1("Run in safe mode"); - - tmpOpengl = intToRenderType(config.getIntValue("opengl")); - - width = config.getIntValue("screenwidth"); - height = config.getIntValue("screenheight"); - tmpHwaccel = config.getBoolValue("hwaccel"); - - tmpFpslimit = config.getIntValue("fpslimit"); - tmpAltFpslimit = config.getIntValue("altfpslimit"); - tmpSound = config.getBoolValue("sound"); - - font = config.getStringValue("font"); - bFont = config.getStringValue("boldFont"); - particleFont = config.getStringValue("particleFont"); - helpFont = config.getStringValue("helpFont"); - secureFont = config.getStringValue("secureFont"); - npcFont = config.getStringValue("npcFont"); - japanFont = config.getStringValue("japanFont"); - chinaFont = config.getStringValue("chinaFont"); - - showBackground = config.getBoolValue("showBackground"); - enableMumble = config.getBoolValue("enableMumble"); - enableMapReduce = config.getBoolValue("enableMapReduce"); - - if (!settings.options.safeMode && !tmpOpengl) - { - // if video mode configured reset most settings to safe - config.setValue("hwaccel", false); - config.setValue("altfpslimit", 3); - config.setValue("sound", false); - config.setValue("safemode", true); - config.setValue("screenwidth", 640); - config.setValue("screenheight", 480); - config.setValue("font", "fonts/dejavusans.ttf"); - config.setValue("boldFont", "fonts/dejavusans-bold.ttf"); - config.setValue("particleFont", "fonts/dejavusans.ttf"); - config.setValue("helpFont", "fonts/dejavusansmono.ttf"); - config.setValue("secureFont", "fonts/dejavusansmono.ttf"); - config.setValue("npcFont", "fonts/dejavusans.ttf"); - config.setValue("japanFont", "fonts/mplus-1p-regular.ttf"); - config.setValue("chinaFont", "fonts/wqy-microhei.ttf"); - config.setValue("showBackground", false); - config.setValue("enableMumble", false); - config.setValue("enableMapReduce", false); - } - else - { - // if video mode not configured reset only video mode to safe - config.setValue("screenwidth", 640); - config.setValue("screenheight", 480); - } -#if defined(__APPLE__) - config.setValue("opengl", static_cast<int>(RENDER_NORMAL_OPENGL)); -#else - config.setValue("opengl", static_cast<int>(RENDER_SOFTWARE)); -#endif - - config.write(); - - if (settings.options.safeMode) - { - isSafeMode = true; - return; - } - - config.setValue("safemode", false); - if (!tmpOpengl) - { - config.setValue("hwaccel", tmpHwaccel); - config.setValue("opengl", static_cast<int>(tmpOpengl)); - config.setValue("fpslimit", tmpFpslimit); - config.setValue("altfpslimit", tmpAltFpslimit); - config.setValue("sound", tmpSound); - config.setValue("screenwidth", width); - config.setValue("screenheight", height); - config.setValue("font", font); - config.setValue("boldFont", bFont); - config.setValue("particleFont", particleFont); - config.setValue("helpFont", helpFont); - config.setValue("secureFont", secureFont); - config.setValue("npcFont", npcFont); - config.setValue("japanFont", japanFont); - config.setValue("chinaFont", chinaFont); - config.setValue("showBackground", showBackground); - config.setValue("enableMumble", enableMumble); - config.setValue("enableMapReduce", enableMapReduce); - } - else - { - config.setValue("opengl", static_cast<int>(tmpOpengl)); - config.setValue("screenwidth", width); - config.setValue("screenheight", height); - } -} -#endif - void Client::initTradeFilter() const { const std::string tradeListName = @@ -2383,56 +2148,6 @@ void Client::windowRemoved(const Window *const window) mCurrentDialog = nullptr; } -void Client::checkConfigVersion() -{ - const int version = config.getIntValue("cfgver"); - if (version < 1) - { - if (config.getIntValue("fontSize") == 11) - config.deleteKey("fontSize"); - if (config.getIntValue("npcfontSize") == 13) - config.deleteKey("npcfontSize"); - } - if (version < 2) - { - if (config.getIntValue("screenButtonsSize") == 1) - config.deleteKey("screenButtonsSize"); - if (config.getIntValue("screenJoystickSize") == 1) - config.deleteKey("screenJoystickSize"); - } - if (version < 3) - { - config.setValue("audioFrequency", 44100); -#ifdef ANDROID - config.setValue("customcursor", false); -#endif - } - if (version < 4) - { -#ifdef ANDROID - config.setValue("showDidYouKnow", false); -#endif - } - if (version < 5) - { - if (config.getIntValue("speech") == BeingSpeech::TEXT_OVERHEAD) - { - config.setValue("speech", static_cast<int>( - BeingSpeech::NO_NAME_IN_BUBBLE)); - } - } - if (version < 6) - config.setValue("blur", false); - - if (version < 7) - config.setValue("download-music", true); - - if (version < 8) - config.deleteKey("videodetected"); - - config.setValue("cfgver", 8); -} - void Client::setIcon() { std::string iconFile = branding.getValue("appIcon", "icons/manaplus"); diff --git a/src/client.h b/src/client.h index b83c069e4..28dc27e75 100644 --- a/src/client.h +++ b/src/client.h @@ -198,30 +198,16 @@ private: void initTitle(); - void initConfiguration() const; - - void initServerConfig(const std::string &serverName); - static void initFeatures(); -#ifndef ANDROID - void storeSafeParameters() const; -#endif - - void backupConfig() const; - void gameClear(); void testsClear(); static void logVars(); - static void checkConfigVersion(); - void setIcon(); - static Client *mInstance; - static void setEnv(const char *const name, const char *const value); #ifdef ANDROID diff --git a/src/configmanager.cpp b/src/configmanager.cpp new file mode 100644 index 000000000..745ef195a --- /dev/null +++ b/src/configmanager.cpp @@ -0,0 +1,322 @@ +/* + * 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 <http://www.gnu.org/licenses/>. + */ + +#include "configmanager.h" + +#include "client.h" +#include "configuration.h" +#include "logger.h" +#include "settings.h" + +#include "being/beingspeech.h" +#include "being/playerrelations.h" + +#include "utils/files.h" +#include "utils/gettext.h" +#include "utils/mkdir.h" +#include "utils/paths.h" +#include "utils/physfstools.h" + +#include "render/renderers.h" + +#include "debug.h" + +/** + * Initializes the home directory. On UNIX and FreeBSD, ~/.mana is used. On + * Windows and other systems we use the current working directory. + */ +void ConfigManager::initServerConfig(const std::string &serverName) +{ + settings.serverConfigDir = settings.configDir + dirSeparator + serverName; + + if (mkdir_r(settings.serverConfigDir.c_str())) + { + // TRANSLATORS: directory creation error + logger->error(strprintf(_("%s doesn't exist and can't be created! " + "Exiting."), settings.serverConfigDir.c_str())); + } + const std::string configPath = settings.serverConfigDir + "/config.xml"; + FILE *configFile = fopen(configPath.c_str(), "r"); + if (!configFile) + { + configFile = fopen(configPath.c_str(), "wt"); + logger->log("Creating new server config: " + configPath); + } + if (configFile) + { + fclose(configFile); + serverConfig.init(configPath); + serverConfig.setDefaultValues(getConfigDefaults()); + logger->log("serverConfigPath: " + configPath); + } +} + +void ConfigManager::initConfiguration() +{ +#ifdef DEBUG_CONFIG + config.setIsMain(true); +#endif + + // Fill configuration with defaults + config.setValue("hwaccel", false); +#ifdef USE_OPENGL +#if (defined __APPLE__) + config.setValue("opengl", static_cast<int>(RENDER_NORMAL_OPENGL)); +#elif (defined ANDROID) + config.setValue("opengl", static_cast<int>(RENDER_GLES_OPENGL)); +#elif (defined WIN32) + config.setValue("opengl", static_cast<int>(RENDER_SAFE_OPENGL)); +#else + config.setValue("opengl", static_cast<int>(RENDER_SOFTWARE)); +#endif +#else + config.setValue("opengl", static_cast<int>(RENDER_SOFTWARE)); +#endif + config.setValue("screen", false); + config.setValue("sound", true); + config.setValue("guialpha", 0.8F); +// config.setValue("remember", true); + config.setValue("sfxVolume", 100); + config.setValue("musicVolume", 60); + config.setValue("fpslimit", 60); + std::string defaultUpdateHost = branding.getValue("defaultUpdateHost", ""); + if (!checkPath(defaultUpdateHost)) + defaultUpdateHost.clear(); + config.setValue("updatehost", defaultUpdateHost); + config.setValue("useScreenshotDirectorySuffix", true); + config.setValue("ChatLogLength", 128); + + std::string configPath; + + if (settings.options.test.empty()) + configPath = settings.configDir + "/config.xml"; + else + configPath = settings.configDir + "/test.xml"; + + FILE *configFile = fopen(configPath.c_str(), "r"); + if (!configFile) + { + configFile = fopen(configPath.c_str(), "wt"); + logger->log1("Creating new config"); + } + if (!configFile) + { + logger->log("Can't create %s. Using defaults.", configPath.c_str()); + } + else + { + fclose(configFile); + config.init(configPath); + logger->log1("init 3"); + config.setDefaultValues(getConfigDefaults()); + logger->log("configPath: " + configPath); + } +} + +void ConfigManager::backupConfig(const std::string &name) +{ + const std::string confName = std::string(settings.configDir).append( + "/").append(name).append(".bak"); + const int maxFileIndex = 5; + ::remove((confName + toString(maxFileIndex)).c_str()); + for (int f = maxFileIndex; f > 1; f --) + { + const std::string fileName1 = confName + toString(f - 1); + const std::string fileName2 = confName + toString(f); + Files::renameFile(fileName1, fileName2); + } + const std::string fileName3 = std::string(settings.configDir).append( + "/").append(name); + const std::string fileName4 = confName + toString(1); + Files::copyFile(fileName3, fileName4); +} + +#ifndef ANDROID +void ConfigManager::storeSafeParameters() +{ + bool tmpHwaccel; + RenderType tmpOpengl; + int tmpFpslimit; + int tmpAltFpslimit; + bool tmpSound; + int width; + int height; + std::string font; + std::string bFont; + std::string particleFont; + std::string helpFont; + std::string secureFont; + std::string npcFont; + std::string japanFont; + std::string chinaFont; + bool showBackground; + bool enableMumble; + bool enableMapReduce; + + isSafeMode = config.getBoolValue("safemode"); + if (isSafeMode) + logger->log1("Run in safe mode"); + + tmpOpengl = intToRenderType(config.getIntValue("opengl")); + + width = config.getIntValue("screenwidth"); + height = config.getIntValue("screenheight"); + tmpHwaccel = config.getBoolValue("hwaccel"); + + tmpFpslimit = config.getIntValue("fpslimit"); + tmpAltFpslimit = config.getIntValue("altfpslimit"); + tmpSound = config.getBoolValue("sound"); + + font = config.getStringValue("font"); + bFont = config.getStringValue("boldFont"); + particleFont = config.getStringValue("particleFont"); + helpFont = config.getStringValue("helpFont"); + secureFont = config.getStringValue("secureFont"); + npcFont = config.getStringValue("npcFont"); + japanFont = config.getStringValue("japanFont"); + chinaFont = config.getStringValue("chinaFont"); + + showBackground = config.getBoolValue("showBackground"); + enableMumble = config.getBoolValue("enableMumble"); + enableMapReduce = config.getBoolValue("enableMapReduce"); + + if (!settings.options.safeMode && !tmpOpengl) + { + // if video mode configured reset most settings to safe + config.setValue("hwaccel", false); + config.setValue("altfpslimit", 3); + config.setValue("sound", false); + config.setValue("safemode", true); + config.setValue("screenwidth", 640); + config.setValue("screenheight", 480); + config.setValue("font", "fonts/dejavusans.ttf"); + config.setValue("boldFont", "fonts/dejavusans-bold.ttf"); + config.setValue("particleFont", "fonts/dejavusans.ttf"); + config.setValue("helpFont", "fonts/dejavusansmono.ttf"); + config.setValue("secureFont", "fonts/dejavusansmono.ttf"); + config.setValue("npcFont", "fonts/dejavusans.ttf"); + config.setValue("japanFont", "fonts/mplus-1p-regular.ttf"); + config.setValue("chinaFont", "fonts/wqy-microhei.ttf"); + config.setValue("showBackground", false); + config.setValue("enableMumble", false); + config.setValue("enableMapReduce", false); + } + else + { + // if video mode not configured reset only video mode to safe + config.setValue("screenwidth", 640); + config.setValue("screenheight", 480); + } +#if defined(__APPLE__) + config.setValue("opengl", static_cast<int>(RENDER_NORMAL_OPENGL)); +#else + config.setValue("opengl", static_cast<int>(RENDER_SOFTWARE)); +#endif + + config.write(); + + if (settings.options.safeMode) + { + isSafeMode = true; + return; + } + + config.setValue("safemode", false); + if (!tmpOpengl) + { + config.setValue("hwaccel", tmpHwaccel); + config.setValue("opengl", static_cast<int>(tmpOpengl)); + config.setValue("fpslimit", tmpFpslimit); + config.setValue("altfpslimit", tmpAltFpslimit); + config.setValue("sound", tmpSound); + config.setValue("screenwidth", width); + config.setValue("screenheight", height); + config.setValue("font", font); + config.setValue("boldFont", bFont); + config.setValue("particleFont", particleFont); + config.setValue("helpFont", helpFont); + config.setValue("secureFont", secureFont); + config.setValue("npcFont", npcFont); + config.setValue("japanFont", japanFont); + config.setValue("chinaFont", chinaFont); + config.setValue("showBackground", showBackground); + config.setValue("enableMumble", enableMumble); + config.setValue("enableMapReduce", enableMapReduce); + } + else + { + config.setValue("opengl", static_cast<int>(tmpOpengl)); + config.setValue("screenwidth", width); + config.setValue("screenheight", height); + } +} +#endif + +void ConfigManager::checkConfigVersion() +{ + const int version = config.getIntValue("cfgver"); + if (version < 1) + { + if (config.getIntValue("fontSize") == 11) + config.deleteKey("fontSize"); + if (config.getIntValue("npcfontSize") == 13) + config.deleteKey("npcfontSize"); + } + if (version < 2) + { + if (config.getIntValue("screenButtonsSize") == 1) + config.deleteKey("screenButtonsSize"); + if (config.getIntValue("screenJoystickSize") == 1) + config.deleteKey("screenJoystickSize"); + } + if (version < 3) + { + config.setValue("audioFrequency", 44100); +#ifdef ANDROID + config.setValue("customcursor", false); +#endif + } + if (version < 4) + { +#ifdef ANDROID + config.setValue("showDidYouKnow", false); +#endif + } + if (version < 5) + { + if (config.getIntValue("speech") == BeingSpeech::TEXT_OVERHEAD) + { + config.setValue("speech", static_cast<int>( + BeingSpeech::NO_NAME_IN_BUBBLE)); + } + } + if (version < 6) + config.setValue("blur", false); + + if (version < 7) + config.setValue("download-music", true); + + if (version < 8) + config.deleteKey("videodetected"); + + config.setValue("cfgver", 8); +} diff --git a/src/configmanager.h b/src/configmanager.h new file mode 100644 index 000000000..87ed939a6 --- /dev/null +++ b/src/configmanager.h @@ -0,0 +1,45 @@ +/* + * 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 <http://www.gnu.org/licenses/>. + */ + +#ifndef CONFIGMANAGER_H +#define CONFIGMANAGER_H + +#include <string> + +#include "localconsts.h" + +class ConfigManager final +{ + public: + static void initConfiguration(); + + static void initServerConfig(const std::string &serverName); + +#ifndef ANDROID + static void storeSafeParameters(); +#endif + static void backupConfig(const std::string &name); + + static void checkConfigVersion(); +}; + +#endif // CONFIGMANAGER_H |