From: <geo...@us...> - 2010-03-07 07:16:11
|
Revision: 3376 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=3376&view=rev Author: geoffthemedio Date: 2010-03-07 07:16:05 +0000 (Sun, 07 Mar 2010) Log Message: ----------- Added (optional) autogenerated effects description text to hull descriptions. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2010-03-07 07:13:11 UTC (rev 3375) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2010-03-07 07:16:05 UTC (rev 3376) @@ -266,6 +266,9 @@ // hulls have no specific types detailed_description = UserString(m_hull->Description()) + "\n\n" + m_hull->StatDescription(); + if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions") && !m_hull->Effects().empty()) { + detailed_description += str(FlexibleFormat(UserString("ENC_EFFECTS_STR")) % EffectsDescription(m_hull->Effects())); + } } else if (m_tech) { // Technologies name = UserString(m_tech->Name()); |
From: <geo...@us...> - 2010-07-30 05:24:17
|
Revision: 3713 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=3713&view=rev Author: geoffthemedio Date: 2010-07-30 05:24:11 +0000 (Fri, 30 Jul 2010) Log Message: ----------- -Fixed issue with autogenerated Unlocks links to building types in tech descriptions, which weren't working due to using the wrong hard-coded link tag. -Added support in EncyclopediaDetailPanel for other unlockable item type (ship parts, ship hulls, techs). These now generate links, using the appropriate VarText tag like for buildings. This should only work for techs, though, as currently links to ship parts or hulls are connected to functions that do nothing. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2010-07-30 04:50:10 UTC (rev 3712) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2010-07-30 05:24:11 UTC (rev 3713) @@ -335,20 +335,27 @@ detailed_description += UserString("ENC_TECH_DETAIL_UNLOCKS_SECTION_STR"); for (unsigned int i = 0; i < unlocked_items.size(); ++i) { const ItemSpec& item = unlocked_items[i]; - std::string link = ""; - if (item.type == UIT_BUILDING) - link = "<building " + item.name + ">" + UserString(item.name) + "</building>"; - else - link = UserString(item.name); - /* TODO: replace this building type linking with linking using generic encyclopedia entry links, - so that clicking one of these links will show the item in the current encyclopedia - window (if one is available) regardless of what screen (tech, design, production) - is currently open. */ - std::string tech_link = ("[tech " + unlocked_items[i].name + "]"); + std::string TAG; + switch (item.type) { + case UIT_BUILDING: TAG = VarText::BUILDING_TYPE_TAG; break; + case UIT_SHIP_PART: TAG = VarText::SHIP_PART_TAG; break; + case UIT_SHIP_HULL: TAG = VarText::SHIP_HULL_TAG; break; + case UIT_TECH: TAG = VarText::TECH_TAG; break; + } + + std::string link_text; + if (!TAG.empty()) { + link_text = "<" + TAG + " " + item.name + ">" + + UserString(item.name) + + "</" + TAG + ">"; + } else { + link_text = UserString(item.name); + } + detailed_description += str(FlexibleFormat(UserString("ENC_TECH_DETAIL_UNLOCKED_ITEM_STR")) % UserString(boost::lexical_cast<std::string>(unlocked_items[i].type)) - % link); + % link_text); } } |
From: <geo...@us...> - 2010-10-23 22:21:13
|
Revision: 3827 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=3827&view=rev Author: geoffthemedio Date: 2010-10-23 22:21:06 +0000 (Sat, 23 Oct 2010) Log Message: ----------- -Fixed more >> in template definitions. -Added some safety checks and fixed some existing safety checks to prevent crashes with incomplete ship designs or if the iterator tracking the current place in encyclopedia history is invalid. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2010-10-23 21:55:17 UTC (rev 3826) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2010-10-23 22:21:06 UTC (rev 3827) @@ -101,8 +101,8 @@ } } -std::list <std::pair<std::string, std::string>> EncyclopediaDetailPanel::m_items = std::list<std::pair<std::string, std::string>>(0); -std::list <std::pair<std::string, std::string>>::iterator EncyclopediaDetailPanel::m_items_it = m_items.begin(); +std::list <std::pair<std::string, std::string> > EncyclopediaDetailPanel::m_items = std::list<std::pair<std::string, std::string> >(0); +std::list <std::pair<std::string, std::string> >::iterator EncyclopediaDetailPanel::m_items_it = m_items.begin(); EncyclopediaDetailPanel::EncyclopediaDetailPanel(GG::X w, GG::Y h) : CUIWnd("", GG::X1, GG::Y1, w - 1, h - 1, GG::ONTOP | GG::INTERACTIVE | GG::DRAGABLE | GG::RESIZABLE), @@ -618,8 +618,7 @@ } else if (m_items_it->first == INCOMPLETE_DESIGN) { boost::shared_ptr<const ShipDesign> incomplete_design = m_incomplete_design.lock(); - if (incomplete_design) - { + if (incomplete_design) { // incomplete design. not yet in game universe; being created on design screen name = incomplete_design->Name(); @@ -630,28 +629,29 @@ } else { texture = ClientUI::HullTexture(""); } + + turns = incomplete_design->ProductionTime(); + cost = incomplete_design->ProductionCost(); + cost_units = UserString("ENC_PP"); + + detailed_description = str(FlexibleFormat(UserString("ENC_SHIP_DESIGN_DESCRIPTION_STR")) + % incomplete_design->Description() + % static_cast<int>(incomplete_design->SRWeapons().size()) + % static_cast<int>(incomplete_design->LRWeapons().size()) + % static_cast<int>(incomplete_design->FWeapons().size()) + % static_cast<int>(incomplete_design->PDWeapons().size()) + % incomplete_design->Structure() + % incomplete_design->Shields() + % incomplete_design->Detection() + % incomplete_design->BattleSpeed() + % incomplete_design->StarlaneSpeed() + % incomplete_design->Fuel() + % incomplete_design->ColonyCapacity() + % incomplete_design->Stealth()); } general_type = UserString("ENC_INCOMPETE_SHIP_DESIGN"); - turns = incomplete_design->ProductionTime(); - cost = incomplete_design->ProductionCost(); - cost_units = UserString("ENC_PP"); - detailed_description = str(FlexibleFormat(UserString("ENC_SHIP_DESIGN_DESCRIPTION_STR")) - % incomplete_design->Description() - % static_cast<int>(incomplete_design->SRWeapons().size()) - % static_cast<int>(incomplete_design->LRWeapons().size()) - % static_cast<int>(incomplete_design->FWeapons().size()) - % static_cast<int>(incomplete_design->PDWeapons().size()) - % incomplete_design->Structure() - % incomplete_design->Shields() - % incomplete_design->Detection() - % incomplete_design->BattleSpeed() - % incomplete_design->StarlaneSpeed() - % incomplete_design->Fuel() - % incomplete_design->ColonyCapacity() - % incomplete_design->Stealth()); - } else if (m_items_it->first == UNIVERSE_OBJECT) { int id = boost::lexical_cast<int>(m_items_it->second); @@ -746,10 +746,10 @@ void EncyclopediaDetailPanel::AddItem(const std::string& type, const std::string& name) { // if the actual item is not the last one, all aubsequented items are deleted if (!m_items.empty()) { - std::list<std::pair <std::string, std::string>>::iterator end = m_items.end(); + std::list<std::pair <std::string, std::string> >::iterator end = m_items.end(); end--; if (m_items_it != end) { - std::list<std::pair <std::string, std::string>>::iterator i = m_items_it; + std::list<std::pair <std::string, std::string> >::iterator i = m_items_it; ++i; m_items.erase(i, m_items.end()); } @@ -764,9 +764,9 @@ } void EncyclopediaDetailPanel::PopItem() { - if (!m_items.empty()) { + if (!m_items.empty()) { m_items.pop_back(); - if (m_items_it == m_items.end()) + if (m_items_it == m_items.end() && m_items_it != m_items.begin()) m_items_it--; Refresh(); } @@ -774,10 +774,11 @@ void EncyclopediaDetailPanel::ClearItems() { m_items.clear(); + m_items_it = m_items.end(); } void EncyclopediaDetailPanel::SetText(const std::string& text, bool lookup_in_stringtable) { - if (text == m_items_it->second) + if (m_items_it != m_items.end() && text == m_items_it->second) return; if (text == "ENC_INDEX") SetIndex(); @@ -786,84 +787,94 @@ } void EncyclopediaDetailPanel::SetTech(const std::string& tech_name) { - if (tech_name == m_items_it->second) + if (m_items_it != m_items.end() && tech_name == m_items_it->second) return; AddItem("ENC_TECH", tech_name); } void EncyclopediaDetailPanel::SetPartType(const std::string& part_name) { - if (part_name == m_items_it->second) + if (m_items_it != m_items.end() && part_name == m_items_it->second) return; AddItem("ENC_SHIP_PART", part_name); } void EncyclopediaDetailPanel::SetHullType(const std::string& hull_name) { - if (hull_name == m_items_it->second) + if (m_items_it != m_items.end() && hull_name == m_items_it->second) return; AddItem("ENC_SHIP_HULL", hull_name); } void EncyclopediaDetailPanel::SetBuildingType(const std::string& building_name) { - if (building_name == m_items_it->second) + if (m_items_it != m_items.end() && building_name == m_items_it->second) return; AddItem("ENC_BUILDING_TYPE", building_name); } void EncyclopediaDetailPanel::SetSpecial(const std::string& special_name) { - if (special_name == m_items_it->second) + if (m_items_it != m_items.end() && special_name == m_items_it->second) return; AddItem("ENC_SPECIAL", special_name); } void EncyclopediaDetailPanel::SetSpecies(const std::string& species_name) { - if (species_name == m_items_it->second) + if (m_items_it != m_items.end() && species_name == m_items_it->second) return; AddItem("ENC_SPECIES", species_name); } void EncyclopediaDetailPanel::SetObject(int object_id) { - int id = boost::lexical_cast<int>(m_items_it->second); + int id = UniverseObject::INVALID_OBJECT_ID; + if (m_items_it != m_items.end()) + id = boost::lexical_cast<int>(m_items_it->second); if (object_id == id) return; AddItem(UNIVERSE_OBJECT, boost::lexical_cast<std::string>(object_id)); } void EncyclopediaDetailPanel::SetObject(const std::string& object_id) { - if (object_id == m_items_it->second) + if (m_items_it != m_items.end() && object_id == m_items_it->second) return; AddItem(UNIVERSE_OBJECT, object_id); } void EncyclopediaDetailPanel::SetEmpire(int empire_id) { - int id = boost::lexical_cast<int>(m_items_it->second); + int id = ALL_EMPIRES; + if (m_items_it != m_items.end()) + id = boost::lexical_cast<int>(m_items_it->second); if (empire_id == id) return; AddItem("ENC_EMPIRE", boost::lexical_cast<std::string>(empire_id)); } void EncyclopediaDetailPanel::SetEmpire(const std::string& empire_id) { - if (empire_id == m_items_it->second) + if (m_items_it != m_items.end() && empire_id == m_items_it->second) return; AddItem("ENC_EMPIRE", empire_id); } void EncyclopediaDetailPanel::SetDesign(int design_id) { - int id = boost::lexical_cast<int>(m_items_it->second); + int id = ShipDesign::INVALID_DESIGN_ID; + if (m_items_it != m_items.end()) + id = boost::lexical_cast<int>(m_items_it->second); if (design_id == id) return; AddItem("ENC_SHIP_DESIGN", boost::lexical_cast<std::string>(design_id)); } void EncyclopediaDetailPanel::SetDesign(const std::string& design_id) { - if (design_id == m_items_it->second) + if (m_items_it != m_items.end() && design_id == m_items_it->second) return; AddItem("ENC_SHIP_DESIGN", design_id); } void EncyclopediaDetailPanel::SetIncompleteDesign(boost::weak_ptr<const ShipDesign> incomplete_design) { - if (m_items_it->first != INCOMPLETE_DESIGN) { - m_incomplete_design = incomplete_design; + m_incomplete_design = incomplete_design; + + if (m_items_it == m_items.end() || + m_items_it->first != INCOMPLETE_DESIGN) { AddItem(INCOMPLETE_DESIGN, EMPTY_STRING); + } else { + Refresh(); } } @@ -929,7 +940,7 @@ } void EncyclopediaDetailPanel::OnNext() { - std::list<std::pair <std::string, std::string>>::iterator end = m_items.end(); + std::list<std::pair <std::string, std::string> >::iterator end = m_items.end(); end--; if (m_items_it != end && !m_items.empty()) m_items_it++; |
From: <geo...@us...> - 2010-10-23 22:24:51
|
Revision: 3828 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=3828&view=rev Author: geoffthemedio Date: 2010-10-23 22:24:45 +0000 (Sat, 23 Oct 2010) Log Message: ----------- Tweaked encyclopedia to show general / specific item type text even if the specific type is empty, so that "Incomplete Ship Design" shows up on pages in the encyclopedia history even if that incomplete design is no longer available. This prevents odd blank pages from appearing in the history after designing a ship and closing the design window. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2010-10-23 22:21:06 UTC (rev 3827) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2010-10-23 22:24:45 UTC (rev 3828) @@ -723,10 +723,10 @@ if (!name.empty()) m_name_text->SetText(name); - if (!specific_type.empty()) - m_summary_text->SetText(str(FlexibleFormat(UserString("ENC_DETAIL_TYPE_STR")) - % specific_type - % general_type)); + m_summary_text->SetText(str(FlexibleFormat(UserString("ENC_DETAIL_TYPE_STR")) + % specific_type + % general_type)); + if (color != GG::CLR_ZERO) m_summary_text->SetColor(color); |
From: <geo...@us...> - 2011-08-01 17:11:41
|
Revision: 4086 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=4086&view=rev Author: geoffthemedio Date: 2011-08-01 17:11:34 +0000 (Mon, 01 Aug 2011) Log Message: ----------- Added some object directories to the encyclopedia index, which link to lists of objects known in the universe, which are generally clickable to zoom to those objects. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2011-08-01 08:23:46 UTC (rev 4085) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2011-08-01 17:11:34 UTC (rev 4086) @@ -55,6 +55,12 @@ retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_BUILDING_TYPE") + "\n"; retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SPECIAL") + "\n"; retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SPECIES") + "\n"; + retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_EMPIRE") + "\n"; + retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SHIP") + "\n"; + retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_FLEET") + "\n"; + retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_PLANET") + "\n"; + retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_BUILDING") + "\n"; + retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SYSTEM") + "\n"; } else if (dir_name == "ENC_SHIP_PART") { const PartTypeManager& part_type_manager = GetPartTypeManager(); @@ -95,8 +101,37 @@ const Universe& universe = GetUniverse(); for (Universe::ship_design_iterator it = universe.beginShipDesigns(); it != universe.endShipDesigns(); ++it) retval += LinkTaggedIDText(VarText::DESIGN_ID_TAG, it->first, it->second->Name()) + "\n"; + + } else if (dir_name == "ENC_SHIP") { + const Universe& universe = GetUniverse(); + std::vector<const Ship*> ships = universe.EmpireKnownObjects(HumanClientApp::GetApp()->EmpireID()).FindObjects<Ship>(); + for (std::vector<const Ship*>::const_iterator ship_it = ships.begin(); ship_it != ships.end(); ++ship_it) + retval += LinkTaggedIDText(VarText::SHIP_ID_TAG, (*ship_it)->ID(), (*ship_it)->Name()) + " "; + + } else if (dir_name == "ENC_FLEET") { + const Universe& universe = GetUniverse(); + std::vector<const Fleet*> fleets = universe.EmpireKnownObjects(HumanClientApp::GetApp()->EmpireID()).FindObjects<Fleet>(); + for (std::vector<const Fleet*>::const_iterator fleet_it = fleets.begin(); fleet_it != fleets.end(); ++fleet_it) + retval += LinkTaggedIDText(VarText::FLEET_ID_TAG, (*fleet_it)->ID(), (*fleet_it)->Name()) + " "; + + } else if (dir_name == "ENC_PLANET") { + const Universe& universe = GetUniverse(); + std::vector<const Planet*> planets = universe.EmpireKnownObjects(HumanClientApp::GetApp()->EmpireID()).FindObjects<Planet>(); + for (std::vector<const Planet*>::const_iterator planet_it = planets.begin(); planet_it != planets.end(); ++planet_it) + retval += LinkTaggedIDText(VarText::PLANET_ID_TAG, (*planet_it)->ID(), (*planet_it)->Name()) + " "; + + } else if (dir_name == "ENC_BUILDING") { + const Universe& universe = GetUniverse(); + std::vector<const Building*> buildings = universe.EmpireKnownObjects(HumanClientApp::GetApp()->EmpireID()).FindObjects<Building>(); + for (std::vector<const Building*>::const_iterator building_it = buildings.begin(); building_it != buildings.end(); ++building_it) + retval += LinkTaggedIDText(VarText::BUILDING_ID_TAG, (*building_it)->ID(), (*building_it)->Name()) + " "; + + } else if (dir_name == "ENC_SYSTEM") { + const Universe& universe = GetUniverse(); + std::vector<const System*> systems = universe.EmpireKnownObjects(HumanClientApp::GetApp()->EmpireID()).FindObjects<System>(); + for (std::vector<const System*>::const_iterator system_it = systems.begin(); system_it != systems.end(); ++system_it) + retval += LinkTaggedIDText(VarText::SYSTEM_ID_TAG, (*system_it)->ID(), (*system_it)->Name()) + " "; } - return retval; } } |
From: <geo...@us...> - 2011-10-02 19:11:09
|
Revision: 4334 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=4334&view=rev Author: geoffthemedio Date: 2011-10-02 19:11:03 +0000 (Sun, 02 Oct 2011) Log Message: ----------- Sorted techs alphabetically (in user's language) on encyclopedia techs list. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2011-10-02 16:43:13 UTC (rev 4333) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2011-10-02 19:11:03 UTC (rev 4334) @@ -81,8 +81,12 @@ } else if (dir_name == "ENC_TECH") { std::vector<std::string> tech_names = GetTechManager().TechNames(); + std::map<std::string, std::string> userstring_tech_names; + // sort tech names by user-visible name, so names are shown alphabetically in UI for (std::vector<std::string>::const_iterator it = tech_names.begin(); it != tech_names.end(); ++it) - retval += LinkTaggedText(VarText::TECH_TAG, *it) + "\n"; + userstring_tech_names[UserString(*it)] = *it; + for (std::map<std::string, std::string>::const_iterator it = userstring_tech_names.begin(); it != userstring_tech_names.end(); ++it) + retval += LinkTaggedText(VarText::TECH_TAG, it->second) + "\n"; } else if (dir_name == "ENC_BUILDING_TYPE") { const BuildingTypeManager& building_type_manager = GetBuildingTypeManager(); |
From: <geo...@us...> - 2011-10-09 00:20:14
|
Revision: 4364 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=4364&view=rev Author: geoffthemedio Date: 2011-10-09 00:20:08 +0000 (Sun, 09 Oct 2011) Log Message: ----------- Fixed unexplored / unknown systems' names not appearing in lists of systems (all systems, or in the list of fleets owned by an empire, although in the latter case the issue was probably difficult to observe). Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2011-10-09 00:18:11 UTC (rev 4363) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2011-10-09 00:20:08 UTC (rev 4364) @@ -142,22 +142,29 @@ } else if (dir_name == "ENC_FLEET") { std::vector<const Fleet*> fleets = objects.FindObjects<Fleet>(); for (std::vector<const Fleet*>::const_iterator fleet_it = fleets.begin(); fleet_it != fleets.end(); ++fleet_it) - retval += LinkTaggedIDText(VarText::FLEET_ID_TAG, (*fleet_it)->ID(), (*fleet_it)->Name()) + " "; + retval += LinkTaggedIDText(VarText::FLEET_ID_TAG, (*fleet_it)->ID(), (*fleet_it)->PublicName(client_empire_id)) + " "; } else if (dir_name == "ENC_PLANET") { std::vector<const Planet*> planets = objects.FindObjects<Planet>(); for (std::vector<const Planet*>::const_iterator planet_it = planets.begin(); planet_it != planets.end(); ++planet_it) - retval += LinkTaggedIDText(VarText::PLANET_ID_TAG, (*planet_it)->ID(), (*planet_it)->Name()) + " "; + retval += LinkTaggedIDText(VarText::PLANET_ID_TAG, (*planet_it)->ID(), (*planet_it)->PublicName(client_empire_id)) + " "; } else if (dir_name == "ENC_BUILDING") { std::vector<const Building*> buildings = objects.FindObjects<Building>(); for (std::vector<const Building*>::const_iterator building_it = buildings.begin(); building_it != buildings.end(); ++building_it) - retval += LinkTaggedIDText(VarText::BUILDING_ID_TAG, (*building_it)->ID(), (*building_it)->Name()) + " "; + retval += LinkTaggedIDText(VarText::BUILDING_ID_TAG, (*building_it)->ID(), (*building_it)->PublicName(client_empire_id)) + " "; } else if (dir_name == "ENC_SYSTEM") { std::vector<const System*> systems = objects.FindObjects<System>(); - for (std::vector<const System*>::const_iterator system_it = systems.begin(); system_it != systems.end(); ++system_it) - retval += LinkTaggedIDText(VarText::SYSTEM_ID_TAG, (*system_it)->ID(), (*system_it)->Name()) + " "; + for (std::vector<const System*>::const_iterator system_it = systems.begin(); system_it != systems.end(); ++system_it) { + const System* system = *system_it; + std::string sys_name = system->PublicName(client_empire_id); + if (system->GetStarType() == STAR_NONE) + sys_name = UserString("EMPTY_SPACE"); + else if (system->GetStarType() == INVALID_STAR_TYPE) + sys_name = UserString("UNEXPLORED_REGION"); + retval += LinkTaggedIDText(VarText::SYSTEM_ID_TAG, (*system_it)->ID(), sys_name) + " "; + } } return retval; } @@ -721,13 +728,18 @@ const UniverseObject* obj = *fleet_it; std::string fleet_link = LinkTaggedIDText(VarText::FLEET_ID_TAG, obj->ID(), obj->PublicName(client_empire_id)); std::string system_link; - if (const System* system = objects.Object<System>(obj->SystemID())) - system_link = LinkTaggedIDText(VarText::SYSTEM_ID_TAG, system->ID(), system->PublicName(client_empire_id)); - if (!system_link.empty()) + if (const System* system = objects.Object<System>(obj->SystemID())) { + std::string sys_name = system->PublicName(client_empire_id); + if (system->GetStarType() == STAR_NONE) + sys_name = UserString("EMPTY_SPACE"); + else if (system->GetStarType() == INVALID_STAR_TYPE) + sys_name = UserString("UNEXPLORED_REGION"); + system_link = LinkTaggedIDText(VarText::SYSTEM_ID_TAG, system->ID(), sys_name); detailed_description += str(FlexibleFormat(UserString("OWNED_FLEET_AT_SYSTEM")) % fleet_link % system_link); - else + } else { detailed_description += fleet_link; + } detailed_description += "\n"; } } else { |
From: <geo...@us...> - 2011-10-10 01:15:33
|
Revision: 4372 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=4372&view=rev Author: geoffthemedio Date: 2011-10-10 01:15:27 +0000 (Mon, 10 Oct 2011) Log Message: ----------- More replacement of buggy local code with calls to System::ApparentName Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2011-10-10 00:44:39 UTC (rev 4371) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2011-10-10 01:15:27 UTC (rev 4372) @@ -158,11 +158,7 @@ std::vector<const System*> systems = objects.FindObjects<System>(); for (std::vector<const System*>::const_iterator system_it = systems.begin(); system_it != systems.end(); ++system_it) { const System* system = *system_it; - std::string sys_name = system->PublicName(client_empire_id); - if (system->GetStarType() == STAR_NONE) - sys_name = UserString("EMPTY_SPACE"); - else if (system->GetStarType() == INVALID_STAR_TYPE) - sys_name = UserString("UNEXPLORED_REGION"); + std::string sys_name = system->ApparentName(client_empire_id); retval += LinkTaggedIDText(VarText::SYSTEM_ID_TAG, (*system_it)->ID(), sys_name) + " "; } } @@ -729,11 +725,7 @@ std::string fleet_link = LinkTaggedIDText(VarText::FLEET_ID_TAG, obj->ID(), obj->PublicName(client_empire_id)); std::string system_link; if (const System* system = objects.Object<System>(obj->SystemID())) { - std::string sys_name = system->PublicName(client_empire_id); - if (system->GetStarType() == STAR_NONE) - sys_name = UserString("EMPTY_SPACE"); - else if (system->GetStarType() == INVALID_STAR_TYPE) - sys_name = UserString("UNEXPLORED_REGION"); + std::string sys_name = system->ApparentName(client_empire_id); system_link = LinkTaggedIDText(VarText::SYSTEM_ID_TAG, system->ID(), sys_name); detailed_description += str(FlexibleFormat(UserString("OWNED_FLEET_AT_SYSTEM")) % fleet_link % system_link); |
From: <geo...@us...> - 2011-10-10 17:17:48
|
Revision: 4378 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=4378&view=rev Author: geoffthemedio Date: 2011-10-10 17:17:42 +0000 (Mon, 10 Oct 2011) Log Message: ----------- Code change to go with stringtable changes in 4376 Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2011-10-10 17:13:23 UTC (rev 4377) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2011-10-10 17:17:42 UTC (rev 4378) @@ -753,14 +753,14 @@ // inherent species limitations detailed_description += "\n\n"; if (species->CanProduceShips()) - detailed_description += UserString("SPACEFARING"); + detailed_description += UserString("CAN_PRODUCE_SHIPS"); else - detailed_description += UserString("PLANETBOUND"); + detailed_description += UserString("CANNOT_PRODUCE_SHIPS"); detailed_description += "\n"; if (species->CanColonize()) detailed_description += UserString("CAN_COLONIZE"); else - detailed_description += UserString("SPACEBOUND"); + detailed_description += UserString("CANNNOT_COLONIZE"); // homeworld detailed_description += "\n\n"; if (species->Homeworlds().empty()) { |
From: <geo...@us...> - 2011-10-21 10:13:06
|
Revision: 4427 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=4427&view=rev Author: geoffthemedio Date: 2011-10-21 10:12:59 +0000 (Fri, 21 Oct 2011) Log Message: ----------- Added total attack power of a ship design to the list of possible substituted statistics for encyclopadia entries. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2011-10-21 09:53:31 UTC (rev 4426) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2011-10-21 10:12:59 UTC (rev 4427) @@ -872,7 +872,8 @@ % design->StarlaneSpeed() % design->Fuel() % design->ColonyCapacity() - % design->TroopCapacity()); + % design->TroopCapacity() + % design->Attack()); // ships of this design std::vector<const Ship*> all_ships = objects.FindObjects<Ship>(); |
From: <geo...@us...> - 2012-01-26 20:20:53
|
Revision: 4622 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=4622&view=rev Author: geoffthemedio Date: 2012-01-26 20:20:42 +0000 (Thu, 26 Jan 2012) Log Message: ----------- Made building, ship part, ship hull, and special location conditions be written in encyclopedia text, when autogenerated effects descriptions are enabled, even if those items have no actual effectsgroups. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2012-01-26 20:19:22 UTC (rev 4621) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2012-01-26 20:20:42 UTC (rev 4622) @@ -535,10 +535,11 @@ general_type = UserString("ENC_SHIP_PART"); specific_type = UserString(boost::lexical_cast<std::string>(part->Class())); detailed_description = UserString(part->Description()) + "\n\n" + part->StatDescription(); - if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions") && !part->Effects().empty()) { + if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions")) { if (part->Location()) detailed_description += str(FlexibleFormat(UserString("ENC_LOCATION_CONDITION_STR")) % part->Location()->Description()); - detailed_description += str(FlexibleFormat(UserString("ENC_EFFECTS_STR")) % EffectsDescription(part->Effects())); + if (!part->Effects().empty()) + detailed_description += str(FlexibleFormat(UserString("ENC_EFFECTS_STR")) % EffectsDescription(part->Effects())); } } else if (m_items_it->first == "ENC_SHIP_HULL") { @@ -556,10 +557,11 @@ cost_units = UserString("ENC_PP"); general_type = UserString("ENC_SHIP_HULL"); detailed_description = UserString(hull->Description()) + "\n\n" + hull->StatDescription(); - if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions") && !hull->Effects().empty()) { + if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions")) { if (hull->Location()) detailed_description += str(FlexibleFormat(UserString("ENC_LOCATION_CONDITION_STR")) % hull->Location()->Description()); - detailed_description += str(FlexibleFormat(UserString("ENC_EFFECTS_STR")) % EffectsDescription(hull->Effects())); + if (!hull->Effects().empty()) + detailed_description += str(FlexibleFormat(UserString("ENC_EFFECTS_STR")) % EffectsDescription(hull->Effects())); } } else if (m_items_it->first == "ENC_TECH") { @@ -630,10 +632,11 @@ cost_units = UserString("ENC_PP"); general_type = UserString("ENC_BUILDING_TYPE"); detailed_description = UserString(building_type->Description()); - if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions") && !building_type->Effects().empty()) { + if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions")) { if (building_type->Location()) detailed_description += str(FlexibleFormat(UserString("ENC_LOCATION_CONDITION_STR")) % building_type->Location()->Description()); - detailed_description += str(FlexibleFormat(UserString("ENC_EFFECTS_STR")) % EffectsDescription(building_type->Effects())); + if (!building_type->Effects().empty()) + detailed_description += str(FlexibleFormat(UserString("ENC_EFFECTS_STR")) % EffectsDescription(building_type->Effects())); } } else if (m_items_it->first == "ENC_SPECIAL") { @@ -682,10 +685,11 @@ detailed_description += "\n"; } - if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions") && !special->Effects().empty()) { + if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions")) { if (special->Location()) detailed_description += str(FlexibleFormat(UserString("ENC_LOCATION_CONDITION_STR")) % special->Location()->Description()); - detailed_description += str(FlexibleFormat(UserString("ENC_EFFECTS_STR")) % EffectsDescription(special->Effects())); + if (!special->Effects().empty()) + detailed_description += str(FlexibleFormat(UserString("ENC_EFFECTS_STR")) % EffectsDescription(special->Effects())); } } else if (m_items_it->first == "ENC_EMPIRE") { |
From: <geo...@us...> - 2012-02-13 08:16:15
|
Revision: 4643 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=4643&view=rev Author: geoffthemedio Date: 2012-02-13 08:16:04 +0000 (Mon, 13 Feb 2012) Log Message: ----------- Fixed encyclopedia panel fallback icon when an incomplete design doesn't have a specified icon (which is always, as there's presently no way to specify one in the UI). Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2012-02-13 08:11:57 UTC (rev 4642) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2012-02-13 08:16:04 UTC (rev 4643) @@ -915,9 +915,11 @@ // incomplete design. not yet in game universe; being created on design screen name = incomplete_design->Name(); - texture = ClientUI::GetTexture(ClientUI::ArtDir() / incomplete_design->Icon(), true); - if (!texture) + const std::string& design_icon = incomplete_design->Icon(); + if (design_icon.empty()) texture = ClientUI::HullIcon(incomplete_design->Hull()); + else + texture = ClientUI::GetTexture(ClientUI::ArtDir() / design_icon, true); turns = incomplete_design->ProductionTime(); cost = incomplete_design->ProductionCost(); |
From: <geo...@us...> - 2012-11-18 10:46:52
|
Revision: 5432 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5432&view=rev Author: geoffthemedio Date: 2012-11-18 10:46:46 +0000 (Sun, 18 Nov 2012) Log Message: ----------- Alphabetized most encyclopedia lists. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2012-11-18 09:20:18 UTC (rev 5431) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2012-11-18 10:46:46 UTC (rev 5432) @@ -55,39 +55,39 @@ const Encyclopedia& encyclopedia = GetEncyclopedia(); const Universe& universe = GetUniverse(); int client_empire_id = HumanClientApp::GetApp()->EmpireID(); - const ObjectMap& objects = (client_empire_id != ALL_EMPIRES) ? - universe.EmpireKnownObjects(client_empire_id) : - universe.Objects(); + const ObjectMap& objects = Objects(); + std::multimap<std::string, std::string> sorted_entries_list; + if (dir_name == "ENC_INDEX") { - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SHIP_PART") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SHIP_HULL") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_TECH") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_BUILDING_TYPE") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SPECIAL") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SPECIES") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_EMPIRE") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SHIP_DESIGN") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SHIP") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_MONSTER") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_FLEET") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_PLANET") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_BUILDING") + "\n"; - retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SYSTEM") + "\n"; + sorted_entries_list.insert(std::make_pair(UserString("ENC_SHIP_PART"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SHIP_PART") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_SHIP_HULL"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SHIP_HULL") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_TECH"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_TECH") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_BUILDING_TYPE"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_BUILDING_TYPE") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_SPECIAL"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SPECIAL") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_SPECIES"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SPECIES") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_EMPIRE"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_EMPIRE") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_SHIP_DESIGN"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SHIP_DESIGN") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_SHIP"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SHIP") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_MONSTER"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_MONSTER") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_FLEET"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_FLEET") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_PLANET"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_PLANET") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_BUILDING"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_BUILDING") + "\n")); + sorted_entries_list.insert(std::make_pair(UserString("ENC_SYSTEM"), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, "ENC_SYSTEM") + "\n")); for (std::map<std::string, std::vector<EncyclopediaArticle> >::const_iterator it = encyclopedia.articles.begin(); it != encyclopedia.articles.end(); ++it) - { retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, it->first) + "\n"; } + { sorted_entries_list.insert(std::make_pair(UserString(it->first), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, it->first) + "\n")); } } else if (dir_name == "ENC_SHIP_PART") { const PartTypeManager& part_type_manager = GetPartTypeManager(); for (PartTypeManager::iterator it = part_type_manager.begin(); it != part_type_manager.end(); ++it) - retval += LinkTaggedText(VarText::SHIP_PART_TAG, it->first) + "\n"; + sorted_entries_list.insert(std::make_pair(UserString(it->first), LinkTaggedText(VarText::SHIP_PART_TAG, it->first) + "\n")); } else if (dir_name == "ENC_SHIP_HULL") { const HullTypeManager& hull_type_manager = GetHullTypeManager(); for (HullTypeManager::iterator it = hull_type_manager.begin(); it != hull_type_manager.end(); ++it) - retval += LinkTaggedText(VarText::SHIP_HULL_TAG, it->first) + "\n"; + sorted_entries_list.insert(std::make_pair(UserString(it->first), LinkTaggedText(VarText::SHIP_HULL_TAG, it->first) + "\n")); } else if (dir_name == "ENC_TECH") { std::vector<std::string> tech_names = GetTechManager().TechNames(); @@ -96,37 +96,40 @@ for (std::vector<std::string>::const_iterator it = tech_names.begin(); it != tech_names.end(); ++it) userstring_tech_names[UserString(*it)] = *it; for (std::map<std::string, std::string>::const_iterator it = userstring_tech_names.begin(); it != userstring_tech_names.end(); ++it) - retval += LinkTaggedText(VarText::TECH_TAG, it->second) + "\n"; + sorted_entries_list.insert(std::make_pair(UserString(it->first), LinkTaggedText(VarText::TECH_TAG, it->second) + "\n")); } else if (dir_name == "ENC_BUILDING_TYPE") { const BuildingTypeManager& building_type_manager = GetBuildingTypeManager(); for (BuildingTypeManager::iterator it = building_type_manager.begin(); it != building_type_manager.end(); ++it) - retval += LinkTaggedText(VarText::BUILDING_TYPE_TAG, it->first) + "\n"; + sorted_entries_list.insert(std::make_pair(UserString(it->first), LinkTaggedText(VarText::BUILDING_TYPE_TAG, it->first) + "\n")); } else if (dir_name == "ENC_SPECIAL") { const std::vector<std::string> special_names = SpecialNames(); for (std::vector<std::string>::const_iterator it = special_names.begin(); it != special_names.end(); ++it) - retval += LinkTaggedText(VarText::SPECIAL_TAG, *it) + "\n"; + sorted_entries_list.insert(std::make_pair(UserString(*it), LinkTaggedText(VarText::SPECIAL_TAG, *it) + "\n")); } else if (dir_name == "ENC_SPECIES") { const SpeciesManager& species_manager = GetSpeciesManager(); for (SpeciesManager::iterator it = species_manager.begin(); it != species_manager.end(); ++it) - retval += LinkTaggedText(VarText::SPECIES_TAG, it->first) + "\n"; + sorted_entries_list.insert(std::make_pair(UserString(it->first), LinkTaggedText(VarText::SPECIES_TAG, it->first) + "\n")); } else if (dir_name == "ENC_EMPIRE") { const EmpireManager& empire_manager = Empires(); for (EmpireManager::const_iterator it = empire_manager.begin(); it != empire_manager.end(); ++it) - retval += LinkTaggedIDText(VarText::EMPIRE_ID_TAG, it->first, it->second->Name()) + "\n"; + sorted_entries_list.insert(std::make_pair(UserString(it->second->Name()), LinkTaggedIDText(VarText::EMPIRE_ID_TAG, it->first, it->second->Name()) + "\n")); } else if (dir_name == "ENC_SHIP_DESIGN") { for (Universe::ship_design_iterator it = universe.beginShipDesigns(); it != universe.endShipDesigns(); ++it) if (!it->second->IsMonster()) - retval += LinkTaggedIDText(VarText::DESIGN_ID_TAG, it->first, it->second->Name()) + "\n"; + sorted_entries_list.insert(std::make_pair(UserString(it->second->Name()), LinkTaggedIDText(VarText::DESIGN_ID_TAG, it->first, it->second->Name()) + "\n")); } else if (dir_name == "ENC_SHIP") { std::vector<const Ship*> ships = objects.FindObjects<Ship>(); - for (std::vector<const Ship*>::const_iterator ship_it = ships.begin(); ship_it != ships.end(); ++ship_it) - retval += LinkTaggedIDText(VarText::SHIP_ID_TAG, (*ship_it)->ID(), (*ship_it)->Name()) + " "; + for (std::vector<const Ship*>::const_iterator ship_it = ships.begin(); ship_it != ships.end(); ++ship_it) { + const Ship* ship = *ship_it; + const std::string& ship_name = ship->PublicName(client_empire_id); + sorted_entries_list.insert(std::make_pair(ship_name, LinkTaggedIDText(VarText::SHIP_ID_TAG, ship->ID(), ship_name) + " ")); + } } else if (dir_name == "ENC_MONSTER") { // monster objects @@ -137,8 +140,11 @@ monsters.push_back(*ship_it); if (!monsters.empty()) { retval += UserString("MONSTER_OBJECTS"); - for (std::vector<const Ship*>::const_iterator ship_it = monsters.begin(); ship_it != monsters.end(); ++ship_it) - retval += LinkTaggedIDText(VarText::SHIP_ID_TAG, (*ship_it)->ID(), (*ship_it)->Name()) + " "; + for (std::vector<const Ship*>::const_iterator ship_it = monsters.begin(); ship_it != monsters.end(); ++ship_it) { + const Ship* ship = *ship_it; + const std::string& ship_name = ship->PublicName(client_empire_id); + retval += LinkTaggedIDText(VarText::SHIP_ID_TAG, ship->ID(), ship_name) + " "; + } } else { retval += UserString("NO_MONSTER_OBJECTS"); } @@ -147,29 +153,38 @@ retval += "\n\n" + UserString("MONSTER_TYPES") + "\n"; for (Universe::ship_design_iterator it = universe.beginShipDesigns(); it != universe.endShipDesigns(); ++it) if (it->second->IsMonster()) - retval += LinkTaggedIDText(VarText::DESIGN_ID_TAG, it->first, it->second->Name()) + "\n"; + sorted_entries_list.insert(std::make_pair(UserString(it->second->Name()), LinkTaggedIDText(VarText::DESIGN_ID_TAG, it->first, it->second->Name()) + "\n")); } else if (dir_name == "ENC_FLEET") { std::vector<const Fleet*> fleets = objects.FindObjects<Fleet>(); - for (std::vector<const Fleet*>::const_iterator fleet_it = fleets.begin(); fleet_it != fleets.end(); ++fleet_it) - retval += LinkTaggedIDText(VarText::FLEET_ID_TAG, (*fleet_it)->ID(), (*fleet_it)->PublicName(client_empire_id)) + " "; + for (std::vector<const Fleet*>::const_iterator fleet_it = fleets.begin(); fleet_it != fleets.end(); ++fleet_it) { + const Fleet* fleet = *fleet_it; + const std::string& flt_name = fleet->PublicName(client_empire_id); + sorted_entries_list.insert(std::make_pair(flt_name, LinkTaggedIDText(VarText::FLEET_ID_TAG, fleet->ID(), flt_name) + " ")); + } } else if (dir_name == "ENC_PLANET") { std::vector<const Planet*> planets = objects.FindObjects<Planet>(); - for (std::vector<const Planet*>::const_iterator planet_it = planets.begin(); planet_it != planets.end(); ++planet_it) - retval += LinkTaggedIDText(VarText::PLANET_ID_TAG, (*planet_it)->ID(), (*planet_it)->PublicName(client_empire_id)) + " "; + for (std::vector<const Planet*>::const_iterator planet_it = planets.begin(); planet_it != planets.end(); ++planet_it) { + const Planet* planet = *planet_it; + const std::string& plt_name = planet->PublicName(client_empire_id); + sorted_entries_list.insert(std::make_pair(plt_name, LinkTaggedIDText(VarText::PLANET_ID_TAG, planet->ID(), plt_name) + " ")); + } } else if (dir_name == "ENC_BUILDING") { std::vector<const Building*> buildings = objects.FindObjects<Building>(); - for (std::vector<const Building*>::const_iterator building_it = buildings.begin(); building_it != buildings.end(); ++building_it) - retval += LinkTaggedIDText(VarText::BUILDING_ID_TAG, (*building_it)->ID(), (*building_it)->PublicName(client_empire_id)) + " "; + for (std::vector<const Building*>::const_iterator building_it = buildings.begin(); building_it != buildings.end(); ++building_it) { + const Building* building = *building_it; + const std::string& bld_name = building->PublicName(client_empire_id); + sorted_entries_list.insert(std::make_pair(bld_name, LinkTaggedIDText(VarText::BUILDING_ID_TAG, building->ID(), bld_name) + " ")); + } } else if (dir_name == "ENC_SYSTEM") { std::vector<const System*> systems = objects.FindObjects<System>(); for (std::vector<const System*>::const_iterator system_it = systems.begin(); system_it != systems.end(); ++system_it) { const System* system = *system_it; - std::string sys_name = system->ApparentName(client_empire_id); - retval += LinkTaggedIDText(VarText::SYSTEM_ID_TAG, (*system_it)->ID(), sys_name) + " "; + const std::string& sys_name = system->ApparentName(client_empire_id); + sorted_entries_list.insert(std::make_pair(sys_name, LinkTaggedIDText(VarText::SYSTEM_ID_TAG, system->ID(), sys_name) + " ")); } } else { @@ -179,9 +194,15 @@ const std::vector<EncyclopediaArticle>& articles = category_it->second; for (std::vector<EncyclopediaArticle>::const_iterator article_it = articles.begin(); article_it != articles.end(); ++article_it) - { retval += LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, article_it->name) + "\n"; } + { sorted_entries_list.insert(std::make_pair(UserString(article_it->name), LinkTaggedText(TextLinker::ENCYCLOPEDIA_TAG, article_it->name) + "\n")); } } } + + // add sorted entries + for (std::multimap<std::string, std::string>::const_iterator it = sorted_entries_list.begin(); + it != sorted_entries_list.end(); ++it) + { retval += it->second; } + return retval; } } |
From: <geo...@us...> - 2013-02-09 07:33:33
|
Revision: 5737 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5737&view=rev Author: geoffthemedio Date: 2013-02-09 07:33:26 +0000 (Sat, 09 Feb 2013) Log Message: ----------- -Patch by yandonman to show in the colonization report for a planet the species already on the planet even if they are unable to colonize more planets. -grooming Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-02-09 05:18:36 UTC (rev 5736) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-02-09 07:33:26 UTC (rev 5737) @@ -1123,7 +1123,7 @@ return; } } - } else if (m_items_it->first == PLANET_SUITABILITY_REPORT) { + } else if (m_items_it->first == PLANET_SUITABILITY_REPORT) { general_type = UserString("SP_PLANET_SUITABILITY"); int planet_id = boost::lexical_cast<int>(m_items_it->second); @@ -1135,15 +1135,15 @@ int empire_id = HumanClientApp::GetApp()->EmpireID(); Empire* empire = HumanClientApp::GetApp()->Empires().Lookup(empire_id); - if (!empire) { + if (!empire) { return; - } + } const std::vector<int> pop_center_ids = empire->GetPopulationPool().PopCenterIDs(); std::set<std::string> species_names; std::map<std::string, std::pair<PlanetEnvironment, float> > population_counts; - //Collect species colonizing/environment hospitality information + // Collect species colonizing/environment hospitality information for (std::vector<int>::const_iterator it = pop_center_ids.begin(); it != pop_center_ids.end(); it++) { const UniverseObject* obj = objects.Object(*it); const PopCenter* pc = dynamic_cast<const PopCenter*>(obj); @@ -1154,6 +1154,19 @@ if (species_name.empty()) continue; + const Species* species = GetSpecies(species_name); + if (!species) + continue; + + // Exclude species that can't colonize this planet (either by virtue + // of "can't produce ships" or "cannot colonize" traits) UNLESS they + // are already here (aka: it's their home planet). Showing them on + // their own planet allows comparison vs other races, which might + // be better suited to this planet. + if (!species->CanProduceShips() || !species->CanColonize()) { + if (species_name != planet->SpeciesName()) + continue; + } species_names.insert(species_name); } @@ -1166,7 +1179,9 @@ std::string species_name_column1 = str(FlexibleFormat(UserString("ENC_SPECIES_PLANET_TYPE_SUITABILITY_COLUMN1")) % UserString(species_name)); max_species_name_column1_width = std::max(font->TextExtent(species_name_column1).x, max_species_name_column1_width); - // Setting the planet's species allows all of it meters to reflect species (and empire) properties, such as environment type preferences and tech. + // Setting the planet's species allows all of it meters to reflect + // species (and empire) properties, such as environment type + // preferences and tech. // @see also: MapWnd::UpdateMeterEstimates() planet->SetSpecies(species_name); planet->SetOwner(empire_id); @@ -1181,7 +1196,7 @@ double planet_capacity = ((planet_environment == PE_UNINHABITABLE) ? 0 : planet->CurrentMeterValue(METER_TARGET_POPULATION)); population_counts[species_name].first = planet_environment; - population_counts[species_name].second = planet_capacity; + population_counts[species_name].second = planet_capacity; } std::multimap<float, std::pair<std::string, PlanetEnvironment> > target_population_species; @@ -1208,7 +1223,7 @@ } detailed_description += str(FlexibleFormat(UserString("ENC_SPECIES_PLANET_TYPE_SUITABILITY")) - % species_name_column1 + % species_name_column1 % UserString(boost::lexical_cast<std::string>(it->second.second)) % (GG::RgbaTag(ClientUI::StatIncrColor()) + DoubleToString(it->first, 2, true) + "</rgba>") ); |
From: <geo...@us...> - 2013-02-10 05:53:57
|
Revision: 5744 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5744&view=rev Author: geoffthemedio Date: 2013-02-10 05:53:48 +0000 (Sun, 10 Feb 2013) Log Message: ----------- Species links in planet suitability report, by yandonman. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-02-10 04:46:20 UTC (rev 5743) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-02-10 05:53:48 UTC (rev 5744) @@ -1210,7 +1210,7 @@ for (std::multimap<float, std::pair<std::string, PlanetEnvironment> >::const_reverse_iterator it = target_population_species.rbegin(); it != target_population_species.rend(); it++) { std::string user_species_name = UserString(it->second.first); - std::string species_name_column1 = str(FlexibleFormat(UserString("ENC_SPECIES_PLANET_TYPE_SUITABILITY_COLUMN1")) % user_species_name); + std::string species_name_column1 = str(FlexibleFormat(UserString("ENC_SPECIES_PLANET_TYPE_SUITABILITY_COLUMN1")) % LinkTaggedText(VarText::SPECIES_TAG, it->second.first)); while (font->TextExtent(species_name_column1).x < max_species_name_column1_width) { species_name_column1 += "\t"; |
From: <geo...@us...> - 2013-03-16 10:57:26
|
Revision: 5869 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5869&view=rev Author: geoffthemedio Date: 2013-03-16 10:57:19 +0000 (Sat, 16 Mar 2013) Log Message: ----------- Added prerequisites and unlocked techs to tech descriptions in pedia. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-03-16 05:30:22 UTC (rev 5868) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-03-16 10:57:19 UTC (rev 5869) @@ -688,14 +688,37 @@ % UserString(boost::lexical_cast<std::string>(tech->Type())) % UserString(tech->ShortDescription())); - detailed_description = UserString(tech->Description()); - if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions") && !tech->Effects().empty()) { - detailed_description += str(FlexibleFormat(UserString("ENC_EFFECTS_STR")) % EffectsDescription(tech->Effects())); + const std::set<std::string>& unlocked_by_techs = tech->Prerequisites(); + if (!unlocked_by_techs.empty()) { + detailed_description += UserString("ENC_UNLOCKED_BY"); + for (std::set<std::string>::const_iterator it = unlocked_by_techs.begin(); + it != unlocked_by_techs.end(); ++it) + { + std::string link_text = LinkTaggedText(VarText::TECH_TAG, *it); + detailed_description += str(FlexibleFormat(UserString("ENC_TECH_DETAIL_UNLOCKED_ITEM_STR")) + % UserString("UIT_TECH") + % link_text); + } + detailed_description += "\n"; } + const std::set<std::string>& unlocked_techs = tech->UnlockedTechs(); const std::vector<ItemSpec>& unlocked_items = tech->UnlockedItems(); + if (!unlocked_techs.empty() || !unlocked_items.empty()) + detailed_description += UserString("ENC_UNLOCKS"); + + if (!unlocked_techs.empty()) { + for (std::set<std::string>::const_iterator it = unlocked_techs.begin(); + it != unlocked_techs.end(); ++it) + { + std::string link_text = LinkTaggedText(VarText::TECH_TAG, *it); + detailed_description += str(FlexibleFormat(UserString("ENC_TECH_DETAIL_UNLOCKED_ITEM_STR")) + % UserString("UIT_TECH") + % link_text); + } + } + if (!unlocked_items.empty()) { - detailed_description += UserString("ENC_TECH_DETAIL_UNLOCKS_SECTION_STR"); for (unsigned int i = 0; i < unlocked_items.size(); ++i) { const ItemSpec& item = unlocked_items[i]; @@ -721,6 +744,15 @@ } } + if (!unlocked_techs.empty() || !unlocked_items.empty()) + detailed_description += "\n"; + + detailed_description += UserString(tech->Description()); + + if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions") && !tech->Effects().empty()) { + detailed_description += str(FlexibleFormat(UserString("ENC_EFFECTS_STR")) % EffectsDescription(tech->Effects())); + } + } else if (m_items_it->first == "ENC_BUILDING_TYPE") { const BuildingType* building_type = GetBuildingType(m_items_it->second); if (!building_type) { @@ -1358,7 +1390,6 @@ AddItem(TextLinker::ENCYCLOPEDIA_TAG, (text.empty() || !lookup_in_stringtable) ? text : UserString(text)); } - void EncyclopediaDetailPanel::SetPlanet(int planet_id) { int current_item_id = INVALID_OBJECT_ID; |
From: <geo...@us...> - 2013-03-18 07:53:06
|
Revision: 5879 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5879&view=rev Author: geoffthemedio Date: 2013-03-18 07:52:57 +0000 (Mon, 18 Mar 2013) Log Message: ----------- Layout tweaks. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-03-18 07:16:55 UTC (rev 5878) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-03-18 07:52:57 UTC (rev 5879) @@ -621,7 +621,6 @@ general_type = UserString("ENC_SHIP_PART"); specific_type = UserString(boost::lexical_cast<std::string>(part->Class())); - detailed_description = UserString(part->Description()) + "\n\n" + part->StatDescription(); std::vector<std::string> unlocked_by_techs = TechsThatUnlockItem(ItemSpec(UIT_SHIP_PART, m_items_it->second)); if (!unlocked_by_techs.empty()) { detailed_description += UserString("ENC_UNLOCKED_BY"); @@ -630,6 +629,8 @@ { detailed_description += LinkTaggedText(VarText::TECH_TAG, *unlock_tech_it) + " "; } } + detailed_description = UserString(part->Description()) + "\n\n" + part->StatDescription(); + if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions")) { if (part->Location()) detailed_description += str(FlexibleFormat(UserString("ENC_LOCATION_CONDITION_STR")) % part->Location()->Description()); @@ -652,7 +653,7 @@ cost = hull->ProductionCost(client_empire_id, default_location_id); cost_units = UserString("ENC_PP"); general_type = UserString("ENC_SHIP_HULL"); - detailed_description = UserString(hull->Description()) + "\n\n" + hull->StatDescription(); + std::vector<std::string> unlocked_by_techs = TechsThatUnlockItem(ItemSpec(UIT_SHIP_HULL, m_items_it->second)); if (!unlocked_by_techs.empty()) { detailed_description += UserString("ENC_UNLOCKED_BY"); @@ -661,6 +662,8 @@ { detailed_description += LinkTaggedText(VarText::TECH_TAG, *unlock_tech_it) + " "; } } + detailed_description += UserString(hull->Description()) + "\n\n" + hull->StatDescription(); + if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions")) { if (hull->Location()) detailed_description += str(FlexibleFormat(UserString("ENC_LOCATION_CONDITION_STR")) % hull->Location()->Description()); @@ -768,7 +771,7 @@ cost = building_type->ProductionCost(client_empire_id, default_location_id); cost_units = UserString("ENC_PP"); general_type = UserString("ENC_BUILDING_TYPE"); - detailed_description = UserString(building_type->Description()); + std::vector<std::string> unlocked_by_techs = TechsThatUnlockItem(ItemSpec(UIT_BUILDING, m_items_it->second)); if (!unlocked_by_techs.empty()) { detailed_description += UserString("ENC_UNLOCKED_BY"); @@ -777,6 +780,8 @@ { detailed_description += LinkTaggedText(VarText::TECH_TAG, *unlock_tech_it) + " "; } } + detailed_description += UserString(building_type->Description()); + if (GetOptionsDB().Get<bool>("UI.autogenerated-effects-descriptions")) { if (building_type->Location()) detailed_description += str(FlexibleFormat(UserString("ENC_LOCATION_CONDITION_STR")) % building_type->Location()->Description()); |
From: <geo...@us...> - 2013-03-18 09:57:30
|
Revision: 5883 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5883&view=rev Author: geoffthemedio Date: 2013-03-18 09:57:24 +0000 (Mon, 18 Mar 2013) Log Message: ----------- Another layout tweak. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-03-18 09:39:20 UTC (rev 5882) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-03-18 09:57:24 UTC (rev 5883) @@ -780,6 +780,7 @@ for (std::vector<std::string>::const_iterator unlock_tech_it = unlocked_by_techs.begin(); unlock_tech_it != unlocked_by_techs.end(); ++unlock_tech_it) { detailed_description += LinkTaggedText(VarText::TECH_TAG, *unlock_tech_it) + " "; } + detailed_description += "\n\n"; } detailed_description += UserString(building_type->Description()); |
From: <geo...@us...> - 2013-03-18 11:11:48
|
Revision: 5885 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5885&view=rev Author: geoffthemedio Date: 2013-03-18 11:11:38 +0000 (Mon, 18 Mar 2013) Log Message: ----------- Made unlocked by tech formatting more consistent. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-03-18 11:00:35 UTC (rev 5884) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-03-18 11:11:38 UTC (rev 5885) @@ -698,13 +698,8 @@ detailed_description += UserString("ENC_UNLOCKED_BY"); for (std::set<std::string>::const_iterator it = unlocked_by_techs.begin(); it != unlocked_by_techs.end(); ++it) - { - std::string link_text = LinkTaggedText(VarText::TECH_TAG, *it); - detailed_description += str(FlexibleFormat(UserString("ENC_TECH_DETAIL_UNLOCKED_ITEM_STR")) - % UserString("UIT_TECH") - % link_text); - } - detailed_description += "\n"; + { detailed_description += LinkTaggedText(VarText::TECH_TAG, *it) + " "; } + detailed_description += "\n\n"; } const std::set<std::string>& unlocked_techs = tech->UnlockedTechs(); |
From: <geo...@us...> - 2013-04-07 10:53:30
|
Revision: 5960 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5960&view=rev Author: geoffthemedio Date: 2013-04-07 10:53:21 +0000 (Sun, 07 Apr 2013) Log Message: ----------- Fixed close button rendering on pedia window. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-04-07 10:16:09 UTC (rev 5959) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-04-07 10:53:21 UTC (rev 5960) @@ -268,7 +268,7 @@ AttachChild(m_back_button); AttachChild(m_next_button); - SetChildClippingMode(ClipToClientAndWindowSeparately); + SetChildClippingMode(ClipToWindow); DoLayout(); @@ -332,6 +332,7 @@ ul = lr - GG::Pt(GG::X(ICON_SIZE), GG::Y(ICON_SIZE)); m_other_icon->SizeMove(ul, lr); } + MoveChildUp(m_close_button); // so it's over top of the top-right icon } void EncyclopediaDetailPanel::SizeMove(const GG::Pt& ul, const GG::Pt& lr) { @@ -1658,7 +1659,7 @@ Refresh(); } -void EncyclopediaDetailPanel::CloseClicked() +void EncyclopediaDetailPanel::CloseClicked() { ClosingSignal(); } Encyclopedia::Encyclopedia() : |
From: <geo...@us...> - 2013-05-18 23:02:54
|
Revision: 6045 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=6045&view=rev Author: geoffthemedio Date: 2013-05-18 23:02:48 +0000 (Sat, 18 May 2013) Log Message: ----------- Fixed combat log entries when one of the objects is unknown to the local client. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-05-18 23:01:34 UTC (rev 6044) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-05-18 23:02:48 UTC (rev 6045) @@ -1349,14 +1349,24 @@ it != log.attack_events.end(); ++it) { const UniverseObject* attacker = objects.Object(it->attacker_id); - const std::string& attacker_name = (attacker ? attacker->PublicName(client_empire_id) : UserString("ENC_COMBAT_UNKNOWN_OBJECT")); - const std::string& attacker_tag = LinkTag(attacker ? attacker->ObjectType() : INVALID_UNIVERSE_OBJECT_TYPE); - std::string attacker_link = LinkTaggedIDText(attacker_tag, it->attacker_id, attacker_name); + std::string attacker_link; + if (attacker) { + const std::string& attacker_name = attacker->PublicName(client_empire_id); + const std::string& attacker_tag = LinkTag(attacker->ObjectType()); + attacker_link = LinkTaggedIDText(attacker_tag, it->attacker_id, attacker_name); + } else { + attacker_link = UserString("ENC_COMBAT_UNKNOWN_OBJECT"); + } const UniverseObject* target = objects.Object(it->target_id); - const std::string& target_name = (target ? target->PublicName(client_empire_id) : UserString("ENC_COMBAT_UNKNOWN_OBJECT")); - const std::string& target_tag = LinkTag(target ? target->ObjectType() : INVALID_UNIVERSE_OBJECT_TYPE); - std::string target_link = LinkTaggedIDText(target_tag, it->target_id, target_name); + std::string target_link; + if (target) { + const std::string& target_name = target->PublicName(client_empire_id); + const std::string& target_tag = LinkTag(target->ObjectType()); + target_link = LinkTaggedIDText(target_tag, it->target_id, target_name); + } else { + target_link = UserString("ENC_COMBAT_UNKNOWN_OBJECT"); + } const std::string& template_str = (it->target_destroyed ? UserString("ENC_COMBAT_ATTACK_DESTROY_STR") : |
From: <geo...@us...> - 2013-05-23 02:56:40
|
Revision: 6052 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=6052&view=rev Author: geoffthemedio Date: 2013-05-23 02:56:32 +0000 (Thu, 23 May 2013) Log Message: ----------- Tweaked back / up / forward button size, making them less distorted. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-05-23 02:48:01 UTC (rev 6051) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-05-23 02:56:32 UTC (rev 6052) @@ -285,7 +285,7 @@ const int ICON_SIZE = 12 + NAME_PTS + COST_PTS + SUMMARY_PTS; - const int BTN_WIDTH = 32; + const int BTN_WIDTH = 24; // name GG::Pt ul = GG::Pt(); |
From: <geo...@us...> - 2013-06-09 06:11:16
|
Revision: 6132 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=6132&view=rev Author: geoffthemedio Date: 2013-06-09 06:11:08 +0000 (Sun, 09 Jun 2013) Log Message: ----------- Grooming / FindObjects to direct iteration replacement. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-06-08 21:32:26 UTC (rev 6131) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-06-09 06:11:08 UTC (rev 6132) @@ -129,20 +129,23 @@ sorted_entries_list.insert(std::make_pair(UserString(it->second->Name()), LinkTaggedIDText(VarText::DESIGN_ID_TAG, it->first, it->second->Name()) + "\n")); } else if (dir_name == "ENC_SHIP") { - std::vector<const Ship*> ships = objects.FindObjects<Ship>(); - for (std::vector<const Ship*>::const_iterator ship_it = ships.begin(); ship_it != ships.end(); ++ship_it) { - const Ship* ship = *ship_it; - const std::string& ship_name = ship->PublicName(client_empire_id); - sorted_entries_list.insert(std::make_pair(ship_name, LinkTaggedIDText(VarText::SHIP_ID_TAG, ship->ID(), ship_name) + " ")); + for (ObjectMap::const_iterator<Ship> ship_it = objects.const_begin<Ship>(); + ship_it != objects.const_end<Ship>(); ++ship_it) + { + const std::string& ship_name = ship_it->PublicName(client_empire_id); + sorted_entries_list.insert(std::make_pair(ship_name, + LinkTaggedIDText(VarText::SHIP_ID_TAG, ship_it->ID(), ship_name) + " ")); } } else if (dir_name == "ENC_MONSTER") { // monster objects - std::vector<const Ship*> ships = objects.FindObjects<Ship>(); std::vector<const Ship*> monsters; - for (std::vector<const Ship*>::const_iterator ship_it = ships.begin(); ship_it != ships.end(); ++ship_it) - if ((*ship_it)->IsMonster()) + for (ObjectMap::const_iterator<Ship> ship_it = objects.const_begin<Ship>(); + ship_it != objects.const_end<Ship>(); ++ship_it) + { + if (ship_it->IsMonster()) monsters.push_back(*ship_it); + } if (!monsters.empty()) { retval += UserString("MONSTER_OBJECTS"); for (std::vector<const Ship*>::const_iterator ship_it = monsters.begin(); ship_it != monsters.end(); ++ship_it) { @@ -161,35 +164,39 @@ sorted_entries_list.insert(std::make_pair(UserString(it->second->Name()), LinkTaggedIDText(VarText::DESIGN_ID_TAG, it->first, it->second->Name()) + "\n")); } else if (dir_name == "ENC_FLEET") { - std::vector<const Fleet*> fleets = objects.FindObjects<Fleet>(); - for (std::vector<const Fleet*>::const_iterator fleet_it = fleets.begin(); fleet_it != fleets.end(); ++fleet_it) { - const Fleet* fleet = *fleet_it; - const std::string& flt_name = fleet->PublicName(client_empire_id); - sorted_entries_list.insert(std::make_pair(flt_name, LinkTaggedIDText(VarText::FLEET_ID_TAG, fleet->ID(), flt_name) + " ")); + for (ObjectMap::const_iterator<Fleet> fleet_it = objects.const_begin<Fleet>(); + fleet_it != objects.const_end<Fleet>(); ++fleet_it) + { + const std::string& flt_name = fleet_it->PublicName(client_empire_id); + sorted_entries_list.insert(std::make_pair(flt_name, + LinkTaggedIDText(VarText::FLEET_ID_TAG, fleet_it->ID(), flt_name) + " ")); } } else if (dir_name == "ENC_PLANET") { - std::vector<const Planet*> planets = objects.FindObjects<Planet>(); - for (std::vector<const Planet*>::const_iterator planet_it = planets.begin(); planet_it != planets.end(); ++planet_it) { - const Planet* planet = *planet_it; - const std::string& plt_name = planet->PublicName(client_empire_id); - sorted_entries_list.insert(std::make_pair(plt_name, LinkTaggedIDText(VarText::PLANET_ID_TAG, planet->ID(), plt_name) + " ")); + for (ObjectMap::const_iterator<Planet> planet_it = objects.const_begin<Planet>(); + planet_it != objects.const_end<Planet>(); ++planet_it) + { + const std::string& plt_name = planet_it->PublicName(client_empire_id); + sorted_entries_list.insert(std::make_pair(plt_name, + LinkTaggedIDText(VarText::PLANET_ID_TAG, planet_it->ID(), plt_name) + " ")); } } else if (dir_name == "ENC_BUILDING") { - std::vector<const Building*> buildings = objects.FindObjects<Building>(); - for (std::vector<const Building*>::const_iterator building_it = buildings.begin(); building_it != buildings.end(); ++building_it) { - const Building* building = *building_it; - const std::string& bld_name = building->PublicName(client_empire_id); - sorted_entries_list.insert(std::make_pair(bld_name, LinkTaggedIDText(VarText::BUILDING_ID_TAG, building->ID(), bld_name) + " ")); + for (ObjectMap::const_iterator<Building> building_it = objects.const_begin<Building>(); + building_it != objects.const_end<Building>(); ++building_it) + { + const std::string& bld_name = building_it->PublicName(client_empire_id); + sorted_entries_list.insert(std::make_pair(bld_name, + LinkTaggedIDText(VarText::BUILDING_ID_TAG, building_it->ID(), bld_name) + " ")); } } else if (dir_name == "ENC_SYSTEM") { - std::vector<const System*> systems = objects.FindObjects<System>(); - for (std::vector<const System*>::const_iterator system_it = systems.begin(); system_it != systems.end(); ++system_it) { - const System* system = *system_it; - const std::string& sys_name = system->ApparentName(client_empire_id); - sorted_entries_list.insert(std::make_pair(sys_name, LinkTaggedIDText(VarText::SYSTEM_ID_TAG, system->ID(), sys_name) + " ")); + for (ObjectMap::const_iterator<System> system_it = objects.const_begin<System>(); + system_it != objects.const_end<System>(); ++system_it) + { + const std::string& sys_name = system_it->ApparentName(client_empire_id); + sorted_entries_list.insert(std::make_pair(sys_name, + LinkTaggedIDText(VarText::SYSTEM_ID_TAG, system_it->ID(), sys_name) + " ")); } } else { |
From: <geo...@us...> - 2013-07-27 12:39:02
|
Revision: 6274 http://sourceforge.net/p/freeorion/code/6274 Author: geoffthemedio Date: 2013-07-27 12:38:59 +0000 (Sat, 27 Jul 2013) Log Message: ----------- -Similar to previous commit, setting planet initial target population to 0 before doing estimates, this time for planet suitability report. -Removed recently-added special case discrepancy code. -grooming Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-07-27 12:14:32 UTC (rev 6273) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-07-27 12:38:59 UTC (rev 6274) @@ -1259,6 +1259,7 @@ std::string original_planet_species = planet->SpeciesName(); int original_owner_id = planet->Owner(); + float orig_initial_target_pop = planet->GetMeter(METER_TARGET_POPULATION)->Initial(); name = planet->PublicName(planet_id); int empire_id = HumanClientApp::GetApp()->EmpireID(); @@ -1300,9 +1301,10 @@ boost::shared_ptr<GG::Font> font = ClientUI::GetFont(); GG::X max_species_name_column1_width(0); - std::vector<int> planet_vec(1, planet_id); - for (std::set<std::string>::const_iterator it = species_names.begin(); it != species_names.end(); it++) { + for (std::set<std::string>::const_iterator it = species_names.begin(); + it != species_names.end(); it++) + { std::string species_name = *it; std::string species_name_column1 = str(FlexibleFormat(UserString("ENC_SPECIES_PLANET_TYPE_SUITABILITY_COLUMN1")) % UserString(species_name)); @@ -1314,60 +1316,39 @@ // @see also: MapWnd::UpdateMeterEstimates() planet->SetSpecies(species_name); planet->SetOwner(empire_id); + planet->GetMeter(METER_TARGET_POPULATION)->Set(0.0, 0.0); + GetUniverse().UpdateMeterEstimates(planet_id); - //GetUniverse().UpdateMeterEstimates(planet_id); - GetUniverse().ApplyMeterEffectsAndUpdateMeters(planet_vec); //use this instead of simple UpdateMeterEstimates so that clamping is done - const Species* species = GetSpecies(species_name); PlanetEnvironment planet_environment = PE_UNINHABITABLE; if (species) planet_environment = species->GetPlanetEnvironment(planet->Type()); - double planet_capacity = 0.0; - if (planet_environment != PE_UNINHABITABLE) { - planet_capacity = planet->CurrentMeterValue(METER_TARGET_POPULATION); - //TODO: use the AccountingInfo below to make a tooltip instead of logging - float discrepancy = 0; - const Effect::AccountingMap& effect_accounting_map = GetUniverse().GetEffectAccountingMap(); - Effect::AccountingMap::const_iterator map_it = effect_accounting_map.find(planet_id); - if (map_it != effect_accounting_map.end()) { - const std::map<MeterType, std::vector<Effect::AccountingInfo> >& meter_map = map_it->second; - // is any effect accounting available for this indicator's meter type? - std::map<MeterType, std::vector<Effect::AccountingInfo> >::const_iterator meter_it = meter_map.find(METER_TARGET_POPULATION); - if (meter_it != meter_map.end()) { - const std::vector<Effect::AccountingInfo>& accounts = meter_it->second; - for (std::vector<Effect::AccountingInfo>::const_iterator account_it = accounts.begin(); - account_it != accounts.end(); ++account_it) - { - if (account_it->cause_type == ECT_UNKNOWN_CAUSE) - discrepancy += account_it->meter_change; - Logger().debugStream() << planet->Name() << " TargetPop Meter Detail: EffectType"<< account_it->cause_type <<"; main label: "<< - account_it->specific_cause << "; specific label: ("<<account_it->custom_label << "); change: "<< account_it->meter_change<<"; running total: "<< - account_it->running_meter_total; - } - } - } - } + double planet_capacity = ((planet_environment == PE_UNINHABITABLE) ? 0 : planet->CurrentMeterValue(METER_TARGET_POPULATION)); + population_counts[species_name].first = planet_environment; population_counts[species_name].second = planet_capacity; } std::multimap<float, std::pair<std::string, PlanetEnvironment> > target_population_species; - for (std::map<std::string, std::pair<PlanetEnvironment, float> >::const_iterator it = population_counts.begin(); - it != population_counts.end(); ++it) - { target_population_species.insert(std::make_pair(it->second.second, std::make_pair(it->first, it->second.first))); } + for (std::map<std::string, std::pair<PlanetEnvironment, float> >::const_iterator + it = population_counts.begin(); it != population_counts.end(); ++it) + { + target_population_species.insert(std::make_pair( + it->second.second, std::make_pair(it->first, it->second.first))); + } - bool positive_header_placed = false; bool negative_header_placed = false; - for (std::multimap<float, std::pair<std::string, PlanetEnvironment> >::const_reverse_iterator it = target_population_species.rbegin(); it != target_population_species.rend(); it++) { + for (std::multimap<float, std::pair<std::string, PlanetEnvironment> >::const_reverse_iterator + it = target_population_species.rbegin(); it != target_population_species.rend(); it++) + { std::string user_species_name = UserString(it->second.first); std::string species_name_column1 = str(FlexibleFormat(UserString("ENC_SPECIES_PLANET_TYPE_SUITABILITY_COLUMN1")) % LinkTaggedText(VarText::SPECIES_TAG, it->second.first)); - while (font->TextExtent(species_name_column1).x < max_species_name_column1_width) { - species_name_column1 += "\t"; - } + while (font->TextExtent(species_name_column1).x < max_species_name_column1_width) + { species_name_column1 += "\t"; } if (it->first > 0) { if (!positive_header_placed) { @@ -1400,8 +1381,8 @@ planet->SetSpecies(original_planet_species); planet->SetOwner(original_owner_id); - //GetUniverse().UpdateMeterEstimates(planet_id); - GetUniverse().ApplyMeterEffectsAndUpdateMeters(planet_vec); //use this instead of simple UpdateMeterEstimates so that clamping is done + planet->GetMeter(METER_TARGET_POPULATION)->Set(orig_initial_target_pop, orig_initial_target_pop); + GetUniverse().UpdateMeterEstimates(planet_id); } else if (m_items_it->first == COMBAT_LOG) { int log_id = boost::lexical_cast<int>(m_items_it->second); |
From: <geo...@us...> - 2013-10-15 05:54:26
|
Revision: 6452 http://sourceforge.net/p/freeorion/code/6452 Author: geoffthemedio Date: 2013-10-15 05:54:23 +0000 (Tue, 15 Oct 2013) Log Message: ----------- Title bar text for graphs in pedia. Modified Paths: -------------- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp Modified: trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-10-15 05:01:31 UTC (rev 6451) +++ trunk/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2013-10-15 05:54:23 UTC (rev 6452) @@ -1469,6 +1469,9 @@ m_graph->AutoSetRange(); m_graph->Show(); } + + name = UserString(m_items_it->second); + general_type = UserString("ENC_GRAPH"); } // Create Icons |