From f60edbf6e08a7072f22d65fe8fd574726b6f6272 Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Thu, 11 Jul 2019 17:47:19 +1100 Subject: [PATCH] Bad const_cast. Shoo. --- src/display_context.cpp | 4 ---- src/display_context.hpp | 2 +- src/editor/map/map_context.hpp | 5 +++++ src/game_board.hpp | 5 +++++ src/game_state.cpp | 2 +- src/gui/dialogs/label_settings.cpp | 2 +- src/pathfind/teleport.cpp | 2 ++ 7 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/display_context.cpp b/src/display_context.cpp index 99482828373f..7c4f2da5afc1 100644 --- a/src/display_context.cpp +++ b/src/display_context.cpp @@ -20,10 +20,6 @@ #include "units/unit.hpp" #include "units/map.hpp" -std::vector& display_context::hidden_label_categories_ref() { - return const_cast&>(this->hidden_label_categories()); -} - const team& display_context::get_team(int side) const { return teams().at(side - 1); diff --git a/src/display_context.hpp b/src/display_context.hpp index d56ee8f73848..018b1d99cfc8 100644 --- a/src/display_context.hpp +++ b/src/display_context.hpp @@ -38,7 +38,7 @@ class display_context virtual const gamemap & map() const = 0; virtual const unit_map & units() const = 0; virtual const std::vector & hidden_label_categories() const = 0; - std::vector & hidden_label_categories_ref(); + virtual std::vector & hidden_label_categories() = 0; const team& get_team(int side) const; // this one is only a template function to prevent compilation erros when class team is an incomplete type. diff --git a/src/editor/map/map_context.hpp b/src/editor/map/map_context.hpp index 74dbecc8fe31..e071da5fd4c5 100644 --- a/src/editor/map/map_context.hpp +++ b/src/editor/map/map_context.hpp @@ -161,6 +161,11 @@ class map_context : public display_context return lbl_categories_; } + virtual std::vector& hidden_label_categories() override + { + return lbl_categories_; + } + /** * Replace the [time]s of the currently active area. */ diff --git a/src/game_board.hpp b/src/game_board.hpp index 3ac21be07f88..5e01a837bf21 100644 --- a/src/game_board.hpp +++ b/src/game_board.hpp @@ -126,6 +126,11 @@ class game_board : public display_context return labels_; } + virtual std::vector& hidden_label_categories() override + { + return labels_; + } + // Copy and swap idiom, because we have a scoped pointer. game_board(const game_board & other); diff --git a/src/game_state.cpp b/src/game_state.cpp index b39e11d137b6..e00ddea2c7ca 100644 --- a/src/game_state.cpp +++ b/src/game_state.cpp @@ -225,7 +225,7 @@ void game_state::init(const config& level, play_controller & pc) // Labels from players in your ignore list default to hidden if(preferences::is_ignored(board_.teams_[i].current_player())) { std::string label_cat = "side:" + std::to_string(i + 1); - board_.hidden_label_categories_ref().push_back(label_cat); + board_.hidden_label_categories().push_back(label_cat); } } } diff --git a/src/gui/dialogs/label_settings.cpp b/src/gui/dialogs/label_settings.cpp index 9a0e7097ec20..bb341b0925fa 100644 --- a/src/gui/dialogs/label_settings.cpp +++ b/src/gui/dialogs/label_settings.cpp @@ -117,7 +117,7 @@ bool label_settings::execute(display_context& dc) { hidden_categories.push_back(lbl.first); } } - dc.hidden_label_categories_ref().swap(hidden_categories); + dc.hidden_label_categories().swap(hidden_categories); return true; } diff --git a/src/pathfind/teleport.cpp b/src/pathfind/teleport.cpp index 7064587fb901..bad736161c0c 100644 --- a/src/pathfind/teleport.cpp +++ b/src/pathfind/teleport.cpp @@ -75,12 +75,14 @@ class ignore_units_display_context : public display_context { const gamemap & map() const override { return *gm_; } const std::vector & teams() const override { return *tm_; } const std::vector & hidden_label_categories() const override { return *lbls_; } + std::vector& hidden_label_categories() override { return lbls_dummy_; } private: const unit_map * um_; const gamemap * gm_; const std::vector * tm_; const std::vector * lbls_; + std::vector lbls_dummy_; }; class ignore_units_filter_context : public filter_context {