Skip to content

Commit

Permalink
move halo::manager from play_controller to display
Browse files Browse the repository at this point in the history
Also this removes the need to have it in the editor.
  • Loading branch information
cbeck88 committed Jun 27, 2014
1 parent 1010fbe commit b0e407a
Show file tree
Hide file tree
Showing 10 changed files with 34 additions and 33 deletions.
21 changes: 16 additions & 5 deletions src/display.cpp
Expand Up @@ -100,8 +100,8 @@ void display::parse_team_overlays()

void display::add_overlay(const map_location& loc, const std::string& img, const std::string& halo,const std::string& team_name, bool visible_under_fog)
{
if (resources::halo) {
const halo::handle halo_handle = resources::halo->add(get_location_x(loc) + hex_size() / 2,
if (halo_man_) {
const halo::handle halo_handle = halo_man_->add(get_location_x(loc) + hex_size() / 2,
get_location_y(loc) + hex_size() / 2, halo, loc);

const overlay item(img, halo, halo_handle, team_name, visible_under_fog);
Expand All @@ -112,11 +112,11 @@ void display::add_overlay(const map_location& loc, const std::string& img, const
void display::remove_overlay(const map_location& loc)
{
/* This code no longer needed because of RAII in halo::handles
if (resources::halo) {
if (halo_man_) {
typedef overlay_map::const_iterator Itor;
std::pair<Itor,Itor> itors = overlays_->equal_range(loc);
while(itors.first != itors.second) {
resources::halo->remove(itors.first->second.halo_handle);
halo_man_->remove(itors.first->second.halo_handle);
++itors.first;
}
}
Expand All @@ -136,7 +136,7 @@ void display::remove_single_overlay(const map_location& loc, const std::string&
if(itors.first->second.image == toDelete || itors.first->second.halo == toDelete) {
iteratorCopy = itors.first;
++itors.first;
//Not needed because of RAII -->resources::halo->remove(iteratorCopy->second.halo_handle);
//Not needed because of RAII --> halo_man_->remove(iteratorCopy->second.halo_handle);
overlays_->erase(iteratorCopy);
}
else {
Expand All @@ -150,6 +150,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) :
dc_(dc),
halo_man_(new halo::manager(*this)),
wb_(wb),
exclusive_unit_draw_requests_(),
screen_(video),
Expand Down Expand Up @@ -584,6 +585,16 @@ void display::change_display_context(const display_context * dc)
builder_->change_map(&dc_->map()); //TODO: Should display_context own and initalize the builder object?
}

void display::reset_halo_manager()
{
halo_man_.reset(new halo::manager(*this));
}

void display::reset_halo_manager(halo::manager & halo_man)
{
halo_man_.reset(&halo_man);
}

void display::blindfold(bool value)
{
if(value == true)
Expand Down
10 changes: 9 additions & 1 deletion src/display.hpp
Expand Up @@ -39,6 +39,10 @@ class terrain_builder;
class map_labels;
class arrow;

namespace halo {
class manager;
}

namespace wb {
class manager;
}
Expand Down Expand Up @@ -168,9 +172,12 @@ class display
void reload_map();

void change_display_context(const display_context * dc);

const display_context & get_disp_context() const { return *dc_; }

void reset_halo_manager();
void reset_halo_manager(halo::manager & hm);
halo::manager & get_halo_manager() { return *halo_man_; }

static Uint32 rgb(Uint8 red, Uint8 green, Uint8 blue)
{ return 0xFF000000 | (red << 16) | (green << 8) | blue; }
static Uint8 red(Uint32 color)
Expand Down Expand Up @@ -641,6 +648,7 @@ class display
protected:
//TODO sort
const display_context * dc_;
boost::scoped_ptr<halo::manager> halo_man_;
boost::weak_ptr<wb::manager> wb_;

typedef std::map<map_location, std::string> exclusive_unit_draw_requests_t;
Expand Down
9 changes: 6 additions & 3 deletions src/editor/editor_controller.cpp
Expand Up @@ -70,7 +70,6 @@ editor_controller::editor_controller(const config &game_config, CVideo& video)
, prefs_disp_manager_(NULL)
, tooltip_manager_(video)
, floating_label_manager_(NULL)
, halo_manager_(NULL)
, help_manager_(NULL)
, do_quit_(false)
, quit_mode_(EXIT_ERROR)
Expand Down Expand Up @@ -99,8 +98,12 @@ void editor_controller::init_gui()
floating_label_manager_.reset(new font::floating_label_context());
gui().set_draw_coordinates(preferences::editor::draw_hex_coordinates());
gui().set_draw_terrain_codes(preferences::editor::draw_terrain_codes());
halo_manager_.reset(new halo::manager(*gui_));
resources::halo = halo_manager_.get();
// halo_manager_.reset(new halo::manager(*gui_));
// resources::halo = halo_manager_.get();
// ^ These lines no longer necessary, the gui owns its halo manager.
// TODO: Should the editor map contexts actually own the halo manager and swap them in and out from the gui?
// Note that if that is what happens it might not actually be a good idea for the gui to own the halo manager, so that it can be swapped out
// without deleting it.
}

void editor_controller::init_tods(const config& game_config)
Expand Down
5 changes: 0 additions & 5 deletions src/editor/editor_controller.hpp
Expand Up @@ -43,10 +43,6 @@ namespace preferences {
struct display_manager;
} // namespace preferences

namespace halo {
class manager;
} // namespace halo

namespace editor {

class editor_map;
Expand Down Expand Up @@ -235,7 +231,6 @@ class editor_controller : public controller_base,
tooltips::manager tooltip_manager_;
boost::scoped_ptr<font::floating_label_context> floating_label_manager_;

boost::scoped_ptr<halo::manager> halo_manager_;
boost::scoped_ptr<help::help_manager> help_manager_;

/** Quit main loop flag */
Expand Down
8 changes: 2 additions & 6 deletions src/game_display.cpp
Expand Up @@ -252,9 +252,7 @@ void game_display::post_draw() {

void game_display::draw_invalidated()
{
if (resources::halo) {
resources::halo->unrender(invalidated_);
}
halo_man_->unrender(invalidated_);
display::draw_invalidated();

unit_drawer drawer = unit_drawer(*this);
Expand All @@ -270,9 +268,7 @@ void game_display::draw_invalidated()

void game_display::post_commit()
{
if (resources::halo) {
resources::halo->render();
}
halo_man_->render();
}

void game_display::draw_hex(const map_location& loc)
Expand Down
4 changes: 0 additions & 4 deletions src/play_controller.cpp
Expand Up @@ -104,7 +104,6 @@ play_controller::play_controller(const config& level, saved_game& state_of_game,
prefs_disp_manager_(),
tooltips_manager_(),
events_manager_(),
halo_manager_(),
labels_manager_(),
help_manager_(&game_config),
mouse_handler_(NULL, gamestate_.board_),
Expand Down Expand Up @@ -271,9 +270,6 @@ void play_controller::init_managers(){
soundsources_manager_.reset(new soundsource::manager(*gui_));

resources::soundsources = soundsources_manager_.get();

halo_manager_.reset(new halo::manager(*gui_));
resources::halo = halo_manager_.get();
LOG_NG << "done initializing managers... " << (SDL_GetTicks() - ticks_) << std::endl;
}

Expand Down
5 changes: 0 additions & 5 deletions src/play_controller.hpp
Expand Up @@ -45,10 +45,6 @@ namespace game_events {
class wml_menu_item;
} // namespace game_events

namespace halo {
class manager;
} // namespace halo

namespace preferences {
struct display_manager;
}
Expand Down Expand Up @@ -228,7 +224,6 @@ 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_events::manager> events_manager_;
boost::scoped_ptr<halo::manager> halo_manager_;
font::floating_label_context labels_manager_;
help::help_manager help_manager_;

Expand Down
1 change: 0 additions & 1 deletion src/resources.cpp
Expand Up @@ -25,7 +25,6 @@ namespace resources
persist_manager *persist = NULL;
game_display *screen = NULL;
soundsource::manager *soundsources = NULL;
halo::manager *halo = NULL;
std::vector<team> *teams = NULL;
::tod_manager *tod_manager = NULL;
fake_unit_manager *fake_units = NULL;
Expand Down
1 change: 0 additions & 1 deletion src/resources.hpp
Expand Up @@ -54,7 +54,6 @@ namespace resources
extern game_display *screen;
extern const mp_game_settings *mp_settings;
extern soundsource::manager *soundsources;
extern halo::manager *halo;
extern std::vector<team> *teams;
extern fake_unit_manager *fake_units;
extern ::tod_manager *tod_manager;
Expand Down
3 changes: 1 addition & 2 deletions src/unit_drawer.cpp
Expand Up @@ -20,7 +20,6 @@
#include "halo.hpp"
#include "map.hpp"
#include "map_location.hpp"
#include "resources.hpp" //only for halo::manager
#include "sdl/utils.hpp"
#include "team.hpp"
#include "unit.hpp"
Expand All @@ -35,7 +34,7 @@ unit_drawer::unit_drawer(display & thedisp) :
dc(disp.get_disp_context()),
map(dc.map()),
teams(dc.teams()),
halo_man(*resources::halo),
halo_man(thedisp.get_halo_manager()),
viewing_team(disp.viewing_team()),
playing_team(disp.playing_team()),
viewing_team_ref(teams[viewing_team]),
Expand Down

0 comments on commit b0e407a

Please sign in to comment.