本文整理汇总了C++中SpaceStation::GetPositionRelTo方法的典型用法代码示例。如果您正苦于以下问题:C++ SpaceStation::GetPositionRelTo方法的具体用法?C++ SpaceStation::GetPositionRelTo怎么用?C++ SpaceStation::GetPositionRelTo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SpaceStation
的用法示例。
在下文中一共展示了SpaceStation::GetPositionRelTo方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: NotifyOfCrime
void NotifyOfCrime(Ship *s, enum Crime crime)
{
// ignore crimes of NPCs for the time being
if (!s->IsType(Object::PLAYER)) return;
// find nearest starport to this evil criminal
SpaceStation *station = static_cast<SpaceStation*>(Pi::game->GetSpace()->FindNearestTo(s, Object::SPACESTATION));
if (station) {
double dist = station->GetPositionRelTo(s).Length();
// too far away for crime to be noticed :)
if (dist > 100000.0) return;
const int crimeIdx = GetCrimeIdxFromEnum(crime);
Pi::cpan->MsgLog()->ImportantMessage(station->GetLabel(),
stringf(Lang::X_CANNOT_BE_TOLERATED_HERE, formatarg("crime", crimeNames[crimeIdx])));
float lawlessness = Pi::game->GetSpace()->GetStarSystem()->GetSysPolit().lawlessness.ToFloat();
Sint64 oldCrimes, oldFine;
GetCrime(&oldCrimes, &oldFine);
Sint64 newFine = std::max(1, 1 + int(crimeBaseFine[crimeIdx] * (1.0-lawlessness)));
// don't keep compounding fines (maybe should for murder, etc...)
if ( (!(crime & CRIME_MURDER)) && (newFine < oldFine) ) newFine = 0;
AddCrime(crime, newFine);
}
}
示例2: NotifyOfCrime
void NotifyOfCrime(Ship *s, enum Crime crime)
{
// ignore crimes of NPCs for the time being
if (s != (Ship*)Pi::player) return;
// find nearest starport to this evil criminal
SpaceStation *station = static_cast<SpaceStation*>(Space::FindNearestTo(s, Object::SPACESTATION));
if (station) {
double dist = station->GetPositionRelTo(s).Length();
// too far away for crime to be noticed :)
if (dist > 100000.0) return;
const int crimeIdx = GetCrimeIdxFromEnum(crime);
Pi::cpan->MsgLog()->ImportantMessage(station->GetLabel(),
stringf(512, "%s cannot be tolerated here.", crimeNames[crimeIdx]));
float lawlessness = Pi::currentSystem->GetSysPolit().lawlessness.ToFloat();
Sint64 oldCrimes, oldFine;
GetCrime(&oldCrimes, &oldFine);
Sint64 newFine = std::max(1, 1 + (int)(crimeBaseFine[crimeIdx] * (1.0-lawlessness)));
// don't keep compounding fines (maybe should for murder, etc...)
if ( (!(crime & CRIME_MURDER)) && (newFine < oldFine) ) newFine = 0;
AddCrime(crime, newFine);
}
}