From: <tz...@us...> - 2009-03-27 05:05:47
|
Revision: 2939 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=2939&view=rev Author: tzlaine Date: 2009-03-27 05:05:37 +0000 (Fri, 27 Mar 2009) Log Message: ----------- Fixed a problem in the Ship ctor, in which the number of fighters of each type was being overwritten, instead of accumulated. Modified Paths: -------------- trunk/FreeOrion/universe/Ship.cpp Modified: trunk/FreeOrion/universe/Ship.cpp =================================================================== --- trunk/FreeOrion/universe/Ship.cpp 2009-03-25 14:42:28 UTC (rev 2938) +++ trunk/FreeOrion/universe/Ship.cpp 2009-03-27 05:05:37 UTC (rev 2939) @@ -36,7 +36,7 @@ std::pair<std::size_t, std::size_t>& part_fighters = m_fighters[part_names[i]]; ++part_fighters.first; - part_fighters.second = boost::get<FighterStats>(part->Stats()).m_capacity; + part_fighters.second += boost::get<FighterStats>(part->Stats()).m_capacity; } } } |
From: <tz...@us...> - 2010-03-26 01:58:44
|
Revision: 3403 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=3403&view=rev Author: tzlaine Date: 2010-03-26 01:58:38 +0000 (Fri, 26 Mar 2010) Log Message: ----------- Fixed infinite recursion in const overload of Ship::GetMeter() introduced in revision 3401. Revision Links: -------------- http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=3401&view=rev Modified Paths: -------------- trunk/FreeOrion/universe/Ship.cpp Modified: trunk/FreeOrion/universe/Ship.cpp =================================================================== --- trunk/FreeOrion/universe/Ship.cpp 2010-03-25 22:31:39 UTC (rev 3402) +++ trunk/FreeOrion/universe/Ship.cpp 2010-03-26 01:58:38 UTC (rev 3403) @@ -254,7 +254,7 @@ { return m_ordered_scrapped; } const Meter* Ship::GetMeter(MeterType type, const std::string& part_name) const -{ return const_cast<const Ship*>(this)->GetMeter(type, part_name); } +{ return const_cast<Ship*>(this)->GetMeter(type, part_name); } void Ship::SetFleetID(int fleet_id) { |
From: <geo...@us...> - 2011-10-24 00:44:51
|
Revision: 4435 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=4435&view=rev Author: geoffthemedio Date: 2011-10-24 00:44:45 +0000 (Mon, 24 Oct 2011) Log Message: ----------- -Added safety checks in Ship::Resupply for cases where a part in a design doesn't exist, similar to a missing tech in the previous commit, in order to prevent crashes. -Commented out some no-op code. Modified Paths: -------------- trunk/FreeOrion/universe/Ship.cpp Modified: trunk/FreeOrion/universe/Ship.cpp =================================================================== --- trunk/FreeOrion/universe/Ship.cpp 2011-10-24 00:42:05 UTC (rev 4434) +++ trunk/FreeOrion/universe/Ship.cpp 2011-10-24 00:44:45 UTC (rev 4435) @@ -311,12 +311,12 @@ } double Ship::NextTurnCurrentMeterValue(MeterType type) const { - if (type == INVALID_METER_TYPE || type == METER_FUEL) { - // todo: consider fleet movement or being stationary, which may parfly replenish fuel - // todo: consider fleet passing through or being in a supplied system, which replenishes fuel - } else if (type == INVALID_METER_TYPE || type == METER_SUPPLY) { - // todo: consider fleet passing through or being in a supplied system, which replenishes supplies - } + //if (type == METER_FUEL) { + // // todo: consider fleet movement or being stationary, which may partly replenish fuel + // // todo: consider fleet passing through or being in a supplied system, which replenishes fuel + //} else if (type == METER_SUPPLY) { + // // todo: consider fleet passing through or being in a supplied system, which replenishes supplies + //} return UniverseObject::NextTurnCurrentMeterValue(type); } @@ -351,27 +351,31 @@ fuel_meter->SetCurrent(max_fuel_meter->Current()); for (ConsumablesMap::iterator it = m_fighters.begin(); - it != m_fighters.end(); - ++it) { - it->second.second = - it->second.first * - boost::get<FighterStats>(GetPartType(it->first)->Stats()).m_capacity; + it != m_fighters.end(); ++it) + { + const PartType* part_type = GetPartType(it->first); + if (part_type) + it->second.second = it->second.first * + boost::get<FighterStats>(part_type->Stats()).m_capacity; } for (ConsumablesMap::iterator it = m_missiles.begin(); - it != m_missiles.end(); - ++it) { - it->second.second = - it->second.first * - boost::get<LRStats>(GetPartType(it->first)->Stats()).m_capacity; + it != m_missiles.end(); ++it) + { + const PartType* part_type = GetPartType(it->first); + if (part_type) + it->second.second = it->second.first * + boost::get<LRStats>(part_type->Stats()).m_capacity; } } void Ship::AddFighters(const std::string& part_name, std::size_t n) { + const PartType* part_type = GetPartType(part_name); + if (!part_type) return; assert(m_fighters[part_name].second + n <= m_fighters[part_name].first * - boost::get<FighterStats>(GetPartType(part_name)->Stats()).m_capacity); + boost::get<FighterStats>(part_type->Stats()).m_capacity); m_fighters[part_name].second += n; } |
From: <geo...@us...> - 2012-08-02 05:35:03
|
Revision: 5091 http://freeorion.svn.sourceforge.net/freeorion/revision/?rev=5091&view=rev Author: geoffthemedio Date: 2012-08-02 05:34:56 +0000 (Thu, 02 Aug 2012) Log Message: ----------- Removed unused function. Modified Paths: -------------- trunk/FreeOrion/universe/Ship.cpp Modified: trunk/FreeOrion/universe/Ship.cpp =================================================================== --- trunk/FreeOrion/universe/Ship.cpp 2012-08-02 05:32:26 UTC (rev 5090) +++ trunk/FreeOrion/universe/Ship.cpp 2012-08-02 05:34:56 UTC (rev 5091) @@ -9,21 +9,6 @@ #include "../Empire/Empire.h" #include "../Empire/EmpireManager.h" -namespace { - /** returns true iff one of the empires with the indiated ids can provide - * fleet supply directly or has resource connections to the system with - * the id \a system_id - * in short: decides whether a fleet gets resupplied at the indicated - * system*/ - bool FleetOrResourceSupplyableAtSystemByAnyOfEmpiresWithIDs(int system_id, const std::set<int>& owner_ids) { - for (std::set<int>::const_iterator it = owner_ids.begin(); it != owner_ids.end(); ++it) - if (const Empire* empire = Empires().Lookup(*it)) - if (empire->FleetOrResourceSupplyableAtSystem(system_id)) - return true; - return false; - } -} - class Species; const Species* GetSpecies(const std::string& name); |
From: <geo...@us...> - 2013-06-20 17:05:23
|
Revision: 6174 http://sourceforge.net/p/freeorion/code/6174 Author: geoffthemedio Date: 2013-06-20 17:05:19 +0000 (Thu, 20 Jun 2013) Log Message: ----------- grooming Modified Paths: -------------- trunk/FreeOrion/universe/Ship.cpp Modified: trunk/FreeOrion/universe/Ship.cpp =================================================================== --- trunk/FreeOrion/universe/Ship.cpp 2013-06-20 14:41:25 UTC (rev 6173) +++ trunk/FreeOrion/universe/Ship.cpp 2013-06-20 17:05:19 UTC (rev 6174) @@ -196,14 +196,14 @@ if (design) { // check hull for tag const HullType* hull = ::GetHullType(design->Hull()); - if (hull && hull->Tags().count(name)) { + if (hull && hull->Tags().count(name)) return true; - } + // check parts for tag const std::vector<std::string>& parts = design->Parts(); for (std::vector<std::string>::const_iterator part_it = parts.begin(); part_it != parts.end(); ++part_it) { const PartType* part = GetPartType(*part_it); - if(part && part->Tags().count(name)) + if (part && part->Tags().count(name)) return true; } } |