From: <ve...@us...> - 2014-08-24 14:38:09
|
Revision: 7604 http://sourceforge.net/p/freeorion/code/7604 Author: vezzra Date: 2014-08-24 14:38:01 +0000 (Sun, 24 Aug 2014) Log Message: ----------- Made ships of this design list in pedia only show existing ships (commit#7580 merged from trunk) Modified Paths: -------------- branches/release-0.4.4/FreeOrion/UI/EncyclopediaDetailPanel.cpp branches/release-0.4.4/FreeOrion/universe/ObjectMap.h Modified: branches/release-0.4.4/FreeOrion/UI/EncyclopediaDetailPanel.cpp =================================================================== --- branches/release-0.4.4/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2014-08-24 14:24:35 UTC (rev 7603) +++ branches/release-0.4.4/FreeOrion/UI/EncyclopediaDetailPanel.cpp 2014-08-24 14:38:01 UTC (rev 7604) @@ -1610,13 +1610,13 @@ GetUniverse().Delete(TEMPORARY_OBJECT_ID); // ships of this design - std::vector<TemporaryPtr<Ship> > all_ships = Objects().FindObjects<Ship>(); std::vector<TemporaryPtr<const Ship> > design_ships; - for (std::vector<TemporaryPtr<Ship> >::const_iterator ship_it = all_ships.begin(); - ship_it != all_ships.end(); ++ship_it) + for (std::map<int, TemporaryPtr<UniverseObject> >::iterator + ship_it = Objects().ExistingShipsBegin(); + ship_it != Objects().ExistingShipsEnd(); ++ship_it) { - TemporaryPtr<const Ship> ship = *ship_it; - if (ship->DesignID() == design_id) + TemporaryPtr<const Ship> ship = boost::dynamic_pointer_cast<const Ship>(ship_it->second); + if (ship && ship->DesignID() == design_id) design_ships.push_back(ship); } if (!design_ships.empty()) { Modified: branches/release-0.4.4/FreeOrion/universe/ObjectMap.h =================================================================== --- branches/release-0.4.4/FreeOrion/universe/ObjectMap.h 2014-08-24 14:24:35 UTC (rev 7603) +++ branches/release-0.4.4/FreeOrion/universe/ObjectMap.h 2014-08-24 14:38:01 UTC (rev 7604) @@ -33,7 +33,6 @@ /** Contains a set of objects that make up a (known or complete) Universe. */ class FO_COMMON_API ObjectMap { public: - template <class T = UniverseObject> struct iterator : private std::map<int, boost::shared_ptr<T> >::iterator { iterator(const typename std::map<int, boost::shared_ptr<T> >::iterator& base, ObjectMap& owner) : |