本文整理汇总了C++中IshipIGC::GetCommandTarget方法的典型用法代码示例。如果您正苦于以下问题:C++ IshipIGC::GetCommandTarget方法的具体用法?C++ IshipIGC::GetCommandTarget怎么用?C++ IshipIGC::GetCommandTarget使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IshipIGC
的用法示例。
在下文中一共展示了IshipIGC::GetCommandTarget方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: assert
//------------------------------------------------------------------------------
/* ImodelIGC* */ CurrentTarget::operator ImodelIGC* (void)
{
// first, get the ship and its target
IshipIGC* pShip = static_cast<IshipIGC*> (static_cast<ImodelIGC*> (*m_pTarget));
assert (pShip);
ImodelIGC* pTarget = pShip->GetCommandTarget (c_cmdCurrent);
// there is an option to cache the target the first time this target is evaluated.
// if that option is set...
if (m_bLockOnFirstFetch)
{
// first check to see if we have done a fetch at all
if (not m_pFetched)
{
// we haven't cached a target yet, so we need to get the target
m_pFetched = new TypeIDTarget (pTarget ? pTarget->GetObjectType () : NA, pTarget ? pTarget->GetObjectID () : NA);
}
else
{
// we have cached a target, but the reason we want to cache the target is to
// determine if a kill has happened, e.g. has the target been eliminated. The
// problem is that the player may choose to change the target before
// eliminating it, and then we are stuck waiting on the original target. Here
// we check to see if the target has been changed w/o eliminating the
// original target, and if so, adjust to compensate.
ImodelIGC* pFetched = *m_pFetched;
if ((pFetched != pTarget) and pFetched and pTarget)
{
// there has been such a change, so set up a new abstract target
delete m_pFetched;
m_pFetched = new TypeIDTarget (pTarget ? pTarget->GetObjectType () : NA, pTarget ? pTarget->GetObjectID () : NA);
}
}
return (*m_pFetched);
}
// that option wasn't requested, so we just return the actual found target
return pTarget;
}
示例2: SetCluster
//This should only be called from the ChangeCluster() callback.
void CFSPlayer::SetCluster(IclusterIGC* pcluster, bool bViewOnly)
{
CFSShip::SetCluster(pcluster, bViewOnly);
if (pcluster)
{
SetDPGroup((CFSCluster*)(pcluster->GetPrivateData()), true);
IshipIGC* pshipParent = GetIGCShip()->GetParentShip();
if ((pshipParent == NULL) || bViewOnly)
{
ShipID shipID = GetIGCShip()->GetObjectID();
assert(0 == g.fm.CbUsedSpaceInOutbox());
if (!bViewOnly)
{
//Move the player to his destination
BEGIN_PFM_CREATE(g.fm, pfmSetCluster, S, SET_CLUSTER)
END_PFM_CREATE
pfmSetCluster->sectorID = pcluster->GetObjectID();
//Send the position of the parent ship if we are a child, otherwise our position
IshipIGC* pshipSource = pshipParent ? pshipParent : GetIGCShip();
pshipSource->ExportShipUpdate(&(pfmSetCluster->shipupdate));
pfmSetCluster->cookie = NewCookie();
}
{
for (ShipLinkIGC* pshiplink = pcluster->GetShips()->first(); pshiplink; pshiplink = pshiplink->next())
{
IshipIGC * pshipExist = pshiplink->data();
if ((pshipExist != GetIGCShip()) && (pshipExist != pshipParent))
{
IshipIGC* pshipExistParent = pshipExist->GetParentShip();
//Tell the new player where the existing ship is/was
//provided the existing ship is not the child of some other ship
//and is not the parent of the new ship
if (pshipExistParent == NULL)
{
CFSShip * pfsShipExist = (CFSShip *) pshipExist->GetPrivateData();
pfsShipExist->QueueLoadoutChange();
BEGIN_PFM_CREATE(g.fm, pfmSSU, S, SINGLE_SHIP_UPDATE)
END_PFM_CREATE
//Always use the ship update based on the server's current view of the universe
//(this shouldn't be a lot worse than anything the player sent and it is easier)
pshipExist->ExportShipUpdate(&(pfmSSU->shipupdate));
{
ImodelIGC* pmodelTarget = pshipExist->GetCommandTarget(c_cmdCurrent);
if (pmodelTarget)
{
pfmSSU->otTarget = pmodelTarget->GetObjectType();
pfmSSU->oidTarget = pmodelTarget->GetObjectID();
}
else
{
pfmSSU->otTarget = NA;
pfmSSU->oidTarget = NA;
}
}
pfmSSU->bIsRipcording = pshipExist->fRipcordActive();
}
}
}
}
{
// Let's build up a list of station updates so we can batch 'em down
IsideIGC* pside = GetIGCShip()->GetSide();
{
const StationListIGC * pstnlist = pcluster->GetStations();
int nStations = 0;
{
//Count the number of visible stations
for (StationLinkIGC* pstnlink = pstnlist->first(); pstnlink; pstnlink = pstnlink->next())
{
IstationIGC* pstation = pstnlink->data();
if (pstation->SeenBySide(pside))
nStations++;
}
}
if (nStations != 0)
{
// tell the client what happened
BEGIN_PFM_CREATE(g.fm, pfmStationsUpdate, S, STATIONS_UPDATE)
FM_VAR_PARM(NULL, nStations * sizeof(StationState))
END_PFM_CREATE
StationState* pss = (StationState*)(FM_VAR_REF(pfmStationsUpdate, rgStationStates));
for (StationLinkIGC* pstnlink = pstnlist->first(); pstnlink; pstnlink = pstnlink->next())
{
IstationIGC * pstation = pstnlink->data();
if (pstation->SeenBySide(pside))
{
//.........这里部分代码省略.........