void team::build(const config& cfg, const gamemap& map, int gold) { gold_ = gold; info_.read(cfg); fog_.set_enabled(cfg["fog"].to_bool()); fog_.read(cfg["fog_data"]); shroud_.set_enabled(cfg["shroud"].to_bool()); shroud_.read(cfg["shroud_data"]); auto_shroud_updates_ = cfg["auto_shroud"].to_bool(auto_shroud_updates_); LOG_NG << "team::team(...): team_name: " << info_.team_name << ", shroud: " << uses_shroud() << ", fog: " << uses_fog() << ".\n"; // Load the WML-cleared fog. const config& fog_override = cfg.child("fog_override"); if(fog_override) { const std::vector<map_location> fog_vector = map.parse_location_range(fog_override["x"], fog_override["y"], true); fog_clearer_.insert(fog_vector.begin(), fog_vector.end()); } // To ensure some minimum starting gold, // gold is the maximum of 'gold' and what is given in the config file gold_ = std::max(gold, info_.gold); if(gold_ != info_.gold) { info_.start_gold = gold; } // Old code was doing: // info_.start_gold = std::to_string(gold) + " (" + info_.start_gold + ")"; // Was it correct? // Load in the villages the side controls at the start for(const config& v : cfg.child_range("village")) { map_location loc(v); if(map.is_village(loc)) { villages_.insert(loc); } else { WRN_NG << "[side] " << current_player() << " [village] points to a non-village location " << loc << std::endl; } } countdown_time_ = cfg["countdown_time"]; action_bonus_count_ = cfg["action_bonus_count"]; planned_actions_.reset(new wb::side_actions()); planned_actions_->set_team_index(info_.side - 1); }
void HighestNumber::play(std::uint16_t m) { uint8_t player = current_player(); if (player == 0) { state.player1_value = move_to_value(m); } else { state.player2_value = move_to_value(m); state.turn++; } state.current_player = 1 - state.current_player; }
bool is_current_player(const network::connection player) const { return (current_player() == player); }