本文整理汇总了C++中Fleet::GetFuelNeeded方法的典型用法代码示例。如果您正苦于以下问题:C++ Fleet::GetFuelNeeded方法的具体用法?C++ Fleet::GetFuelNeeded怎么用?C++ Fleet::GetFuelNeeded使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Fleet
的用法示例。
在下文中一共展示了Fleet::GetFuelNeeded方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ProcessLoad
void CargoHolder::ProcessLoad(CargoHolder * dest, CargoType ct, TransferType tt, long value, bool dunnage) // value usage depends on TransferType
{
assert(dest->IsWith(*this));
assert(dest != this);
if (value < 0) {
Message * mess = NCGetOwner()->AddMessage("Error: Transfer order is negative", this);
mess->AddLong("Amount transferred", value);
return;
}
if (value > Rules::GetConstant("MaxTransfer")) {
Message * mess = NCGetOwner()->AddMessage("Error: Transfer order is over max", this);
mess->AddLong("Amount transferred", value);
return;
}
long destAmt = dest->GetContain(ct);
if (GetOwner() != dest->GetOwner() && (ct == POPULATION || !dest->CanLoadBy(GetOwner())))
destAmt = 0;
long amount = 0; // actual amount moved;
switch (tt) {
case TRANSFER_DROPNLOAD:
case TRANSFER_LOADALL:
if (dunnage) break;
amount = TransferAmount(ct, dest, this, destAmt);
break;
case TRANSFER_UNLOADALL:
break;
case TRANSFER_LOADAMT:
if (dunnage) break;
amount = TransferAmount(ct, dest, this, value);
break;
case TRANSFER_UNLOADAMT:
break;
case TRANSFER_FILLPER:
case TRANSFER_WAITPER: // affects movement too
if (dunnage) break;
if (value > 100) {
Message * mess = NCGetOwner()->AddMessage("Error: Transfer percent over 100%", this);
mess->AddLong("Amount transferred", value);
return;
}
amount = TransferAmount(ct, dest, this, GetCargoCapacity() * value / 100);
break;
case TRANSFER_LOADDUNN:
if (!dunnage) break;
// order of loading is different, but this is basicly a loadall -- execpt fuel
if (ct == FUEL) {
Fleet * f = dynamic_cast<Fleet *>(this);
int Need = f->GetFuelNeeded() - f->GetFuel();
if (Need > 0)
amount = TransferAmount(ct, dest, this, Need);
else
amount = -TransferAmount(ct, this, dest, -Need);
} else {
amount = TransferAmount(ct, dest, this, destAmt);
}
break;
case TRANSFER_SETTOPER:
if (value > 100) {
Message * mess = NCGetOwner()->AddMessage("Error: Transfer percent over 100%", this);
mess->AddLong("Amount transferred", value);
return;
}
value = GetCargoCapacity() * value / 100;
// drop to a regualr transfer amount
case TRANSFER_AMOUNTTO:
if (dunnage) break;
if (GetContain(ct) < value)
amount = TransferAmount(ct, dest, this, value - GetContain(ct));
break;
case TRANSFER_DESTTO:
if (dunnage) break;
if (destAmt > value)
amount = TransferAmount(ct, dest, this, destAmt - value);
break;
default:
Message * mess = NCGetOwner()->AddMessage("Error: Invalid transfer order", this);
mess->AddLong("Transfer code", tt);
return;
}
assert(amount >= 0 || tt == TRANSFER_LOADDUNN && ct == FUEL);
if (amount > 0 && dest->GetOwner() != GetOwner()) {
if (!dest->CanLoadBy(GetOwner())) {
Message * mess = NCGetOwner()->AddMessage("Warning: No theiving component at location", this);
mess->AddItem("", dest);
//.........这里部分代码省略.........