本文整理汇总了C++中Ship::RequiredCrew方法的典型用法代码示例。如果您正苦于以下问题:C++ Ship::RequiredCrew方法的具体用法?C++ Ship::RequiredCrew怎么用?C++ Ship::RequiredCrew使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Ship
的用法示例。
在下文中一共展示了Ship::RequiredCrew方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UpdateAttributes
void ShipInfoDisplay::UpdateAttributes(const Ship &ship)
{
attributeLabels.clear();
attributeValues.clear();
attributesHeight = 10;
const Outfit &attributes = ship.Attributes();
attributeLabels.push_back(string());
attributeValues.push_back(string());
attributesHeight += 10;
attributeLabels.push_back("cost:");
attributeValues.push_back(Format::Number(ship.Cost()));
attributesHeight += 20;
attributeLabels.push_back(string());
attributeValues.push_back(string());
attributesHeight += 10;
if(attributes.Get("shield generation"))
{
attributeLabels.push_back("shields charge / max:");
attributeValues.push_back(Format::Number(60. * attributes.Get("shield generation"))
+ " / " + Format::Number(attributes.Get("shields")));
}
else
{
attributeLabels.push_back("shields:");
attributeValues.push_back(Format::Number(attributes.Get("shields")));
}
attributesHeight += 20;
if(attributes.Get("hull repair rate"))
{
attributeLabels.push_back("hull repair / max:");
attributeValues.push_back(Format::Number(60. * attributes.Get("hull repair rate"))
+ " / " + Format::Number(attributes.Get("hull")));
}
else
{
attributeLabels.push_back("hull:");
attributeValues.push_back(Format::Number(attributes.Get("hull")));
}
attributesHeight += 20;
double emptyMass = attributes.Get("mass");
attributeLabels.push_back("mass with no cargo:");
attributeValues.push_back(Format::Number(emptyMass));
attributesHeight += 20;
attributeLabels.push_back("cargo space:");
attributeValues.push_back(Format::Number(attributes.Get("cargo space")));
attributesHeight += 20;
attributeLabels.push_back("required crew / bunks:");
attributeValues.push_back(Format::Number(ship.RequiredCrew())
+ " / " + Format::Number(attributes.Get("bunks")));
attributesHeight += 20;
attributeLabels.push_back("fuel capacity:");
attributeValues.push_back(Format::Number(attributes.Get("fuel capacity")));
attributesHeight += 20;
double fullMass = emptyMass + attributes.Get("cargo space");
attributeLabels.push_back(string());
attributeValues.push_back(string());
attributesHeight += 10;
attributeLabels.push_back((emptyMass == fullMass) ? "movement:" : "movement, full / no cargo:");
attributeValues.push_back(string());
attributesHeight += 20;
attributeLabels.push_back("max speed:");
attributeValues.push_back(Format::Number(60. * attributes.Get("thrust") / attributes.Get("drag")));
attributesHeight += 20;
attributeLabels.push_back("acceleration:");
if(emptyMass == fullMass)
attributeValues.push_back(Format::Number(3600. * attributes.Get("thrust") / fullMass));
else
attributeValues.push_back(Format::Number(3600. * attributes.Get("thrust") / fullMass)
+ " / " + Format::Number(3600. * attributes.Get("thrust") / emptyMass));
attributesHeight += 20;
attributeLabels.push_back("turning:");
if(emptyMass == fullMass)
attributeValues.push_back(Format::Number(60. * attributes.Get("turn") / fullMass));
else
attributeValues.push_back(Format::Number(60. * attributes.Get("turn") / fullMass)
+ " / " + Format::Number(60. * attributes.Get("turn") / emptyMass));
attributesHeight += 20;
// Find out how much outfit, engine, and weapon space the chassis has.
map<string, double> chassis;
static const string names[] = {
"outfit space free:", "outfit space",
" weapon capacity:", "weapon capacity",
" engine capacity:", "engine capacity",
"guns ports free:", "gun ports",
"turret mounts free:", "turret mounts"
};
static const int NAMES = sizeof(names) / sizeof(names[0]);
for(int i = 1; i < NAMES; i += 2)
chassis[names[i]] = attributes.Get(names[i]);
for(const auto &it : ship.Outfits())
for(auto &cit : chassis)
cit.second -= it.second * it.first->Get(cit.first);
//.........这里部分代码省略.........
示例2: TakeOff
// Load the cargo back into your ships. This may require selling excess, in
// which case a message will be returned.
void PlayerInfo::TakeOff()
{
shouldLaunch = false;
// This can only be done while landed.
if(!system || !planet)
return;
// Jobs are only available when you are landed.
availableJobs.clear();
availableMissions.clear();
doneMissions.clear();
soldOutfits.clear();
// Special persons who appeared last time you left the planet, can appear
// again.
for(const auto &it : GameData::Persons())
it.second.GetShip()->SetSystem(nullptr);
// Store the total cargo counts in case we need to adjust cost bases below.
map<string, int> originalTotals = cargo.Commodities();
Ship *flagship = Flagship();
bool canRecharge = planet->HasSpaceport() && planet->CanUseServices();
for(const shared_ptr<Ship> &ship : ships)
if(!ship->IsParked() && ship->GetSystem() == system && !ship->IsDisabled())
{
if(canRecharge)
ship->Recharge();
if(ship.get() != flagship)
{
ship->Cargo().SetBunks(ship->Attributes().Get("bunks") - ship->RequiredCrew());
cargo.TransferAll(&ship->Cargo());
}
}
if(flagship)
{
// Load up your flagship last, so that it will have space free for any
// plunder that you happen to acquire.
flagship->Cargo().SetBunks(flagship->Attributes().Get("bunks") - flagship->RequiredCrew());
cargo.TransferAll(&flagship->Cargo());
}
if(cargo.Passengers() && ships.size())
{
Ship &flagship = *ships.front();
int extra = min(cargo.Passengers(), flagship.Crew() - flagship.RequiredCrew());
if(extra)
{
flagship.AddCrew(-extra);
Messages::Add("You fired " + to_string(extra) + " crew members to free up bunks for passengers.");
flagship.Cargo().SetBunks(flagship.Attributes().Get("bunks") - flagship.Crew());
cargo.TransferAll(&flagship.Cargo());
}
}
if(ships.size())
{
Ship &flagship = *ships.front();
int extra = flagship.Crew() + flagship.Cargo().Passengers() - flagship.Attributes().Get("bunks");
if(extra > 0)
{
flagship.AddCrew(-extra);
Messages::Add("You fired " + to_string(extra) + " crew members because you have no bunks for them.");
flagship.Cargo().SetBunks(flagship.Attributes().Get("bunks") - flagship.Crew());
}
}
// For each fighter and drone you own, try to find a ship that has a bay to
// carry it in. Any excess ships will need to be sold.
vector<shared_ptr<Ship>> fighters;
vector<shared_ptr<Ship>> drones;
for(shared_ptr<Ship> &ship : ships)
{
if(ship->IsParked() || ship->GetSystem() != system || ship->IsDisabled())
continue;
bool fit = false;
const string &category = ship->Attributes().Category();
if(category == "Fighter")
{
for(shared_ptr<Ship> &parent : ships)
if(parent->GetSystem() == system && !parent->IsParked() && parent->FighterBaysFree())
{
parent->AddFighter(ship);
fit = true;
break;
}
if(!fit)
fighters.push_back(ship);
}
else if(category == "Drone")
{
for(shared_ptr<Ship> &parent : ships)
if(parent->GetSystem() == system && !parent->IsParked() && parent->DroneBaysFree())
{
parent->AddFighter(ship);
fit = true;
break;
}
if(!fit)
//.........这里部分代码省略.........