diff --git a/projectfiles/VC9/wesnoth.vcproj b/projectfiles/VC9/wesnoth.vcproj
index 0d97a3280e9..8410f4ed6ad 100644
--- a/projectfiles/VC9/wesnoth.vcproj
+++ b/projectfiles/VC9/wesnoth.vcproj
@@ -17790,22 +17790,6 @@
RelativePath="..\..\src\game_controller.hpp"
>
-
-
-
-
-
-
-
-
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6dabb2afb9f..1eebbb35276 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -686,8 +686,6 @@ set(wesnoth-main_SRC
formula_tokenizer.cpp
game_config_manager.cpp
game_controller.cpp
- game_controller_abstract.cpp
- game_controller_new.cpp
game_display.cpp
game_errors.cpp
game_events.cpp
diff --git a/src/SConscript b/src/SConscript
index e6025d15dd7..346e7c0a457 100644
--- a/src/SConscript
+++ b/src/SConscript
@@ -258,8 +258,6 @@ wesnoth_sources = Split("""
formula_tokenizer.cpp
game_config_manager.cpp
game_controller.cpp
- game_controller_abstract.cpp
- game_controller_new.cpp
game_display.cpp
game_errors.cpp
game_events.cpp
diff --git a/src/game.cpp b/src/game.cpp
index 7fdbac74841..eb129395da7 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -20,7 +20,6 @@
#include "commandline_options.hpp"
#include "game_config_manager.hpp"
#include "game_controller.hpp"
-#include "game_controller_new.hpp"
#include "gui/dialogs/title_screen.hpp"
#ifdef DEBUG_WINDOW_LAYOUT_GRAPHS
#include "gui/widgets/debug.hpp"
@@ -426,11 +425,8 @@ static int do_gameloop(int argc, char** argv)
//ensure recorder has an actually random seed instead of what it got during
//static initialization (before any srand() call)
recorder.set_seed(rand());
- boost::shared_ptr game;
- if (game_config::new_syntax)
- game = boost::shared_ptr(new game_controller_new(cmdline_opts));
- else
- game = boost::shared_ptr(new game_controller(cmdline_opts,argv[0]));
+ boost::scoped_ptr game(
+ new game_controller(cmdline_opts,argv[0]));
const int start_ticks = SDL_GetTicks();
init_locale();
@@ -579,7 +575,8 @@ static int do_gameloop(int argc, char** argv)
res = static_cast(dlg.get_retval());
}
- game_controller_abstract::RELOAD_GAME_DATA should_reload = game_controller_abstract::RELOAD_DATA;
+ game_controller::RELOAD_GAME_DATA should_reload =
+ game_controller::RELOAD_DATA;
if(res == gui2::ttitle_screen::QUIT_GAME) {
LOG_GENERAL << "quitting game...\n";
@@ -590,7 +587,7 @@ static int do_gameloop(int argc, char** argv)
res = gui2::ttitle_screen::NOTHING;
continue;
}
- should_reload = game_controller_abstract::NO_RELOAD_DATA;
+ should_reload = game_controller::NO_RELOAD_DATA;
} else if(res == gui2::ttitle_screen::TUTORIAL) {
game->set_tutorial();
} else if(res == gui2::ttitle_screen::NEW_CAMPAIGN) {
diff --git a/src/game_controller.cpp b/src/game_controller.cpp
index a9c77ee23ae..a77696a95cf 100644
--- a/src/game_controller.cpp
+++ b/src/game_controller.cpp
@@ -72,7 +72,9 @@ static bool less_campaigns_rank(const config &a, const config &b) {
}
game_controller::game_controller(const commandline_options& cmdline_opts, const char *appname) :
- game_controller_abstract(cmdline_opts),
+ cmdline_opts_(cmdline_opts),
+ disp_(NULL),
+ video_(),
thread_manager(),
font_manager_(),
prefs_manager_(),
@@ -274,6 +276,135 @@ game_controller::game_controller(const commandline_options& cmdline_opts, const
}
}
+game_display& game_controller::disp()
+{
+ if(disp_.get() == NULL) {
+ if(get_video_surface() == NULL) {
+ throw CVideo::error();
+ }
+ disp_.assign(game_display::create_dummy_display(video_));
+ }
+ return *disp_.get();
+}
+
+bool game_controller::init_joystick()
+{
+ if (!preferences::joystick_support_enabled())
+ return false;
+
+ if(SDL_WasInit(SDL_INIT_JOYSTICK) == 0)
+ if(SDL_InitSubSystem(SDL_INIT_JOYSTICK) == -1)
+ return false;
+
+ int joysticks = SDL_NumJoysticks();
+ if (joysticks == 0) return false;
+
+ SDL_JoystickEventState(SDL_ENABLE);
+
+ SDL_Joystick* joystick;
+
+ bool joystick_found = false;
+ for (int i = 0; i langs = get_languages();
+ BOOST_FOREACH(const language_def & def, langs) {
+ if(def.localename == *cmdline_opts_.language) {
+ locale = def;
+ break;
+ }
+ }
+ if(locale.localename.empty()) {
+ std::cerr << "Language symbol '" << *cmdline_opts_.language << "' not found.\n";
+ return false;
+ }
+ } else {
+ locale = get_locale();
+ }
+ ::set_language(locale);
+
+ if(!cmdline_opts_.nogui) {
+ std::string wm_title_string = _("The Battle for Wesnoth");
+ wm_title_string += " - " + game_config::revision;
+ SDL_WM_SetCaption(wm_title_string.c_str(), NULL);
+ }
+
+ return true;
+}
+
+bool game_controller::init_video()
+{
+ if(cmdline_opts_.nogui) {
+ if( !(cmdline_opts_.multiplayer || cmdline_opts_.screenshot) ) {
+ std::cerr << "--nogui flag is only valid with --multiplayer flag or --screenshot flag\n";
+ return false;
+ }
+ video_.make_fake();
+ game_config::no_delay = true;
+ return true;
+ }
+
+#if !(defined(__APPLE__))
+ surface icon(image::get_image("game-icon.png", image::UNSCALED));
+ if(icon != NULL) {
+ ///must be called after SDL_Init() and before setting video mode
+ SDL_WM_SetIcon(icon,NULL);
+ }
+#endif
+
+ std::pair resolution;
+ int bpp = 0;
+ int video_flags = 0;
+
+ bool found_matching = preferences::detect_video_settings(video_, resolution, bpp, video_flags);
+
+ if (cmdline_opts_.bpp) {
+ bpp = *cmdline_opts_.bpp;
+ } else if (cmdline_opts_.screenshot) {
+ bpp = 32;
+ }
+
+ if(!found_matching) {
+ std::cerr << "Video mode " << resolution.first << 'x'
+ << resolution.second << 'x' << bpp
+ << " is not supported.\n";
+
+ if ((video_flags & FULL_SCREEN)) {
+ std::cerr << "Try running the program with the --windowed option "
+ << "using a " << bpp << "bpp setting for your display adapter.\n";
+ } else {
+ std::cerr << "Try running the program with the --fullscreen option.\n";
+ }
+
+ return false;
+ }
+
+ std::cerr << "setting mode to " << resolution.first << "x" << resolution.second << "x" << bpp << "\n";
+ const int res = video_.setMode(resolution.first,resolution.second,bpp,video_flags);
+ video_.setBpp(bpp);
+ if(res == 0) {
+ std::cerr << "required video mode, " << resolution.first << "x"
+ << resolution.second << "x" << bpp << " is not supported\n";
+ return false;
+ }
+
+ return true;
+}
+
bool game_controller::play_test()
{
static bool first_time = true;
diff --git a/src/game_controller.hpp b/src/game_controller.hpp
index 1d271efc631..5e745626c66 100644
--- a/src/game_controller.hpp
+++ b/src/game_controller.hpp
@@ -14,9 +14,8 @@
#ifndef GAME_CONTROLLER_H_INCLUDED
#define GAME_CONTROLLER_H_INCLUDED
-#include "game_controller_abstract.hpp"
-
#include "commandline_options.hpp"
+#include "editor/editor_main.hpp"
#include "gamestatus.hpp"
#include "game_config_manager.hpp"
#include "game_display.hpp"
@@ -41,12 +40,18 @@ public:
std::string campaign_id_,scenario_id_;
};
-class game_controller : public game_controller_abstract
+class game_controller
{
public:
game_controller(const commandline_options& cmdline_opts, const char* appname);
~game_controller();
+ game_display& disp();
+
+ bool init_video();
+ bool init_language();
+ bool init_joystick();
+
bool play_test();
bool play_screenshot_mode();
@@ -69,6 +74,7 @@ public:
void show_preferences();
+ enum RELOAD_GAME_DATA { RELOAD_DATA, NO_RELOAD_DATA };
void launch_game(RELOAD_GAME_DATA reload=RELOAD_DATA);
void play_replay();
@@ -83,6 +89,10 @@ private:
editor::EXIT_STATUS start_editor(const std::string& filename);
+ const commandline_options& cmdline_opts_;
+ util::scoped_ptr disp_;
+ CVideo video_;
+
//this should get destroyed *after* the video, since we want
//to clean up threads after the display disappears.
const threading::manager thread_manager;
@@ -99,7 +109,6 @@ private:
std::string screenshot_map_, screenshot_filename_;
- /// Stateful class taking over scenario-switching capabilities from the current game_controller and playsingle_controller. Currently only available when --new-syntax command line option is enabled.
game_state state_;
std::string multiplayer_server_;
diff --git a/src/game_controller_abstract.cpp b/src/game_controller_abstract.cpp
deleted file mode 100644
index 49d30cfc7ec..00000000000
--- a/src/game_controller_abstract.cpp
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- Copyright (C) 2011 - 2013 by Lukasz Dobrogowski
- Part of the Battle for Wesnoth Project http://www.wesnoth.org/
-
- 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
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY.
-
- See the COPYING file for more details.
-*/
-
-#include "game_controller_abstract.hpp"
-
-#include "game_display.hpp"
-#include "gettext.hpp"
-#include "hotkeys.hpp"
-#include "language.hpp"
-#include "preferences_display.hpp"
-
-#include "preferences.hpp"
-
-#include
-
-#include
-
-game_controller_abstract::game_controller_abstract(const commandline_options &cmdline_opts) :
- cmdline_opts_(cmdline_opts),
- disp_(NULL),
- video_()
-{
-
-}
-
-game_display& game_controller_abstract::disp()
-{
- if(disp_.get() == NULL) {
- if(get_video_surface() == NULL) {
- throw CVideo::error();
- }
- disp_.assign(game_display::create_dummy_display(video_));
- }
- return *disp_.get();
-}
-
-bool game_controller_abstract::init_joystick()
-{
- if (!preferences::joystick_support_enabled())
- return false;
-
- if(SDL_WasInit(SDL_INIT_JOYSTICK) == 0)
- if(SDL_InitSubSystem(SDL_INIT_JOYSTICK) == -1)
- return false;
-
- int joysticks = SDL_NumJoysticks();
- if (joysticks == 0) return false;
-
- SDL_JoystickEventState(SDL_ENABLE);
-
- SDL_Joystick* joystick;
-
- bool joystick_found = false;
- for (int i = 0; i langs = get_languages();
- BOOST_FOREACH(const language_def & def, langs) {
- if(def.localename == *cmdline_opts_.language) {
- locale = def;
- break;
- }
- }
- if(locale.localename.empty()) {
- std::cerr << "Language symbol '" << *cmdline_opts_.language << "' not found.\n";
- return false;
- }
- } else {
- locale = get_locale();
- }
- ::set_language(locale);
-
- if(!cmdline_opts_.nogui) {
- std::string wm_title_string = _("The Battle for Wesnoth");
- wm_title_string += " - " + game_config::revision;
- SDL_WM_SetCaption(wm_title_string.c_str(), NULL);
- }
-
- return true;
-}
-
-bool game_controller_abstract::init_video()
-{
- if(cmdline_opts_.nogui) {
- if( !(cmdline_opts_.multiplayer || cmdline_opts_.screenshot) ) {
- std::cerr << "--nogui flag is only valid with --multiplayer flag or --screenshot flag\n";
- return false;
- }
- video_.make_fake();
- game_config::no_delay = true;
- return true;
- }
-
-#if !(defined(__APPLE__))
- surface icon(image::get_image("game-icon.png", image::UNSCALED));
- if(icon != NULL) {
- ///must be called after SDL_Init() and before setting video mode
- SDL_WM_SetIcon(icon,NULL);
- }
-#endif
-
- std::pair resolution;
- int bpp = 0;
- int video_flags = 0;
-
- bool found_matching = preferences::detect_video_settings(video_, resolution, bpp, video_flags);
-
- if (cmdline_opts_.bpp) {
- bpp = *cmdline_opts_.bpp;
- } else if (cmdline_opts_.screenshot) {
- bpp = 32;
- }
-
- if(!found_matching) {
- std::cerr << "Video mode " << resolution.first << 'x'
- << resolution.second << 'x' << bpp
- << " is not supported.\n";
-
- if ((video_flags & FULL_SCREEN)) {
- std::cerr << "Try running the program with the --windowed option "
- << "using a " << bpp << "bpp setting for your display adapter.\n";
- } else {
- std::cerr << "Try running the program with the --fullscreen option.\n";
- }
-
- return false;
- }
-
- std::cerr << "setting mode to " << resolution.first << "x" << resolution.second << "x" << bpp << "\n";
- const int res = video_.setMode(resolution.first,resolution.second,bpp,video_flags);
- video_.setBpp(bpp);
- if(res == 0) {
- std::cerr << "required video mode, " << resolution.first << "x"
- << resolution.second << "x" << bpp << " is not supported\n";
- return false;
- }
-
- return true;
-}
diff --git a/src/game_controller_abstract.hpp b/src/game_controller_abstract.hpp
deleted file mode 100644
index 2cabe9b0426..00000000000
--- a/src/game_controller_abstract.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- Copyright (C) 2011 - 2013 by Lukasz Dobrogowski
- Part of the Battle for Wesnoth Project http://www.wesnoth.org/
-
- 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
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY.
-
- See the COPYING file for more details.
-*/
-#ifndef GAME_CONTROLLER_ABSTRACT_H_INCLUDED
-#define GAME_CONTROLLER_ABSTRACT_H_INCLUDED
-#include "commandline_options.hpp"
-#include "editor/editor_main.hpp"
-#include "scoped_resource.hpp"
-#include "video.hpp"
-#include
-
-class config;
-class game_display;
-
-class game_controller_abstract
-{
-public:
- game_controller_abstract(const commandline_options &cmdline_opts);
- virtual ~game_controller_abstract() {}
-
- game_display& disp();
-
- bool init_video();
- bool init_language();
- bool init_joystick();
- virtual bool play_test() = 0;
- virtual bool play_screenshot_mode() = 0;
-
- virtual bool is_loading() const = 0;
- virtual void clear_loaded_game() = 0;
- virtual bool load_game() = 0;
- virtual void set_tutorial() = 0;
-
- virtual std::string jump_to_campaign_id() const = 0;
- virtual bool new_campaign() = 0;
- virtual bool goto_campaign() = 0;
- virtual bool goto_multiplayer() = 0;
- virtual bool goto_editor() = 0;
-
- virtual bool jump_to_editor() const = 0;
-
- virtual bool play_multiplayer() = 0;
- virtual bool play_multiplayer_commandline() = 0;
- virtual bool change_language() = 0;
-
- virtual void show_preferences() = 0;
-
- enum RELOAD_GAME_DATA { RELOAD_DATA, NO_RELOAD_DATA };
- virtual void launch_game(RELOAD_GAME_DATA) = 0;
- virtual void play_replay() = 0;
-
- virtual editor::EXIT_STATUS start_editor() = 0;
-protected:
- const commandline_options& cmdline_opts_;
-
- util::scoped_ptr disp_;
-
- CVideo video_;
-};
-#endif
diff --git a/src/game_controller_new.cpp b/src/game_controller_new.cpp
deleted file mode 100644
index c42a0783061..00000000000
--- a/src/game_controller_new.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- Copyright (C) 2011 - 2013 by Lukasz Dobrogowski
- Part of the Battle for Wesnoth Project http://www.wesnoth.org/
-
- 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
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY.
-
- See the COPYING file for more details.
-*/
-
-#include "game_controller_new.hpp"
-#include "game_display.hpp"
-
-#include
-
-game_controller_new::game_controller_new(const commandline_options& cmdline_opts) :
- game_controller_abstract(cmdline_opts),
- main_config_()
-{
-}
-
-game_controller_new::~game_controller_new()
-{
-
-}
-
-bool game_controller_new::init_config()
-{
- return true;
-}
-
-bool game_controller_new::play_test()
-{
- return true;
-}
-
-bool game_controller_new::play_screenshot_mode()
-{
- return true;
-}
-
-void game_controller_new::reload_changed_game_config()
-{
-
-}
-
-bool game_controller_new::is_loading() const
-{
- return true;
-}
-
-void game_controller_new::clear_loaded_game()
-{
-
-}
-
-bool game_controller_new::load_game()
-{
- return true;
-}
-
-void game_controller_new::set_tutorial()
-{
-
-}
-
-std::string game_controller_new::jump_to_campaign_id() const
-{
- return std::string();
-}
-
-bool game_controller_new::new_campaign()
-{
- return true;
-}
-
-bool game_controller_new::goto_campaign()
-{
- return true;
-}
-
-bool game_controller_new::goto_multiplayer()
-{
- return true;
-}
-
-bool game_controller_new::goto_editor()
-{
- return true;
-}
-
-bool game_controller_new::jump_to_editor() const
-{
- return true;
-}
-
-bool game_controller_new::play_multiplayer()
-{
- return true;
-}
-
-bool game_controller_new::play_multiplayer_commandline()
-{
- return true;
-}
-
-bool game_controller_new::change_language()
-{
- return true;
-}
-
-void game_controller_new::show_preferences()
-{
-
-}
-
-void game_controller_new::launch_game ( game_controller_abstract::RELOAD_GAME_DATA /*reload*/ )
-{
-
-}
-
-void game_controller_new::play_replay()
-{
-
-}
-
-editor::EXIT_STATUS game_controller_new::start_editor()
-{
- return editor::EXIT_NORMAL;
-}
-
-const config& game_controller_new::game_config() const
-{
- return main_config_;
-}
diff --git a/src/game_controller_new.hpp b/src/game_controller_new.hpp
deleted file mode 100644
index 3235939e9a8..00000000000
--- a/src/game_controller_new.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- Copyright (C) 2011 - 2013 by Lukasz Dobrogowski
- Part of the Battle for Wesnoth Project http://www.wesnoth.org/
-
- 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
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY.
-
- See the COPYING file for more details.
-*/
-
-#ifndef GAME_CONTROLLER_NEW_HPP_INCLUDED
-#define GAME_CONTROLLER_NEW_HPP_INCLUDED
-#include "game_controller_abstract.hpp"
-
-#include "config.hpp"
-
-class game_controller_new : public game_controller_abstract
-{
-public:
- game_controller_new(const commandline_options& cmdline_opts);
- ~game_controller_new();
-
- bool init_config();
- bool play_test();
- bool play_screenshot_mode();
-
- void reload_changed_game_config();
-
- bool is_loading() const;
- void clear_loaded_game();
- bool load_game();
- void set_tutorial();
-
- std::string jump_to_campaign_id() const;
- bool new_campaign();
- bool goto_campaign();
- bool goto_multiplayer();
- bool goto_editor();
-
- bool jump_to_editor() const;
-
- bool play_multiplayer();
- bool play_multiplayer_commandline();
- bool change_language();
-
- void show_preferences();
-
- void launch_game(RELOAD_GAME_DATA reload=RELOAD_DATA);
- void play_replay();
-
- editor::EXIT_STATUS start_editor();
-
- const config& game_config() const;
-
-private:
- config main_config_;
-
-};
-
-#endif