deployed some range for loops on gameboard::teams() (#1007)
deployed some range for loops on gameboard::teams()
This commit is contained in:
parent
f71e64e364
commit
12f9215da2
7 changed files with 32 additions and 27 deletions
|
@ -274,10 +274,10 @@ void display::init_flags() {
|
|||
std::vector<std::string> side_colors;
|
||||
side_colors.reserve(dc_->teams().size());
|
||||
|
||||
for(size_t i = 0; i != dc_->teams().size(); ++i) {
|
||||
std::string side_color = dc_->teams()[i].color();
|
||||
for(const team& t : dc_->teams()) {
|
||||
std::string side_color = t.color();
|
||||
side_colors.push_back(side_color);
|
||||
init_flags_for_side_internal(i, side_color);
|
||||
init_flags_for_side_internal(t.side() - 1, side_color);
|
||||
}
|
||||
image::set_team_colors(&side_colors);
|
||||
}
|
||||
|
@ -345,13 +345,13 @@ surface display::get_flag(const map_location& loc)
|
|||
return surface(nullptr);
|
||||
}
|
||||
|
||||
for(size_t i = 0; i != dc_->teams().size(); ++i) {
|
||||
if(dc_->teams()[i].owns_village(loc) &&
|
||||
(!fogged(loc) || !dc_->teams()[currentTeam_].is_enemy(i+1)))
|
||||
for (const team& t : dc_->teams()) {
|
||||
if (t.owns_village(loc) && (!fogged(loc) || !dc_->get_team(viewing_side()).is_enemy(t.side())))
|
||||
{
|
||||
flags_[i].update_last_draw_time();
|
||||
auto& flag = flags_[t.side() - 1];
|
||||
flag.update_last_draw_time();
|
||||
const image::locator &image_flag = animate_map_ ?
|
||||
flags_[i].get_current_frame() : flags_[i].get_first_frame();
|
||||
flag.get_current_frame() : flag.get_first_frame();
|
||||
return image::get_image(image_flag, image::TOD_COLORED);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -58,6 +58,13 @@ public:
|
|||
std::vector<std::string> & hidden_label_categories_ref();
|
||||
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.
|
||||
template<typename T = void>
|
||||
bool has_team(int side) const
|
||||
{
|
||||
return side > 0 && side <= static_cast<int>(teams().size());
|
||||
}
|
||||
|
||||
// Helper for is_visible_to_team
|
||||
|
||||
/**
|
||||
|
|
|
@ -112,8 +112,9 @@ namespace { // Support functions
|
|||
std::string img_mods = cfg["image_mods"];
|
||||
|
||||
size_t side_num = cfg["side"].to_int(1);
|
||||
if ( side_num == 0 || side_num > resources::gameboard->teams().size() )
|
||||
if (!resources::gameboard->has_team(side_num)) {
|
||||
side_num = 1;
|
||||
}
|
||||
|
||||
unit_race::GENDER gender = string_gender(cfg["gender"]);
|
||||
const unit_type *ut = unit_types.find(type);
|
||||
|
|
|
@ -137,7 +137,7 @@ void verify_and_get_global_variable(const vconfig &pcfg)
|
|||
DBG_PERSIST << "verify_and_get_global_variable with from_global=" << pcfg["from_global"] << " from side " << pcfg["side"] << "\n";
|
||||
config::attribute_value pcfg_side = pcfg["side"];
|
||||
int side = (pcfg_side.str() == "global" || pcfg_side.empty()) ? resources::controller->current_side() : pcfg_side.to_int();
|
||||
if (unsigned (side - 1) >= resources::gameboard->teams().size()) {
|
||||
if (!resources::gameboard->has_team(side)) {
|
||||
ERR_PERSIST << "[get_global_variable] attribute \"side\" specifies invalid side number." << "\n";
|
||||
valid = false;
|
||||
}
|
||||
|
@ -174,7 +174,7 @@ void verify_and_set_global_variable(const vconfig &pcfg)
|
|||
//Check side matching only if the side is not "global" or empty.
|
||||
if (pcfg_side.str() != "global" && !pcfg_side.empty()) {
|
||||
//Ensure that the side is valid.
|
||||
if (unsigned(side-1) > resources::gameboard->teams().size()) {
|
||||
if (!resources::gameboard->has_team(side)) {
|
||||
ERR_PERSIST << "[set_global_variable] attribute \"side\" specifies invalid side number.";
|
||||
valid = false;
|
||||
} else if (resources::gameboard->get_team(side).is_empty()) {
|
||||
|
@ -213,7 +213,7 @@ void verify_and_clear_global_variable(const vconfig &pcfg)
|
|||
//Check side matching only if the side is not "global" or empty.
|
||||
if (pcfg_side.str() != "global" && !pcfg_side.empty()) {
|
||||
//Ensure that the side is valid.
|
||||
if (unsigned(side-1) > resources::gameboard->teams().size()) {
|
||||
if (!resources::gameboard->has_team(side)) {
|
||||
ERR_PERSIST << "[clear_global_variable] attribute \"side\" specifies invalid side number.";
|
||||
valid = false;
|
||||
} else if (resources::gameboard->get_team(side).is_empty()) {
|
||||
|
|
|
@ -266,12 +266,11 @@ void play_controller::init(CVideo& video, const config& level)
|
|||
// Find first team that is allowed to be observed.
|
||||
// If not set here observer would be without fog until
|
||||
// the first turn of observable side
|
||||
size_t i;
|
||||
for (i=0;i < gamestate().board_.teams().size();++i)
|
||||
for (const team& t : gamestate().board_.teams())
|
||||
{
|
||||
if (!gamestate().board_.teams()[i].get_disallow_observers())
|
||||
if (!t.get_disallow_observers())
|
||||
{
|
||||
gui_->set_team(i);
|
||||
gui_->set_team(t.side() - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -665,13 +664,13 @@ void play_controller::tab()
|
|||
|
||||
team& play_controller::current_team()
|
||||
{
|
||||
assert(current_side() > 0 && current_side() <= int(gamestate().board_.teams().size()));
|
||||
assert(gamestate().board_.has_team(current_side()));
|
||||
return gamestate().board_.get_team(current_side());
|
||||
}
|
||||
|
||||
const team& play_controller::current_team() const
|
||||
{
|
||||
assert(current_side() > 0 && current_side() <= int(gamestate().board_.teams().size()));
|
||||
assert(gamestate().board_.has_team(current_side()));
|
||||
return gamestate().board_.get_team(current_side());
|
||||
}
|
||||
|
||||
|
@ -1068,8 +1067,9 @@ void play_controller::start_game()
|
|||
return;
|
||||
}
|
||||
|
||||
for ( int side = gamestate().board_.teams().size(); side != 0; --side )
|
||||
actions::clear_shroud(side, false, false);
|
||||
for (const team& t : gamestate().board_.teams()) {
|
||||
actions::clear_shroud(t.side(), false, false);
|
||||
}
|
||||
|
||||
init_gui();
|
||||
LOG_NG << "first_time..." << (is_skipping_replay() ? "skipping" : "no skip") << "\n";
|
||||
|
|
|
@ -3001,9 +3001,10 @@ int game_lua_kernel::intf_get_sides(lua_State* L)
|
|||
LOG_LUA << "intf_get_sides called: this = " << std::hex << this << std::dec << " myname = " << my_name() << std::endl;
|
||||
std::vector<int> sides;
|
||||
const vconfig ssf = luaW_checkvconfig(L, 1, true);
|
||||
if(ssf.null()){
|
||||
for(unsigned side_number = 1; side_number <= teams().size(); ++side_number)
|
||||
if(ssf.null()) {
|
||||
for (unsigned side_number = 1; side_number <= teams().size(); ++side_number) {
|
||||
sides.push_back(side_number);
|
||||
}
|
||||
} else {
|
||||
filter_context & fc = game_state_;
|
||||
|
||||
|
|
|
@ -524,11 +524,7 @@ void scoped_recall_unit::activate()
|
|||
|
||||
const std::vector<team>& teams = resources::gameboard->teams();
|
||||
|
||||
std::vector<team>::const_iterator team_it;
|
||||
for (team_it = teams.begin(); team_it != teams.end(); ++team_it) {
|
||||
if (team_it->save_id() == player_ )
|
||||
break;
|
||||
}
|
||||
std::vector<team>::const_iterator team_it = std::find_if(teams.begin(), teams.end(), [&](const team& t) { return t.save_id() == player_; });
|
||||
|
||||
if(team_it != teams.end()) {
|
||||
if(team_it->recall_list().size() > recall_index_) {
|
||||
|
|
Loading…
Add table
Reference in a new issue