本文整理汇总了C++中SystemPath::HasValidSystem方法的典型用法代码示例。如果您正苦于以下问题:C++ SystemPath::HasValidSystem方法的具体用法?C++ SystemPath::HasValidSystem怎么用?C++ SystemPath::HasValidSystem使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SystemPath
的用法示例。
在下文中一共展示了SystemPath::HasValidSystem方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: distance_to_system
static float distance_to_system(const SystemPath &dest)
{
SystemPath here = Pi::game->GetSpace()->GetStarSystem()->GetPath();
assert(here.HasValidSystem());
assert(dest.HasValidSystem());
Sector sec1(here.sectorX, here.sectorY, here.sectorZ);
Sector sec2(dest.sectorX, dest.sectorY, dest.sectorZ);
return Sector::DistanceBetween(&sec1, here.systemIndex, &sec2, dest.systemIndex);
}
示例2: l_sbodypath_is_same_system
/*
* Method: IsSameSystem
*
* Determine if two <SystemPath> objects point to objects in the same system.
*
* > is_same = path:IsSameSystem(otherpath)
*
* Parameters:
*
* otherpath - the <SystemPath> to compare with this path
*
* Return:
*
* is_same - true if the path's point to the same system, false otherwise
*
* Availability:
*
* alpha 10
*
* Status:
*
* stable
*/
static int l_sbodypath_is_same_system(lua_State *l)
{
SystemPath *a = LuaObject<SystemPath>::CheckFromLua(1);
SystemPath *b = LuaObject<SystemPath>::CheckFromLua(2);
if (!a->HasValidSystem())
return luaL_error(l, "SystemPath:IsSameSystem() self argument does not refer to a system");
if (!b->HasValidSystem())
return luaL_error(l, "SystemPath:IsSameSystem() argument #1 does not refer to a system");
lua_pushboolean(l, a->IsSameSystem(b));
return 1;
}
示例3: l_sbodypath_attr_system_index
/*
* Attribute: systemIndex
*
* The system index component of the path, or nil if the SystemPath does
* not point to a system.
*
* Availability:
*
* alpha 10
*
* Status:
*
* stable
*/
static int l_sbodypath_attr_system_index(lua_State *l)
{
SystemPath *path = LuaObject<SystemPath>::CheckFromLua(1);
if (path->HasValidSystem())
lua_pushinteger(l, path->systemIndex);
else
lua_pushnil(l);
return 1;
}
示例4: l_sbodypath_system_only
/*
* Method: SystemOnly
*
* Derive a SystemPath that points to the whole system.
*
* > system_path = path:SystemOnly()
*
* Return:
*
* system_path - the SystemPath that represents just the system
*
* Availability:
*
* alpha 17
*
* Status:
*
* stable
*/
static int l_sbodypath_system_only(lua_State *l)
{
SystemPath *path = LuaObject<SystemPath>::CheckFromLua(1);
if (!path->HasValidSystem())
return luaL_error(l, "SystemPath:SystemOnly() self argument does not refer to a system");
if (path->IsSystemPath()) { return 1; }
const SystemPath sysOnly(path->SystemOnly());
LuaObject<SystemPath>::PushToLua(sysOnly);
return 1;
}
示例5: CheckHyperspaceTo
Ship::HyperjumpStatus Ship::CheckHyperspaceTo(const SystemPath &dest, int &outFuelRequired, double &outDurationSecs)
{
assert(dest.HasValidSystem());
outFuelRequired = 0;
outDurationSecs = 0.0;
if (GetFlightState() != FLYING)
return HYPERJUMP_SAFETY_LOCKOUT;
return GetHyperspaceDetails(dest, outFuelRequired, outDurationSecs);
}
示例6: InitiateHyperjumpTo
Ship::HyperjumpStatus Ship::InitiateHyperjumpTo(const SystemPath &dest, int warmup_time, double duration, LuaRef checks) {
if (!dest.HasValidSystem() || GetFlightState() != FLYING || warmup_time < 1)
return HYPERJUMP_SAFETY_LOCKOUT;
StarSystem *s = Pi::game->GetSpace()->GetStarSystem().Get();
if (s && s->GetPath().IsSameSystem(dest))
return HYPERJUMP_CURRENT_SYSTEM;
m_hyperspace.dest = dest;
m_hyperspace.countdown = warmup_time;
m_hyperspace.now = false;
m_hyperspace.duration = duration;
m_hyperspace.checks = checks;
return Ship::HYPERJUMP_OK;
}
示例7: GetHyperspaceDetails
Ship::HyperjumpStatus Ship::GetHyperspaceDetails(const SystemPath &dest, int &outFuelRequired, double &outDurationSecs)
{
assert(dest.HasValidSystem());
outFuelRequired = 0;
outDurationSecs = 0.0;
UpdateStats();
if (GetFlightState() == HYPERSPACE)
return HYPERJUMP_DRIVE_ACTIVE;
Equip::Type t = m_equipment.Get(Equip::SLOT_ENGINE);
Equip::Type fuelType = GetHyperdriveFuelType();
int hyperclass = Equip::types[t].pval;
int fuel = m_equipment.Count(Equip::SLOT_CARGO, fuelType);
if (hyperclass == 0)
return HYPERJUMP_NO_DRIVE;
StarSystem *s = Pi::game->GetSpace()->GetStarSystem().Get();
if (s && s->GetPath().IsSameSystem(dest))
return HYPERJUMP_CURRENT_SYSTEM;
float dist = distance_to_system(dest);
outFuelRequired = Pi::CalcHyperspaceFuelOut(hyperclass, dist, m_stats.hyperspace_range_max);
double m_totalmass = GetMass()/1000;
if (dist > m_stats.hyperspace_range_max) {
outFuelRequired = 0;
return HYPERJUMP_OUT_OF_RANGE;
} else if (fuel < outFuelRequired) {
return HYPERJUMP_INSUFFICIENT_FUEL;
} else {
outDurationSecs = Pi::CalcHyperspaceDuration(hyperclass, m_totalmass, dist);
if (outFuelRequired <= fuel) {
return HYPERJUMP_OK;
} else {
return HYPERJUMP_INSUFFICIENT_FUEL;
}
}
}
示例8: SystemChanged
void SystemInfoView::SystemChanged(const SystemPath &path)
{
DeleteAllChildren();
m_tabs = 0;
m_bodyIcons.clear();
if (!path.HasValidSystem())
return;
m_system = StarSystemCache::GetCached(path);
m_sbodyInfoTab = new Gui::Fixed(float(Gui::Screen::GetWidth()), float(Gui::Screen::GetHeight()-100));
if (m_system->GetUnexplored()) {
Add(m_sbodyInfoTab, 0, 0);
std::string _info =
Lang::UNEXPLORED_SYSTEM_STAR_INFO_ONLY;
Gui::Label *l = (new Gui::Label(_info))->Color(255,255,0);
m_sbodyInfoTab->Add(l, 35, 300);
m_selectedBodyPath = SystemPath();
ShowAll();
return;
}
m_econInfoTab = new Gui::Fixed(float(Gui::Screen::GetWidth()), float(Gui::Screen::GetHeight()-100));
Gui::Fixed *demographicsTab = new Gui::Fixed();
m_tabs = new Gui::Tabbed();
m_tabs->AddPage(new Gui::Label(Lang::PLANETARY_INFO), m_sbodyInfoTab);
m_tabs->AddPage(new Gui::Label(Lang::ECONOMIC_INFO), m_econInfoTab);
m_tabs->AddPage(new Gui::Label(Lang::DEMOGRAPHICS), demographicsTab);
Add(m_tabs, 0, 0);
m_sbodyInfoTab->onMouseButtonEvent.connect(sigc::mem_fun(this, &SystemInfoView::OnClickBackground));
int majorBodies, starports, onSurface;
{
float pos[2] = { 0, 0 };
float psize = -1;
majorBodies = starports = onSurface = 0;
PutBodies(m_system->GetRootBody().Get(), m_econInfoTab, 1, pos, majorBodies, starports, onSurface, psize);
majorBodies = starports = onSurface = 0;
pos[0] = pos[1] = 0;
psize = -1;
PutBodies(m_system->GetRootBody().Get(), m_sbodyInfoTab, 1, pos, majorBodies, starports, onSurface, psize);
majorBodies = starports = onSurface = 0;
pos[0] = pos[1] = 0;
psize = -1;
PutBodies(m_system->GetRootBody().Get(), demographicsTab, 1, pos, majorBodies, starports, onSurface, psize);
}
std::string _info = stringf(
Lang::STABLE_SYSTEM_WITH_N_MAJOR_BODIES_STARPORTS,
formatarg("bodycount", majorBodies),
formatarg("body(s)", std::string(majorBodies == 1 ? Lang::BODY : Lang::BODIES)),
formatarg("portcount", starports),
formatarg("starport(s)", std::string(starports == 1 ? Lang::STARPORT : Lang::COUNT_STARPORTS)));
if (starports > 0)
_info += stringf(Lang::COUNT_ON_SURFACE, formatarg("surfacecount", onSurface));
_info += ".\n\n";
_info += m_system->GetLongDescription();
{
// astronomical body info tab
m_infoBox = new Gui::VBox();
Gui::HBox *scrollBox = new Gui::HBox();
scrollBox->SetSpacing(5);
m_sbodyInfoTab->Add(scrollBox, 35, 250);
Gui::VScrollBar *scroll = new Gui::VScrollBar();
Gui::VScrollPortal *portal = new Gui::VScrollPortal(730);
scroll->SetAdjustment(&portal->vscrollAdjust);
Gui::Label *l = (new Gui::Label(_info))->Color(255,255,0);
m_infoBox->PackStart(l);
portal->Add(m_infoBox);
scrollBox->PackStart(scroll);
scrollBox->PackStart(portal);
}
{
// economy tab
Gui::HBox *scrollBox2 = new Gui::HBox();
scrollBox2->SetSpacing(5);
m_econInfoTab->Add(scrollBox2, 35, 300);
Gui::VScrollBar *scroll2 = new Gui::VScrollBar();
Gui::VScrollPortal *portal2 = new Gui::VScrollPortal(730);
scroll2->SetAdjustment(&portal2->vscrollAdjust);
scrollBox2->PackStart(scroll2);
scrollBox2->PackStart(portal2);
m_econInfo = new Gui::Label("");
m_econInfoTab->Add(m_econInfo, 35, 250);
//.........这里部分代码省略.........
示例9: SystemChanged
void SystemInfoView::SystemChanged(const SystemPath &path)
{
DeleteAllChildren();
m_tabs = 0;
m_bodyIcons.clear();
if (!path.HasValidSystem())
return;
m_system = StarSystem::cache->GetCached(path);
m_sbodyInfoTab = new Gui::Fixed(float(Gui::Screen::GetWidth()), float(Gui::Screen::GetHeight()-100));
if (m_system->GetUnexplored()) {
Add(m_sbodyInfoTab, 0, 0);
std::string _info =
Lang::UNEXPLORED_SYSTEM_STAR_INFO_ONLY;
Gui::Label *l = (new Gui::Label(_info))->Color(255,255,0);
m_sbodyInfoTab->Add(l, 35, 300);
m_selectedBodyPath = SystemPath();
ShowAll();
return;
}
Gui::Fixed *demographicsTab = new Gui::Fixed();
m_tabs = new Gui::Tabbed();
m_tabs->AddPage(new Gui::Label(Lang::PLANETARY_INFO), m_sbodyInfoTab);
m_tabs->AddPage(new Gui::Label(Lang::DEMOGRAPHICS), demographicsTab);
Add(m_tabs, 0, 0);
m_sbodyInfoTab->onMouseButtonEvent.connect(sigc::mem_fun(this, &SystemInfoView::OnClickBackground));
int majorBodies, starports, onSurface;
{
float pos[2] = { 0, 0 };
float psize = -1;
majorBodies = starports = onSurface = 0;
pos[0] = pos[1] = 0;
psize = -1;
PutBodies(m_system->GetRootBody().Get(), m_sbodyInfoTab, 1, pos, majorBodies, starports, onSurface, psize);
majorBodies = starports = onSurface = 0;
pos[0] = pos[1] = 0;
psize = -1;
PutBodies(m_system->GetRootBody().Get(), demographicsTab, 1, pos, majorBodies, starports, onSurface, psize);
}
std::string _info = stringf(
Lang::STABLE_SYSTEM_WITH_N_MAJOR_BODIES_STARPORTS,
formatarg("bodycount", majorBodies),
formatarg("body(s)", std::string(majorBodies == 1 ? Lang::BODY : Lang::BODIES)),
formatarg("portcount", starports),
formatarg("starport(s)", std::string(starports == 1 ? Lang::STARPORT : Lang::COUNT_STARPORTS)));
if (starports > 0)
_info += stringf(Lang::COUNT_ON_SURFACE, formatarg("surfacecount", onSurface));
_info += ".\n\n";
_info += m_system->GetLongDescription();
{
// astronomical body info tab
m_infoBox = new Gui::VBox();
Gui::HBox *scrollBox = new Gui::HBox();
scrollBox->SetSpacing(5);
m_sbodyInfoTab->Add(scrollBox, 35, 250);
Gui::VScrollBar *scroll = new Gui::VScrollBar();
Gui::VScrollPortal *portal = new Gui::VScrollPortal(730);
scroll->SetAdjustment(&portal->vscrollAdjust);
Gui::Label *l = (new Gui::Label(_info))->Color(255,255,0);
m_infoBox->PackStart(l);
portal->Add(m_infoBox);
scrollBox->PackStart(scroll);
scrollBox->PackStart(portal);
}
{
Gui::Fixed *col1 = new Gui::Fixed();
demographicsTab->Add(col1, 200, 300);
Gui::Fixed *col2 = new Gui::Fixed();
demographicsTab->Add(col2, 400, 300);
const float YSEP = Gui::Screen::GetFontHeight() * 1.2f;
col1->Add((new Gui::Label(Lang::SYSTEM_TYPE))->Color(255,255,0), 0, 0);
col1->Add((new Gui::Label(Lang::SECTOR_COORDINATES))->Color(255,255,0), 0, 6*YSEP);
col2->Add(new Gui::Label(stringf("%0{d}, %1{d}, %2{d}", path.sectorX, path.sectorY, path.sectorZ)), 0, 6*YSEP);
col1->Add((new Gui::Label(Lang::SYSTEM_NUMBER))->Color(255,255,0), 0, 7*YSEP);
col2->Add(new Gui::Label(stringf("%0", path.systemIndex)), 0, 7*YSEP);
}
UpdateIconSelections();
//.........这里部分代码省略.........