Moved UI object from display to play_controller
Design change from 075a9bac34
.
After discussion with @celticminstrel, we decided it better for the controller to
own the UI object as well as the display object, instead of the display owning the UI.
I've added a pure virtual function declaration to controller_base to ensure all controllers
implement this.
This commit is contained in:
parent
a5344ae52a
commit
3254bb2c7d
7 changed files with 33 additions and 31 deletions
|
@ -109,6 +109,9 @@ protected:
|
|||
/** Get a reference to a display member a derived class uses. */
|
||||
virtual display& get_display() = 0;
|
||||
|
||||
/** Creates and displays the HUD UI that accompanies this controller. */
|
||||
virtual void initialize_and_show_ui() = 0;
|
||||
|
||||
/** Get (optionally) a soundsources manager a derived class uses. */
|
||||
virtual soundsource::manager* get_soundsource_man()
|
||||
{
|
||||
|
|
|
@ -79,19 +79,9 @@ class manager;
|
|||
|
||||
class gamemap;
|
||||
|
||||
namespace gui2
|
||||
{
|
||||
namespace dialogs
|
||||
{
|
||||
class ingame_ui_base;
|
||||
}
|
||||
}
|
||||
|
||||
class display : public events::sdl_handler
|
||||
{
|
||||
public:
|
||||
using ui_t = gui2::dialogs::ingame_ui_base;
|
||||
|
||||
display(const display_context* dc,
|
||||
std::weak_ptr<wb::manager> wb,
|
||||
reports& reports_object,
|
||||
|
@ -871,12 +861,6 @@ protected:
|
|||
/** Draws the minimap. */
|
||||
void draw_minimap();
|
||||
|
||||
public:
|
||||
|
||||
virtual void initialize_ui()
|
||||
{
|
||||
}
|
||||
|
||||
private:
|
||||
enum TERRAIN_TYPE { FOREGROUND, BACKGROUND };
|
||||
|
||||
|
@ -1003,8 +987,6 @@ protected:
|
|||
|
||||
CVideo& video_;
|
||||
|
||||
std::unique_ptr<ui_t> ui_;
|
||||
|
||||
std::size_t currentTeam_;
|
||||
bool dont_show_all_; // const team *viewpoint_;
|
||||
int xpos_, ypos_;
|
||||
|
|
|
@ -178,6 +178,11 @@ class editor_controller : public controller_base,
|
|||
mouse_handler_base& get_mouse_handler_base() override { return *this; }
|
||||
editor_display& get_display() override { return *gui_; }
|
||||
|
||||
virtual void initialize_and_show_ui() override
|
||||
{
|
||||
// TODO: IMPLEMENT
|
||||
}
|
||||
|
||||
/** Get the current mouse action */
|
||||
const mouse_action& get_mouse_action() const { return toolkit_->get_mouse_action(); }
|
||||
/** Get the current mouse action */
|
||||
|
|
|
@ -28,7 +28,6 @@
|
|||
#include "font/standard_colors.hpp"
|
||||
#include "game_board.hpp"
|
||||
#include "gettext.hpp"
|
||||
#include "gui/dialogs/game_ui.hpp"
|
||||
#include "halo.hpp"
|
||||
#include "log.hpp"
|
||||
#include "map/label.hpp"
|
||||
|
@ -91,15 +90,6 @@ game_display::~game_display()
|
|||
}
|
||||
}
|
||||
|
||||
void game_display::initialize_ui()
|
||||
{
|
||||
// Set member in the base class
|
||||
ui_.reset(new gui2::dialogs::game_ui());
|
||||
assert(ui_);
|
||||
|
||||
ui_->show(true);
|
||||
}
|
||||
|
||||
void game_display::new_turn()
|
||||
{
|
||||
const time_of_day& tod = resources::tod_manager->get_time_of_day();
|
||||
|
|
|
@ -147,8 +147,6 @@ protected:
|
|||
virtual void draw_hex_overlays() override;
|
||||
|
||||
public:
|
||||
virtual void initialize_ui() override;
|
||||
|
||||
/** Set the attack direction indicator. */
|
||||
void set_attack_indicator(const map_location& src, const map_location& dst);
|
||||
void clear_attack_indicator();
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "game_events/pump.hpp"
|
||||
#include "game_state.hpp"
|
||||
#include "gettext.hpp"
|
||||
#include "gui/dialogs/game_ui.hpp"
|
||||
#include "gui/dialogs/loading_screen.hpp"
|
||||
#include "gui/dialogs/transient_message.hpp"
|
||||
#include "hotkey/command_executor.hpp"
|
||||
|
@ -148,6 +149,7 @@ play_controller::play_controller(const config& level,
|
|||
, soundsources_manager_()
|
||||
, persist_()
|
||||
, gui_()
|
||||
, ui_()
|
||||
, xp_mod_(new unit_experience_accelerator(level["experience_modifier"].to_int(100)))
|
||||
, statistics_context_(new statistics::scenario_context(level["name"]))
|
||||
, replay_(new replay(state_of_game.get_replay()))
|
||||
|
@ -295,7 +297,17 @@ void play_controller::init(const config& level)
|
|||
|
||||
// Do this after the loadingscreen, so that ita happens in the main thread.
|
||||
gui_->join();
|
||||
gui_->initialize_ui();
|
||||
|
||||
initialize_and_show_ui();
|
||||
}
|
||||
|
||||
void play_controller::initialize_and_show_ui()
|
||||
{
|
||||
// Set member in the base class
|
||||
ui_.reset(new gui2::dialogs::game_ui());
|
||||
assert(ui_);
|
||||
|
||||
ui_->show(true);
|
||||
}
|
||||
|
||||
void play_controller::reset_gamestate(const config& level, int replay_pos)
|
||||
|
|
|
@ -76,6 +76,14 @@ namespace wb
|
|||
class manager; // whiteboard manager
|
||||
} // namespace wb
|
||||
|
||||
namespace gui2
|
||||
{
|
||||
namespace dialogs
|
||||
{
|
||||
class game_ui;
|
||||
}
|
||||
}
|
||||
|
||||
// Holds gamestate related objects
|
||||
class game_state;
|
||||
|
||||
|
@ -333,6 +341,8 @@ public:
|
|||
|
||||
game_display& get_display() override;
|
||||
|
||||
virtual void initialize_and_show_ui() override;
|
||||
|
||||
void update_savegame_snapshot() const;
|
||||
/**
|
||||
* Changes the UI for this client to the passed side index.
|
||||
|
@ -422,6 +432,8 @@ protected:
|
|||
|
||||
// other objects
|
||||
std::unique_ptr<game_display> gui_;
|
||||
std::unique_ptr<gui2::dialogs::game_ui> ui_; // TODO: better name?
|
||||
|
||||
const std::unique_ptr<unit_experience_accelerator> xp_mod_;
|
||||
const std::unique_ptr<const statistics::scenario_context> statistics_context_;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue