本文整理汇总了C++中CSystem::GetLocation方法的典型用法代码示例。如果您正苦于以下问题:C++ CSystem::GetLocation方法的具体用法?C++ CSystem::GetLocation怎么用?C++ CSystem::GetLocation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CSystem
的用法示例。
在下文中一共展示了CSystem::GetLocation方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetPosOrObject
bool GetPosOrObject (CEvalContext *pEvalCtx,
ICCItem *pArg,
CVector *retvPos,
CSpaceObject **retpObj,
int *retiLocID)
// GetPosOrObject
//
// pArg is either a position or an object. We return a position and/or the object.
{
CCodeChain &CC(*pEvalCtx->pCC);
CVector vPos;
CSpaceObject *pObj = NULL;
int iLocID = -1;
if (pArg->IsNil())
NULL;
else if (pArg->IsList())
{
// Is this a location criteria?
CString sTag = pArg->GetElement(0)->GetStringValue();
if (strEquals(sTag, CONSTLIT("location")))
{
CSystem *pSystem = g_pUniverse->GetCurrentSystem();
if (pSystem == NULL)
return false;
// Get the criteria and parse it
CString sCriteria = (pArg->GetCount() > 1 ? pArg->GetElement(1)->GetStringValue() : NULL_STR);
if (sCriteria.IsBlank())
return false;
CAttributeCriteria Criteria;
if (Criteria.Parse(sCriteria) != NOERROR)
return false;
// Get a random location
if (!pSystem->FindRandomLocation(Criteria, 0, NULL, &iLocID))
return false;
// Return the position
CLocationDef *pLoc = pSystem->GetLocation(iLocID);
vPos = pLoc->GetOrbit().GetObjectPos();
}
// Otherwise, we assume a vector
else
vPos = CreateVectorFromList(CC, pArg);
}
else
{
pObj = CreateObjFromItem(CC, pArg);
if (pObj)
vPos = pObj->GetPos();
}
// Done
if (retvPos)
*retvPos = vPos;
if (retpObj)
*retpObj = pObj;
if (retiLocID)
*retiLocID = iLocID;
return true;
}