Partially restore 2011-09-29T15:55:30Z!thonsew@yahoo.com, which fixes bug #18745.

This version is flawed though, and does not yet work for female units.
This commit is contained in:
Alexander van Gessel 2011-10-12 17:41:16 +01:00
parent 9ec3fe6e7b
commit 328ab64d6f
8 changed files with 34 additions and 33 deletions

View file

@ -942,8 +942,8 @@ const unit_preview_pane::details units_list_preview_pane::get_details() const
det.traits = utils::join(u.trait_names(), ", ");
//we filter to remove the tooltips (increment by 2)
const std::vector<std::string> &abilities = u.ability_tooltips(true);
for(std::vector<std::string>::const_iterator a = abilities.begin();
const std::vector<t_string> &abilities = u.ability_tooltips(true);
for(std::vector<t_string>::const_iterator a = abilities.begin();
a != abilities.end(); a+=2) {
det.abilities.push_back(*a);
}

View file

@ -2212,6 +2212,7 @@ void display::refresh_report(std::string const &report_name, const config &_repo
SDL_Rect &rect = reportRects_[report_name];
const SDL_Rect &new_rect = item->location(screen_area());
surface &surf = reportSurfaces_[report_name];
/// @todo check to see if reports_ is ever updated
config &report = reports_[report_name];
// Report and its location is unchanged since last time. Do nothing.
@ -2375,10 +2376,10 @@ void display::refresh_report(std::string const &report_name, const config &_repo
}
skip_element:
t = (*elements.first)["tooltip"].str();
t = (*elements.first)["tooltip"].t_str().base_str();
if (!t.empty()) {
if (!used_ellipsis) {
tooltips::add_tooltip(area, t, (*elements.first)["help"]);
tooltips::add_tooltip(area, t, (*elements.first)["help"].t_str().base_str());
} else {
// Collect all tooltips for the ellipsis.
// TODO: need a better separator

View file

@ -1180,13 +1180,13 @@ std::vector<topic> generate_ability_topics(const bool sort_generated)
abil_vecs[0] = &type.abilities();
abil_vecs[1] = &type.adv_abilities();
std::vector<std::string> const* desc_vecs[2];
std::vector<t_string> const* desc_vecs[2];
desc_vecs[0] = &type.ability_tooltips();
desc_vecs[1] = &type.adv_ability_tooltips();
for(int i=0; i<2; ++i) {
std::vector<t_string> const& abil_vec = *abil_vecs[i];
std::vector<std::string> const& desc_vec = *desc_vecs[i];
std::vector<t_string> const& desc_vec = *desc_vecs[i];
for(size_t j=0; j < abil_vec.size(); ++j) {
t_string const& abil_name = abil_vec[j];
if (ability_description.find(abil_name) == ability_description.end()) {
@ -1251,9 +1251,9 @@ std::vector<topic> generate_faction_topics(const bool sort_generated)
std::stringstream text;
const std::string& description = f["description"];
const config::attribute_value& description = f["description"];
if (!description.empty()) {
text << description << "\n";
text << description.t_str() << "\n";
text << "\n";
}
@ -1282,9 +1282,9 @@ std::vector<topic> generate_faction_topics(const bool sort_generated)
std::stringstream text;
text << "<header>text='" << _("Era:") << " " << era["name"] << "'</header>" << "\n";
text << "\n";
const std::string& description = era["description"];
const config::attribute_value& description = era["description"];
if (!description.empty()) {
text << description << "\n";
text << description.t_str() << "\n";
text << "\n";
}

View file

@ -346,16 +346,16 @@ static config unit_abilities(unit* u)
{
if (!u) return report();
config res;
const std::vector<std::string> &abilities = u->ability_tooltips();
for (std::vector<std::string>::const_iterator i = abilities.begin(),
const std::vector<t_string> &abilities = u->ability_tooltips();
for (std::vector<t_string>::const_iterator i = abilities.begin(),
i_end = abilities.end(); i != i_end; ++i)
{
std::ostringstream str, tooltip;
const std::string &name = *i;
str << gettext(name.c_str());
const std::string &name = i->base_str();
str << i->str();
if (i + 2 != i_end) str << ", ";
++i;
tooltip << _("Ability: ") << *i;
tooltip << _("Ability: ") << i->str();
add_text(res, str.str(), tooltip.str(), "ability_" + name);
}
return res;

View file

@ -304,7 +304,7 @@ public:
unit_ability_list get_abilities(const std::string &ability, const map_location& loc) const;
unit_ability_list get_abilities(const std::string &ability) const
{ return get_abilities(ability, loc_); }
std::vector<std::string> ability_tooltips(bool force_active = false) const;
std::vector<t_string> ability_tooltips(bool force_active = false) const;
std::vector<std::string> get_ability_list() const;
bool has_ability_type(const std::string& ability) const;

View file

@ -201,9 +201,9 @@ std::vector<std::string> unit::get_ability_list() const
return res;
}
std::vector<std::string> unit::ability_tooltips(bool force_active) const
std::vector<t_string> unit::ability_tooltips(bool force_active) const
{
std::vector<std::string> res;
std::vector<t_string> res;
const config &abilities = cfg_.child("abilities");
if (!abilities) return res;
@ -212,24 +212,24 @@ std::vector<std::string> unit::ability_tooltips(bool force_active) const
{
if (force_active || ability_active(ab.key, ab.cfg, loc_))
{
std::string const &name =
t_string const &name =
gender_ == unit_race::MALE || ab.cfg["female_name"].empty() ?
ab.cfg["name"] : ab.cfg["female_name"];
ab.cfg["name"].t_str() : ab.cfg["female_name"].t_str();
if (!name.empty()) {
res.push_back(name);
res.push_back(ab.cfg["description"]);
res.push_back(ab.cfg["description"].t_str());
}
}
else
{
std::string const &name =
t_string const &name =
gender_ == unit_race::MALE || ab.cfg["female_name_inactive"].empty() ?
ab.cfg["name_inactive"] : ab.cfg["female_name_inactive"];
ab.cfg["name_inactive"].t_str() : ab.cfg["female_name_inactive"].t_str();
if (!name.empty()) {
res.push_back(name);
res.push_back(ab.cfg["description_inactive"]);
res.push_back(ab.cfg["description_inactive"].t_str());
}
}
}

View file

@ -802,10 +802,10 @@ void unit_type::build_help_index(const movement_type_map &mv_types,
if (const config &abil_cfg = cfg.child("abilities"))
{
foreach (const config::any_child &ab, abil_cfg.all_children_range()) {
const std::string &name = ab.cfg["name"];
const config::attribute_value &name = ab.cfg["name"];
if (!name.empty()) {
abilities_.push_back(name);
ability_tooltips_.push_back(ab.cfg["description"]);
abilities_.push_back(name.t_str());
ability_tooltips_.push_back( ab.cfg["description"].t_str() );
}
}
}
@ -819,10 +819,10 @@ void unit_type::build_help_index(const movement_type_map &mv_types,
continue;
}
foreach (const config::any_child &ab, abil_cfg.all_children_range()) {
const std::string &name = ab.cfg["name"];
const config::attribute_value &name = ab.cfg["name"];
if (!name.empty()) {
adv_abilities_.push_back(name);
adv_ability_tooltips_.push_back(ab.cfg["description"]);
adv_abilities_.push_back(name.t_str());
adv_ability_tooltips_.push_back( ab.cfg["description"].t_str() );
}
}
}

View file

@ -257,11 +257,11 @@ public:
fixed_t alpha() const { return alpha_; }
const std::vector<t_string>& abilities() const { return abilities_; }
const std::vector<std::string>& ability_tooltips() const { return ability_tooltips_; }
const std::vector<t_string>& ability_tooltips() const { return ability_tooltips_; }
// some extra abilities may be gained through AMLA advancements
const std::vector<t_string>& adv_abilities() const { return adv_abilities_; }
const std::vector<std::string>& adv_ability_tooltips() const { return adv_ability_tooltips_; }
const std::vector<t_string>& adv_ability_tooltips() const { return adv_ability_tooltips_; }
bool can_advance() const { return !advances_to_.empty(); }
@ -322,7 +322,7 @@ private:
fixed_t alpha_;
std::vector<t_string> abilities_, adv_abilities_;
std::vector<std::string> ability_tooltips_, adv_ability_tooltips_;
std::vector<t_string> ability_tooltips_, adv_ability_tooltips_;
bool zoc_, hide_help_;