Skip to content

Commit

Permalink
make "reports" not a singleton object
Browse files Browse the repository at this point in the history
This is necessary to make game_events not a singleton.
  • Loading branch information
cbeck88 committed Dec 13, 2014
1 parent 2f783c7 commit 0459f8a
Show file tree
Hide file tree
Showing 17 changed files with 108 additions and 98 deletions.
7 changes: 4 additions & 3 deletions src/display.cpp
Expand Up @@ -148,7 +148,7 @@ void display::remove_single_overlay(const map_location& loc, const std::string&



display::display(const display_context * dc, CVideo& video, boost::weak_ptr<wb::manager> wb, const config& theme_cfg, const config& level) :
display::display(const display_context * dc, CVideo& video, boost::weak_ptr<wb::manager> wb, reports & reports_object, const config& theme_cfg, const config& level) :
dc_(dc),
halo_man_(new halo::manager(*this)),
wb_(wb),
Expand Down Expand Up @@ -176,6 +176,7 @@ display::display(const display_context * dc, CVideo& video, boost::weak_ptr<wb::
turbo_(false),
invalidateGameStatus_(true),
map_labels_(new map_labels(*this, 0)),
reports_object_(reports_object),
scroll_event_("scrolled"),
complete_redraw_event_("completely_redrawn"),
nextDraw_(0),
Expand Down Expand Up @@ -3083,7 +3084,7 @@ void display::refresh_report(std::string const &report_name, const config * new_

reports::context temp_context = reports::context(*dc_, *this, *resources::tod_manager, wb_.lock(), mhb);

const config generated_cfg = new_cfg ? config() : reports::generate_report(report_name, temp_context);
const config generated_cfg = new_cfg ? config() : reports_object_.generate_report(report_name, temp_context);
if ( new_cfg == NULL )
new_cfg = &generated_cfg;

Expand Down Expand Up @@ -3294,7 +3295,7 @@ void display::refresh_report(std::string const &report_name, const config * new_

reports::context temp_context = reports::context(*dc_, *this, *resources::tod_manager, wb_.lock(), mhb);

const config generated_cfg = new_cfg ? config() : reports::generate_report(report_name, temp_context);
const config generated_cfg = new_cfg ? config() : reports_object_.generate_report(report_name, temp_context);
if ( new_cfg == NULL )
new_cfg = &generated_cfg;

Expand Down
4 changes: 3 additions & 1 deletion src/display.hpp
Expand Up @@ -38,6 +38,7 @@ class fake_unit_manager;
class terrain_builder;
class map_labels;
class arrow;
class reports;

namespace halo {
class manager;
Expand Down Expand Up @@ -77,6 +78,7 @@ class display : public filter_context
{
public:
display(const display_context * dc, CVideo& video, boost::weak_ptr<wb::manager> wb,
reports & reports_object,
const config& theme_cfg, const config& level);
virtual ~display();
static display* get_singleton() { return singleton_ ;}
Expand Down Expand Up @@ -777,7 +779,7 @@ class display : public filter_context
bool turbo_;
bool invalidateGameStatus_;
boost::scoped_ptr<map_labels> map_labels_;

reports & reports_object_;

/** Event raised when the map is being scrolled */
mutable events::generic_event scroll_event_;
Expand Down
4 changes: 3 additions & 1 deletion src/editor/controller/editor_controller.cpp
Expand Up @@ -38,6 +38,7 @@

#include "dialogs.hpp"
#include "resources.hpp"
#include "reports.hpp"

#include "desktop/clipboard.hpp"
#include "../../game_preferences.hpp"
Expand All @@ -63,7 +64,8 @@ editor_controller::editor_controller(const config &game_config, CVideo& video)
: controller_base(SDL_GetTicks(), game_config, video)
, mouse_handler_base()
, active_menu_(editor::MAP)
, gui_(new editor_display(editor::get_dummy_display_context(), video, get_theme(game_config, "editor"), config()))
, reports_(new reports())
, gui_(new editor_display(editor::get_dummy_display_context(), video, *reports_, get_theme(game_config, "editor"), config()))
, tods_()
, context_manager_(new context_manager(*gui_.get(), game_config_))
, toolkit_(NULL)
Expand Down
2 changes: 2 additions & 0 deletions src/editor/controller/editor_controller.hpp
Expand Up @@ -215,6 +215,8 @@ class editor_controller : public controller_base,

editor::menu_type active_menu_;

/** Reports object. Must be initialized before the gui_ */
boost::scoped_ptr<reports> reports_;

/** The display object used and owned by the editor. */
boost::scoped_ptr<editor_display> gui_;
Expand Down
3 changes: 2 additions & 1 deletion src/editor/editor_display.cpp
Expand Up @@ -53,8 +53,9 @@ const display_context * get_dummy_display_context() {
// End dummy display context

editor_display::editor_display(const display_context * dc, CVideo& video,
reports & reports_object,
const config& theme_cfg, const config& level)
: display(dc, video, boost::shared_ptr<wb::manager>(), theme_cfg, level)
: display(dc, video, boost::shared_ptr<wb::manager>(), reports_object, theme_cfg, level)
, brush_locations_()
, palette_report_()
{
Expand Down
1 change: 1 addition & 0 deletions src/editor/editor_display.hpp
Expand Up @@ -26,6 +26,7 @@ class editor_display : public display
{
public:
editor_display(const display_context * dc, CVideo& video,
reports & reports_object,
const config& theme_cfg, const config& level);

bool in_editor() const { return true; }
Expand Down
8 changes: 5 additions & 3 deletions src/game_display.cpp
Expand Up @@ -68,9 +68,10 @@ std::vector<surface> footsteps_images(const map_location& loc, const pathfind::m
#endif

game_display::game_display(game_board& board, CVideo& video, boost::weak_ptr<wb::manager> wb,
reports & reports_object,
const tod_manager& tod,
const config& theme_cfg, const config& level) :
display(&board, video, wb, theme_cfg, level),
display(&board, video, wb, reports_object, theme_cfg, level),
overlay_map_(),
attack_indicator_src_(),
attack_indicator_dst_(),
Expand All @@ -93,7 +94,8 @@ game_display* game_display::create_dummy_display(CVideo& video)
static config dummy_cfg2;
static game_board dummy_board(boost::make_shared<terrain_type_data>(dummy_cfg), dummy_cfg2);
static tod_manager dummy_tod(dummy_cfg);
return new game_display(dummy_board, video, boost::shared_ptr<wb::manager>(), dummy_tod,
static reports rep_;
return new game_display(dummy_board, video, boost::shared_ptr<wb::manager>(), rep_, dummy_tod,
dummy_cfg, dummy_cfg);
}

Expand Down Expand Up @@ -470,7 +472,7 @@ void game_display::draw_sidebar()

// We display the unit the mouse is over if it is over a unit,
// otherwise we display the unit that is selected.
BOOST_FOREACH(const std::string &name, reports::report_list()) {
BOOST_FOREACH(const std::string &name, reports_object_.report_list()) {
refresh_report(name);
}
invalidateGameStatus_ = false;
Expand Down
1 change: 1 addition & 0 deletions src/game_display.hpp
Expand Up @@ -40,6 +40,7 @@ class game_display : public display
public:
game_display(game_board& board, CVideo& video,
boost::weak_ptr<wb::manager> wb,
reports & reports_object,
const tod_manager& tod_manager,
const config& theme_cfg,
const config& level);
Expand Down
1 change: 0 additions & 1 deletion src/game_events/handlers.cpp
Expand Up @@ -318,7 +318,6 @@ manager::~manager() {
clear_events();
event_handlers.clear();
hotkey::delete_all_wml_hotkeys();
reports::reset_generators();
unit_wml_ids.clear();
used_items.clear();
}
Expand Down
6 changes: 4 additions & 2 deletions src/play_controller.cpp
Expand Up @@ -42,6 +42,7 @@
#include "pathfind/teleport.hpp"
#include "preferences_display.hpp"
#include "replay.hpp"
#include "reports.hpp"
#include "resources.hpp"
#include "savegame.hpp"
#include "saved_game.hpp"
Expand Down Expand Up @@ -112,6 +113,7 @@ play_controller::play_controller(const config& level, saved_game& state_of_game,
saved_game_(state_of_game),
prefs_disp_manager_(),
tooltips_manager_(),
reports_(new reports()),
events_manager_(),
labels_manager_(),
help_manager_(&game_config),
Expand Down Expand Up @@ -213,7 +215,7 @@ void play_controller::init(CVideo& video){

LOG_NG << "building terrain rules... " << (SDL_GetTicks() - ticks_) << std::endl;
loadscreen::start_stage("build terrain");
gui_.reset(new game_display(gamestate_.board_, video, whiteboard_manager_, gamestate_.tod_manager_, theme_cfg, level_));
gui_.reset(new game_display(gamestate_.board_, video, whiteboard_manager_, *reports_, gamestate_.tod_manager_, theme_cfg, level_));
if (!gui_->video().faked()) {
if (saved_game_.mp_settings().mp_countdown)
gui_->get_theme().modify_label("time-icon", _ ("time left for current turn"));
Expand All @@ -233,7 +235,7 @@ void play_controller::init(CVideo& video){
// This *needs* to be created before the show_intro and show_map_scene
// as that functions use the manager state_of_game
// Has to be done before registering any events!
lua_kernel_.reset(new game_lua_kernel(level_, *gui_, gamestate_, *this));
lua_kernel_.reset(new game_lua_kernel(level_, *gui_, gamestate_, *this, *reports_));
resources::lua_kernel=lua_kernel_.get();
events_manager_.reset(new game_events::manager(level_));

Expand Down
1 change: 1 addition & 0 deletions src/play_controller.hpp
Expand Up @@ -237,6 +237,7 @@ class play_controller : public controller_base, public events::observer, public
boost::scoped_ptr<preferences::display_manager> prefs_disp_manager_;
boost::scoped_ptr<tooltips::manager> tooltips_manager_;
boost::scoped_ptr<game_lua_kernel> lua_kernel_;
boost::scoped_ptr<reports> reports_;
boost::scoped_ptr<game_events::manager> events_manager_;
font::floating_label_context labels_manager_;
help::help_manager help_manager_;
Expand Down
2 changes: 1 addition & 1 deletion src/replay_controller.cpp
Expand Up @@ -339,7 +339,7 @@ void replay_controller::reset_replay()
events_manager_.reset();
lua_kernel_.reset();
resources::lua_kernel=NULL;
lua_kernel_.reset(new game_lua_kernel(level_, *gui_, gamestate_, *this));
lua_kernel_.reset(new game_lua_kernel(level_, *gui_, gamestate_, *this, *reports_));
resources::lua_kernel=lua_kernel_.get();
events_manager_.reset(new game_events::manager(level_));

Expand Down

0 comments on commit 0459f8a

Please sign in to comment.