diff --git a/src/game_initialization/connect_engine.cpp b/src/game_initialization/connect_engine.cpp index 033da2fc06aa..5e114ef90663 100644 --- a/src/game_initialization/connect_engine.cpp +++ b/src/game_initialization/connect_engine.cpp @@ -1027,6 +1027,7 @@ config side_engine::new_config() const desc = player_id_; } if(res["name"].str().empty() && !desc.empty()) { + //TODO: maybe we should add this in to the leaders config instead of the side config? res["name"] = desc; } diff --git a/src/game_initialization/playcampaign.cpp b/src/game_initialization/playcampaign.cpp index 2f2e9705e010..68b45eebf8dc 100644 --- a/src/game_initialization/playcampaign.cpp +++ b/src/game_initialization/playcampaign.cpp @@ -176,7 +176,7 @@ void campaign_controller::show_carryover_message(playsingle_controller& playcont continue; } if (persistent_teams > 1) { - report << "\n" << t.current_player() << "\n"; + report << "\n" << t.side_name() << "\n"; } report_victory(report, t, finishing_bonus_per_turn, turns_left, finishing_bonus); diff --git a/src/leader_scroll_dialog.cpp b/src/leader_scroll_dialog.cpp index 2d99e8afd01f..9aa01507538a 100644 --- a/src/leader_scroll_dialog.cpp +++ b/src/leader_scroll_dialog.cpp @@ -240,7 +240,7 @@ void scenario_settings_table(display& gui, int selected) } str << COLUMN_SEPARATOR << team::get_side_highlight(n) - << teams[n].current_player() << COLUMN_SEPARATOR + << teams[n].side_name() << COLUMN_SEPARATOR << n + 1 << COLUMN_SEPARATOR << teams[n].start_gold() << COLUMN_SEPARATOR << teams[n].base_income() << COLUMN_SEPARATOR diff --git a/src/menu_events.cpp b/src/menu_events.cpp index 532761c9488d..e43452b29d59 100644 --- a/src/menu_events.cpp +++ b/src/menu_events.cpp @@ -154,7 +154,7 @@ void menu_handler::show_statistics(int side_num) { team ¤t_team = teams()[side_num - 1]; // Current Player name - const std::string &player = current_team.current_player(); + const std::string &player = current_team.side_name(); //add player's name to title of dialog std::stringstream title_str; title_str << _("Statistics") << " (" << player << ")"; @@ -272,7 +272,7 @@ void menu_handler::status_table(int selected) } if (pc_.get_classification().campaign_type == game_classification::CAMPAIGN_TYPE::MULTIPLAYER) - leader_name = teams()[n].current_player(); + leader_name = teams()[n].side_name(); } else { leader_bools.push_back(false); @@ -393,7 +393,7 @@ void menu_handler::scenario_settings_table(int selected) } str << COLUMN_SEPARATOR << team::get_side_highlight(n) - << teams()[n].current_player() << COLUMN_SEPARATOR + << teams()[n].side_name() << COLUMN_SEPARATOR << n + 1 << COLUMN_SEPARATOR << teams()[n].start_gold() << COLUMN_SEPARATOR << teams()[n].base_income() << COLUMN_SEPARATOR diff --git a/src/playsingle_controller.cpp b/src/playsingle_controller.cpp index f48b898151da..b6b20dde63b8 100644 --- a/src/playsingle_controller.cpp +++ b/src/playsingle_controller.cpp @@ -430,7 +430,7 @@ void playsingle_controller::show_turn_dialog(){ gui_->recalculate_minimap(); std::string message = _("It is now $name|’s turn"); utils::string_map symbols; - symbols["name"] = gamestate().board_.teams()[current_side() - 1].current_player(); + symbols["name"] = gamestate().board_.teams()[current_side() - 1].side_name(); message = utils::interpolate_variables_into_string(message, &symbols); gui2::show_transient_message(gui_->video(), "", message); } diff --git a/src/reports.cpp b/src/reports.cpp index 55dcb2744b05..2dc5b46c2ceb 100644 --- a/src/reports.cpp +++ b/src/reports.cpp @@ -216,7 +216,7 @@ static config unit_side(reports::context & rc, const unit* u) std::stringstream text; text << " " << u->side(); - add_image(report, flag_icon + mods, u_team.current_player(), ""); + add_image(report, flag_icon + mods, u_team.side_name(), ""); add_text(report, text.str(), "", ""); return report; } @@ -1485,7 +1485,7 @@ REPORT_GENERATOR(side_playing, rc) std::string mods = "~RC(" + old_rgb + ">" + new_rgb + ")"; if (flag_icon.empty()) flag_icon = game_config::images::flag_icon; - return image_report(flag_icon + mods, active_team.current_player()); + return image_report(flag_icon + mods, active_team.side_name()); } REPORT_GENERATOR(observers, rc) diff --git a/src/saved_game.cpp b/src/saved_game.cpp index 2fc82ab608e8..20b07aba2323 100644 --- a/src/saved_game.cpp +++ b/src/saved_game.cpp @@ -168,6 +168,7 @@ void saved_game::write_general_info(config_writer& out) const void saved_game::set_defaults() { + const bool is_multiplayer_tag = classification().get_tagname() == "multiplayer"; static const std::vector team_defaults = boost::assign::list_of ("carryover_percentage") ("carryover_add") @@ -179,6 +180,10 @@ void saved_game::set_defaults() { side["save_id"] = side["id"]; } + if(!is_multiplayer_tag && side["side_name"].blank()) + { + side["side_name"] = side["name"]; + } // Set some team specific values to their defaults specified in scenario BOOST_FOREACH(const std::string& att_name, team_defaults) { diff --git a/src/team.cpp b/src/team.cpp index e55ab45b7fbb..1e6d493e41fb 100644 --- a/src/team.cpp +++ b/src/team.cpp @@ -65,7 +65,7 @@ const boost::container::flat_set team::attributes = boost::assign:: ("recall_cost")("recruit")("save_id")("id")("scroll_to_leader") ("share_vision")("share_maps")("share_view")("shroud")("shroud_data")("start_gold") ("suppress_end_turn_confirmation") - ("team_name")("user_team_name")("village_gold")("village_support")("is_local") + ("team_name")("user_team_name")("side_name")("village_gold")("village_support")("is_local") // Multiplayer attributes. ("action_bonus_count")("allow_changes")("allow_player")("color_lock") ("countdown_time")("disallow_observers")("faction") @@ -85,6 +85,7 @@ team::team_info::team_info() : can_recruit(), team_name(), user_team_name(), + side_name(), save_id(), current_player(), countdown_time(), @@ -123,6 +124,7 @@ void team::team_info::read(const config &cfg) income = cfg["income"]; team_name = cfg["team_name"].str(); user_team_name = cfg["user_team_name"]; + side_name = cfg["side_name"]; save_id = cfg["save_id"].str(); current_player = cfg["current_player"].str(); countdown_time = cfg["countdown_time"].str(); @@ -239,6 +241,7 @@ void team::team_info::write(config& cfg) const cfg["income"] = income; cfg["team_name"] = team_name; cfg["user_team_name"] = user_team_name; + cfg["side_name"] = side_name; cfg["save_id"] = save_id; cfg["current_player"] = current_player; cfg["flag"] = flag; diff --git a/src/team.hpp b/src/team.hpp index f1f4adedc48b..a5ec42f7cd95 100644 --- a/src/team.hpp +++ b/src/team.hpp @@ -117,6 +117,7 @@ class team : public savegame::savegame_config std::set can_recruit; std::string team_name; t_string user_team_name; + t_string side_name; std::string save_id; // 'id' of the current player (not necessarily unique) std::string current_player; @@ -302,6 +303,7 @@ class team : public savegame::savegame_config void set_flag(const std::string& flag) { info_.flag = flag; } void set_flag_icon(const std::string& flag_icon) { info_.flag_icon = flag_icon; } + const std::string& side_name() const { return info_.side_name.empty() ? info_.current_player : info_.side_name; } //Returns true if the hex is shrouded/fogged for this side, or //any other ally with shared vision. bool shrouded(const map_location& loc) const; diff --git a/src/teambuilder.cpp b/src/teambuilder.cpp index a92304b3e2ec..3eec3c2f0b24 100644 --- a/src/teambuilder.cpp +++ b/src/teambuilder.cpp @@ -297,12 +297,6 @@ class team_builder { BOOST_FOREACH(const config *u, unit_configs_) { uc.add_unit(*u); } - - // Find the first leader and use its name as the player name. - unit_map::iterator u = board_.units().find_first_leader(t_->side()); - if ((u != board_.units().end()) && t_->current_player().empty()) - t_->set_current_player(u->name()); - } };