void playsingle_controller::after_human_turn() { team& current_team = teams_[player_number_ - 1]; // add cards if in card mode if (card_mode_) { execute_card_bh(turn(), player_number_); } do_commoner(current_team); // clear access troops gui_->refresh_access_troops(player_number_ - 1, game_display::REFRESH_CLEAR); gui_->refresh_access_heros(player_number_ - 1, game_display::REFRESH_CLEAR); // hide context-menu gui_->hide_context_menu(NULL, true); // Mark the turn as done. browse_ = true; end_turn_record(); end_turn_record_unlock(); menu_handler_.clear_undo_stack(player_number_); if (current_team.uses_fog()) { // needed because currently fog is only recalculated when a hex is /un/covered recalculate_fog(player_number_); } // Clear moves from the GUI. gui_->set_route(NULL); gui_->unhighlight_reach(); }
/** * Function that will clear shroud (and fog) based on current unit positions. * * This will not re-fog hexes unless reset_fog is set to true. * This function will do nothing if the side uses neither shroud nor fog. * This function ignores the "delayed shroud updates" setting. * The display is invalidated as needed. * * @param[in] side The side whose shroud (and fog) will be cleared. * @param[in] reset_fog If set to true, the fog will also be recalculated * (refogging hexes that can no longer be seen). * @param[in] fire_events If set to false, sighted events will not be fired. * @returns true if some shroud/fog is actually cleared away. */ bool clear_shroud(int side, bool reset_fog, bool fire_events) { team &tm = resources::gameboard->get_team(side); if (!tm.uses_shroud() && !tm.uses_fog()) return false; bool result = false; shroud_clearer clearer; for (const unit &u : resources::gameboard->units()) { if ( u.side() == side ) result |= clearer.clear_unit(u.get_location(), u, tm); } // Update the screen. if ( result ) clearer.invalidate_after_clear(); // Sighted events. if ( fire_events ) clearer.fire_events(); else clearer.drop_events(); if ( reset_fog ) { // Note: This will not reveal any new tiles, so result is not affected. // Also, we do not have to check fire_events at this point. recalculate_fog(side); } return result; }
void playsingle_controller::after_human_turn() { team& current_team = teams_[player_number_ - 1]; // add cards if in card mode if (card_mode_) { execute_card_bh(turn(), player_number_); } if (actor_can_action(units_)) { if (unit::actor->is_city()) { do_commoner(current_team); } } if (!tent::tower_mode() && !preferences::developer()) { gui_->refresh_access_troops(player_number_ - 1, game_display::REFRESH_HIDE, reinterpret_cast<void*>(this)); } gui_->refresh_access_heros(player_number_ - 1, game_display::REFRESH_CLEAR); // hide context-menu gui_->hide_context_menu(); // Mark the turn as done. browse_ = true; menu_handler_.clear_undo_stack(player_number_); if (current_team.uses_fog()) { // needed because currently fog is only recalculated when a hex is /un/covered recalculate_fog(player_number_); } // Clear moves from the GUI. gui_->set_route(NULL); gui_->unhighlight_reach(); }
void playsingle_controller::after_human_turn(){ browse_ = true; end_turn_record(); end_turn_record_unlock(); menu_handler_.clear_undo_stack(player_number_); if(teams_[player_number_-1].uses_fog()) { // needed because currently fog is only recalculated when a hex is /un/covered recalculate_fog(player_number_); } gui_->set_route(NULL); gui_->unhighlight_reach(); }