From 480facfc0a5f48f36a9c3778acea38cacc578b9f Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 2 Aug 2015 17:10:01 +0300 Subject: Move main function code into mainGui. --- src/CMakeLists.txt | 2 + src/Makefile.am | 2 + src/main.cpp | 111 +------------------------------------------- src/maingui.cpp | 134 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/maingui.h | 30 ++++++++++++ 5 files changed, 170 insertions(+), 109 deletions(-) create mode 100644 src/maingui.cpp create mode 100644 src/maingui.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1a2a82f4b..2d5be0bae 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -946,6 +946,8 @@ SET(SRCS logger.h main.cpp main.h + maingui.cpp + maingui.h enums/resources/map/blockmask.h enums/resources/map/blocktype.h resources/map/location.h diff --git a/src/Makefile.am b/src/Makefile.am index dd1a9a8d2..213cd23cd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1083,6 +1083,8 @@ manaplus_SOURCES += gui/widgets/avatarlistbox.cpp \ logger.h \ main.cpp \ main.h \ + maingui.cpp \ + maingui.h \ enums/resources/map/blockmask.h \ enums/resources/map/blocktype.h \ resources/map/location.h \ diff --git a/src/main.cpp b/src/main.cpp index 40d7bc676..de2b1a7a1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,51 +20,7 @@ * along with this program. If not, see . */ - -#include "main.h" - -#include "client.h" -#include "commandline.h" -#include "settings.h" - -#include "utils/delete2.h" -#ifdef ANDROID -#include "utils/mkdir.h" -#endif -#include "utils/physfscheckutils.h" -#include "utils/physfsrwops.h" -#include "utils/process.h" -#include "utils/xml.h" - -#ifdef UNITTESTS -#include -#endif - -#ifdef __MINGW32__ -#include -#endif - -#include -#include -#include - -#include -#include -#include - -#define SDL_IMAGE_COMPILEDVERSION \ - SDL_VERSIONNUM(SDL_IMAGE_MAJOR_VERSION, \ - SDL_IMAGE_MINOR_VERSION, SDL_IMAGE_PATCHLEVEL) - -#define SDL_IMAGE_VERSION_ATLEAST(X, Y, Z) \ - (SDL_IMAGE_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z)) - -#define SDL_MIXER_COMPILEDVERSION \ - SDL_VERSIONNUM(SDL_MIXER_MAJOR_VERSION, \ - SDL_MIXER_MINOR_VERSION, SDL_MIXER_PATCHLEVEL) - -#define SDL_MIXER_VERSION_ATLEAST(X, Y, Z) \ - (SDL_MIXER_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z)) +#include "maingui.h" #ifdef UNITTESTS #define CATCH_CONFIG_MAIN @@ -72,72 +28,9 @@ #endif #include "debug.h" -char *selfName = nullptr; - -#ifdef WIN32 -extern "C" char const *_nl_locale_name_default(void); -#endif - #ifndef UNITTESTS -// main for normal game usage int main(int argc, char *argv[]) { -#if defined(__MINGW32__) - // load mingw crash handler. Won't fail if dll is not present. - // may load libray from current dir, it may not same as program dir - LoadLibrary("exchndl.dll"); -#endif - - selfName = argv[0]; - - parseOptions(argc, argv); - - std::ios::sync_with_stdio(false); - -#ifdef ANDROID - mkdir_r(getSdStoragePath().c_str()); -#endif - - PhysFs::init(argv[0]); - XML::initXML(); -#if SDL_IMAGE_VERSION_ATLEAST(1, 2, 11) - IMG_Init(IMG_INIT_PNG); -#endif -#if SDL_MIXER_VERSION_ATLEAST(1, 2, 11) - Mix_Init(MIX_INIT_OGG); -#endif - -#ifdef WIN32 - SetCurrentDirectory(PhysFs::getBaseDir()); -#endif - setPriority(true); - client = new Client; - int ret = 0; - if (!settings.options.testMode) - { - client->gameInit(); - ret = client->gameExec(); - } - else - { - client->testsInit(); - ret = client->testsExec(); - } - delete2(client); - -#if SDL_MIXER_VERSION_ATLEAST(1, 2, 11) - Mix_Quit(); -#endif -#if SDL_IMAGE_VERSION_ATLEAST(1, 2, 11) - IMG_Quit(); -#endif - -#ifdef DUMP_LEAKED_RESOURCES - reportRWops(); -#endif -#ifdef DEBUG_PHYSFS - reportPhysfsLeaks(); -#endif - return ret; + return mainGui(argc, argv); } #endif diff --git a/src/maingui.cpp b/src/maingui.cpp new file mode 100644 index 000000000..aa91c0439 --- /dev/null +++ b/src/maingui.cpp @@ -0,0 +1,134 @@ +/* + * The ManaPlus Client + * Copyright (C) 2004-2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011-2015 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 "main.h" + +#include "client.h" +#include "commandline.h" +#include "settings.h" + +#include "utils/delete2.h" +#ifdef ANDROID +#include "utils/mkdir.h" +#endif +#include "utils/physfscheckutils.h" +#include "utils/physfsrwops.h" +#include "utils/process.h" +#include "utils/xml.h" + +#ifdef UNITTESTS +#include +#endif + +#ifdef __MINGW32__ +#include +#endif + +#include +#include +#include + +#include +#include +#include + +#define SDL_IMAGE_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_IMAGE_MAJOR_VERSION, \ + SDL_IMAGE_MINOR_VERSION, SDL_IMAGE_PATCHLEVEL) + +#define SDL_IMAGE_VERSION_ATLEAST(X, Y, Z) \ + (SDL_IMAGE_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z)) + +#define SDL_MIXER_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MIXER_MAJOR_VERSION, \ + SDL_MIXER_MINOR_VERSION, SDL_MIXER_PATCHLEVEL) + +#define SDL_MIXER_VERSION_ATLEAST(X, Y, Z) \ + (SDL_MIXER_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z)) + +#include "debug.h" + +char *selfName = nullptr; + +#ifndef UNITTESTS +int mainGui(int argc, char *argv[]) +{ +#if defined(__MINGW32__) + // load mingw crash handler. Won't fail if dll is not present. + // may load libray from current dir, it may not same as program dir + LoadLibrary("exchndl.dll"); +#endif + + selfName = argv[0]; + + parseOptions(argc, argv); + + std::ios::sync_with_stdio(false); + +#ifdef ANDROID + mkdir_r(getSdStoragePath().c_str()); +#endif + + PhysFs::init(argv[0]); + XML::initXML(); +#if SDL_IMAGE_VERSION_ATLEAST(1, 2, 11) + IMG_Init(IMG_INIT_PNG); +#endif +#if SDL_MIXER_VERSION_ATLEAST(1, 2, 11) + Mix_Init(MIX_INIT_OGG); +#endif + +#ifdef WIN32 + SetCurrentDirectory(PhysFs::getBaseDir()); +#endif + setPriority(true); + client = new Client; + int ret = 0; + if (!settings.options.testMode) + { + client->gameInit(); + ret = client->gameExec(); + } + else + { + client->testsInit(); + ret = client->testsExec(); + } + delete2(client); + +#if SDL_MIXER_VERSION_ATLEAST(1, 2, 11) + Mix_Quit(); +#endif +#if SDL_IMAGE_VERSION_ATLEAST(1, 2, 11) + IMG_Quit(); +#endif + +#ifdef DUMP_LEAKED_RESOURCES + reportRWops(); +#endif +#ifdef DEBUG_PHYSFS + reportPhysfsLeaks(); +#endif + return ret; +} +#endif diff --git a/src/maingui.h b/src/maingui.h new file mode 100644 index 000000000..810ce97f3 --- /dev/null +++ b/src/maingui.h @@ -0,0 +1,30 @@ +/* + * The ManaPlus Client + * Copyright (C) 2004-2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011-2015 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 . + */ + +#ifndef MAINGUI_H +#define MAINGUI_H + +#include "localconsts.h" + +int mainGui(int argc, char *argv[]); + +#endif // MAINGUI_H -- cgit v1.2.3-60-g2f50