Skip to content

Commit

Permalink
team::objectives_changed and countdown ops become mutable
Browse files Browse the repository at this point in the history
This allows game_board to unfriend both playsingle_controller
and replay_controller, without adding new methods to game_board.

This partially reverts commit
15ed9d1,

"refactor replay_controller in order to unfriend game_board"
  • Loading branch information
cbeck88 committed Jun 11, 2014
1 parent 5b2bf83 commit f698bad
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 29 deletions.
6 changes: 0 additions & 6 deletions src/game_board.cpp
Expand Up @@ -83,12 +83,6 @@ void game_board::all_survivors_to_recall() {
}
}

void game_board::reset_all_teams_objectives_changes() {
BOOST_FOREACH(team & t, teams_) {
t.reset_objectives_changed();
}
}

unit_map::iterator game_board::find_visible_unit(const map_location &loc,
const team& current_team, bool see_all)
{
Expand Down
3 changes: 0 additions & 3 deletions src/game_board.hpp
Expand Up @@ -57,7 +57,6 @@ class game_board : public display_context {

//TODO: Remove these when we have refactored enough to make it possible.
friend class play_controller;
friend class playsingle_controller;
friend class events::mouse_handler;
friend class events::menu_handler;

Expand Down Expand Up @@ -109,8 +108,6 @@ class game_board : public display_context {

void all_survivors_to_recall();

void reset_all_teams_objectives_changes();

// Manipulator from playturn

void side_drop_to (int side_num, team::CONTROLLER ctrl);
Expand Down
26 changes: 13 additions & 13 deletions src/playsingle_controller.cpp
Expand Up @@ -157,7 +157,7 @@ void playsingle_controller::check_end_level()
{
if (level_result_ == NONE || linger_)
{
team &t = gameboard_.teams_[gui_->viewing_team()];
const team &t = gameboard_.teams()[gui_->viewing_team()];
if (!browse_ && t.objectives_changed()) {
dialogs::show_objectives(level_, t.objectives());
t.reset_objectives_changed();
Expand Down Expand Up @@ -393,7 +393,7 @@ possible_end_play_signal playsingle_controller::play_scenario_main_loop(end_leve

// Initialize countdown clock.
std::vector<team>::iterator t;
for(t = gameboard_.teams_.begin(); t != gameboard_.teams_.end(); ++t) {
for(t = gameboard_.teams().begin(); t != gameboard_.teams().end(); ++t) {
if (gamestate_.mp_settings().mp_countdown && !loading_game_ ){
t->set_countdown_time(1000 * gamestate_.mp_settings().mp_countdown_init_time);
}
Expand Down Expand Up @@ -493,7 +493,7 @@ LEVEL_RESULT playsingle_controller::play_scenario(
}
}

if (gameboard_.teams_.empty())
if (gameboard_.teams().empty())
{
//store persistent teams
gamestate_.snapshot = config();
Expand Down Expand Up @@ -628,7 +628,7 @@ possible_end_play_signal playsingle_controller::play_turn()
LOG_AIT << "Turn " << turn() << ":" << std::endl;
}

for (player_number_ = first_player_; player_number_ <= int(gameboard_.teams_.size()); ++player_number_)
for (player_number_ = first_player_; player_number_ <= int(gameboard_.teams().size()); ++player_number_)
{
// If a side is empty skip over it.
if (current_team().is_empty()) continue;
Expand Down Expand Up @@ -678,8 +678,8 @@ possible_end_play_signal playsingle_controller::play_turn()
}
//If the loop exits due to the last team having been processed,
//player_number_ will be 1 too high
if(player_number_ > static_cast<int>(gameboard_.teams_.size()))
player_number_ = gameboard_.teams_.size();
if(player_number_ > static_cast<int>(gameboard_.teams().size()))
player_number_ = gameboard_.teams().size();

finish_turn();

Expand Down Expand Up @@ -713,7 +713,7 @@ possible_end_play_signal playsingle_controller::play_side()
if (!skip_next_turn_)
end_turn_ = false;

statistics::reset_turn_stats(gameboard_.teams_[player_number_ - 1].save_id());
statistics::reset_turn_stats(gameboard_.teams()[player_number_ - 1].save_id());

if(current_team().is_human() || temporary_human) {
LOG_NG << "is human...\n";
Expand All @@ -738,7 +738,7 @@ possible_end_play_signal playsingle_controller::play_side()
player_type_changed_ = true;
// If new controller is not human,
// reset gui to prev human one
if (!gameboard_.teams_[player_number_-1].is_human()) {
if (!gameboard_.teams()[player_number_-1].is_human()) {
browse_ = true;
int s = find_human_team_before_current_player();
if (s <= 0)
Expand Down Expand Up @@ -796,7 +796,7 @@ possible_end_play_signal playsingle_controller::play_side()
player_type_changed_ = true;
// If new controller is not human,
// reset gui to prev human one
if (!gameboard_.teams_[player_number_-1].is_human()) {
if (!gameboard_.teams()[player_number_-1].is_human()) {
browse_ = true;
int s = find_human_team_before_current_player();
if (s <= 0)
Expand Down Expand Up @@ -842,7 +842,7 @@ void playsingle_controller::show_turn_dialog(){
resources::screen->redraw_everything();
std::string message = _("It is now $name|’s turn");
utils::string_map symbols;
symbols["name"] = gameboard_.teams_[player_number_ - 1].current_player();
symbols["name"] = gameboard_.teams()[player_number_ - 1].current_player();
message = utils::interpolate_variables_into_string(message, &symbols);
gui2::show_transient_message(gui_->video(), "", message);
}
Expand Down Expand Up @@ -1048,7 +1048,7 @@ bool playsingle_controller::can_execute_command(const hotkey::hotkey_command& cm

case hotkey::HOTKEY_WML:
//code mixed from play_controller::show_menu and code here
return (gui_->viewing_team() == gui_->playing_team()) && !events::commands_disabled && gameboard_.teams_[gui_->viewing_team()].is_human() && !linger_ && !browse_;
return (gui_->viewing_team() == gui_->playing_team()) && !events::commands_disabled && gameboard_.teams()[gui_->viewing_team()].is_human() && !linger_ && !browse_;
case hotkey::HOTKEY_UNIT_HOLD_POSITION:
case hotkey::HOTKEY_END_UNIT_TURN:
return !browse_ && !linger_ && !events::commands_disabled;
Expand All @@ -1060,13 +1060,13 @@ bool playsingle_controller::can_execute_command(const hotkey::hotkey_command& cm
return (!browse_ || linger_) && !events::commands_disabled;

case hotkey::HOTKEY_DELAY_SHROUD:
return !linger_ && (gameboard_.teams_[gui_->viewing_team()].uses_fog() || gameboard_.teams_[gui_->viewing_team()].uses_shroud())
return !linger_ && (gameboard_.teams()[gui_->viewing_team()].uses_fog() || gameboard_.teams()[gui_->viewing_team()].uses_shroud())
&& !events::commands_disabled;
case hotkey::HOTKEY_UPDATE_SHROUD:
return !linger_
&& player_number_ == gui_->viewing_side()
&& !events::commands_disabled
&& gameboard_.teams_[gui_->viewing_team()].auto_shroud_updates() == false;
&& gameboard_.teams()[gui_->viewing_team()].auto_shroud_updates() == false;

// Commands we can only do if in debug mode
case hotkey::HOTKEY_CREATE_UNIT:
Expand Down
5 changes: 3 additions & 2 deletions src/replay_controller.cpp
Expand Up @@ -159,8 +159,9 @@ void replay_controller::init_gui(){

gui_->scroll_to_leader(player_number_, display::WARP);
update_locker lock_display((*gui_).video(),false);
gameboard_.reset_all_teams_objectives_changes();

BOOST_FOREACH(const team & t, gameboard_.teams()) {
t.reset_objectives_changed();
}
update_replay_ui();
}

Expand Down
10 changes: 5 additions & 5 deletions src/team.hpp
Expand Up @@ -111,7 +111,7 @@ class team : public savegame::savegame_config
/** Set to true when the objectives for this time changes.
* Reset to false when the objectives for this team have been
* displayed to the user. */
bool objectives_changed;
mutable bool objectives_changed;

CONTROLLER controller;
DEFEAT_CONDITION defeat_condition;
Expand Down Expand Up @@ -176,7 +176,7 @@ class team : public savegame::savegame_config
void set_gold_add(bool b) {info_.gold_add = b; }
void set_base_income(int amount) { info_.income = amount - game_config::base_income; }
int countdown_time() const { return countdown_time_; }
void set_countdown_time(const int amount)
void set_countdown_time (const int amount) const
{ countdown_time_ = amount; }
int action_bonus_count() const { return action_bonus_count_; }
void set_action_bonus_count(const int count) { action_bonus_count_ = count; }
Expand Down Expand Up @@ -204,8 +204,8 @@ class team : public savegame::savegame_config
const std::string& current_player() const { return info_.current_player; }

void set_objectives(const t_string& new_objectives, bool silently=false);
void set_objectives_changed(bool c = true) { info_.objectives_changed = c; }
void reset_objectives_changed() { info_.objectives_changed = false; }
void set_objectives_changed(bool c = true) const { info_.objectives_changed = c; }
void reset_objectives_changed() const { info_.objectives_changed = false; }

const t_string& objectives() const { return info_.objectives; }
bool objectives_changed() const { return info_.objectives_changed; }
Expand Down Expand Up @@ -341,7 +341,7 @@ class team : public savegame::savegame_config

team_info info_;

int countdown_time_;
mutable int countdown_time_;
int action_bonus_count_;

std::vector<unit> recall_list_;
Expand Down

0 comments on commit f698bad

Please sign in to comment.