本文整理汇总了C++中CSystem::GetStargateDestination方法的典型用法代码示例。如果您正苦于以下问题:C++ CSystem::GetStargateDestination方法的具体用法?C++ CSystem::GetStargateDestination怎么用?C++ CSystem::GetStargateDestination使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CSystem
的用法示例。
在下文中一共展示了CSystem::GetStargateDestination方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoTradeSim
void DoTradeSim (CUniverse &Universe, CXMLElement *pCmdLine)
{
ALERROR error;
int i, j;
CSovereign *pPlayer = Universe.FindSovereign(g_PlayerSovereignUNID);
int iSystemSample = pCmdLine->GetAttributeIntegerBounded(CONSTLIT("count"), 1, -1, 1);
bool bLogo = !pCmdLine->GetAttributeBool(NO_LOGO_SWITCH);
// For each station type we keep track of the items that it sells and the
// various prices that each instances charges.
SStationData AllStations;
// For each item type we keep track of the stations that sell and/or
// buy it.
SItemData AllItems;
// Generate systems for multiple games
for (i = 0; i < iSystemSample; i++)
{
if (bLogo)
printf("pass %d...\n", i+1);
CTopologyNode *pNode = Universe.GetFirstTopologyNode();
while (true)
{
// Create the system
CSystem *pSystem;
if (error = Universe.CreateStarSystem(pNode, &pSystem))
{
printf("ERROR: Unable to create star system.\n");
return;
}
// For all active stations in the system, get their trading information
for (j = 0; j < pSystem->GetObjectCount(); j++)
{
CSpaceObject *pObj = pSystem->GetObject(j);
if (pObj && pObj->GetCategory() == CSpaceObject::catStation)
CompileTradeData(pObj, &AllStations, &AllItems);
}
// Get the next node
CString sEntryPoint;
pNode = pSystem->GetStargateDestination(CONSTLIT("Outbound"), &sEntryPoint);
if (pNode == NULL || pNode->IsEndGame())
break;
// Done with old system
Universe.DestroySystem(pSystem);
}
Universe.Reinit();
}
if (bLogo)
printf("FINAL STATISTICS\n\n");
// Loop over each item and output the best trading strategy
printf("Item\tSeller\tSell Price\tBuyer\tBuy Price\tProfit\n");
for (i = 0; i < AllItems.GetCount(); i++)
{
ComputeAverages(&AllItems[i]);
OutputTradingStrategy(AllItems[i]);
}
}
示例2: GenerateSimTables
//.........这里部分代码省略.........
{
pSystemEntry = new SystemInfo;
pSystemEntry->sName = pNode->GetSystemName();
pSystemEntry->iLevel = pNode->GetLevel();
pSystemEntry->dwSystemType = pNode->GetSystemDescUNID();
pSystemEntry->iCount = 1;
AllSystems.AddEntry(pSystemEntry->sName, pSystemEntry);
}
else
pSystemEntry->iCount++;
// Add the encounters to the appropriate tables
for (j = 0; j < pSystem->GetObjectCount(); j++)
{
CSpaceObject *pObj = pSystem->GetObject(j);
if (pObj)
{
// Add this encounter to the table
CStationType *pType;
if (pType = pObj->GetEncounterInfo())
{
CString sKey = strFromInt(pType->GetUNID(), false);
// See if we have this type in the table
StationInfo *pEntry;
if (error = pSystemEntry->Stations.Lookup(sKey, (CObject **)&pEntry))
{
pEntry = new StationInfo;
pEntry->pType = pType;
pEntry->iSystemCount = 0;
pEntry->iTotalCount = 1;
pSystemEntry->Stations.AddEntry(sKey, pEntry);
}
else
pEntry->iTotalCount++;
}
// Enumerate the items in this object
CItemListManipulator ItemList(pObj->GetItemList());
ItemList.ResetCursor();
while (ItemList.MoveCursorForward())
{
const CItem &Item(ItemList.GetItemAtCursor());
if (!Item.IsInstalled() && !Item.IsDamaged())
{
CString sKey = strFromInt(Item.GetType()->GetUNID(), false);
// Find the item type in the table
ItemInfo *pEntry;
if (error = pSystemEntry->Items.Lookup(sKey, (CObject **)&pEntry))
{
pEntry = new ItemInfo;
pEntry->pType = Item.GetType();
pEntry->iTotalCount = Item.GetCount();
pSystemEntry->Items.AddEntry(sKey, pEntry);
}
else
pEntry->iTotalCount += Item.GetCount();
}
}
}
}
// Get the next node
CString sEntryPoint;
pNode = pSystem->GetStargateDestination(CONSTLIT("Outbound"), &sEntryPoint);
if (pNode == NULL || pNode->IsEndGame())
break;
// Done with old system
Universe.DestroySystem(pSystem);
}
Universe.Reinit();
}
// Output
if (error = OutputItemTable(AllSystems, iSystemSample))
return;
if (error = OutputEncounterTable(AllSystems, iSystemSample))
return;
// Create a table with the sum of all items for the game
printf("Total count statistic computed.\n");
}
示例3: GenerateStationPlaceSim
void GenerateStationPlaceSim (CUniverse &Universe, CXMLElement *pCmdLine)
{
ALERROR error;
int i, j, k;
CSovereign *pPlayer = Universe.FindSovereign(g_PlayerSovereignUNID);
int iSystemSample = pCmdLine->GetAttributeIntegerBounded(CONSTLIT("count"), 1, -1, 1);
bool bLogo = !pCmdLine->GetAttributeBool(NO_LOGO_SWITCH);
// Generate systems for multiple games
CSymbolTable AllSystems(TRUE, TRUE);
for (i = 0; i < iSystemSample; i++)
{
if (bLogo)
printf("pass %d...\n", i+1);
CTopologyNode *pNode = Universe.GetFirstTopologyNode();
while (true)
{
// Create the system
CSystem *pSystem;
if (error = Universe.CreateStarSystem(pNode, &pSystem))
{
printf("ERROR: Unable to create star system.\n");
return;
}
// Find this system in the table.
SPSimSystemInfo *pSystemEntry;
if (error = AllSystems.Lookup(pNode->GetSystemName(), (CObject **)&pSystemEntry))
{
pSystemEntry = new SPSimSystemInfo;
pSystemEntry->sName = pNode->GetSystemName();
pSystemEntry->iLevel = pNode->GetLevel();
pSystemEntry->dwSystemType = pNode->GetSystemTypeUNID();
pSystemEntry->iCount = 1;
for (j = 0; j < DIST_BUCKET_COUNT; j++)
pSystemEntry->iEnemies[j] = 0;
AllSystems.AddEntry(pSystemEntry->sName, pSystemEntry);
}
else
pSystemEntry->iCount++;
// For all active stations in the system, count the number of enemy stations
// within certain distance buckets
for (j = 0; j < pSystem->GetObjectCount(); j++)
{
CSpaceObject *pObj = pSystem->GetObject(j);
// Find any objects that are lootable by the player
if (pObj
&& pObj->GetCategory() == CSpaceObject::catStation
&& pObj->CanAttack())
{
// Count to see how many enemy stations are in range
for (k = 0; k < pSystem->GetObjectCount(); k++)
{
CSpaceObject *pEnemy = pSystem->GetObject(k);
if (pEnemy
&& pEnemy->GetCategory() == CSpaceObject::catStation
&& pEnemy->CanAttack()
&& (pEnemy->IsEnemy(pObj) || pObj->IsEnemy(pEnemy)))
{
Metric rDist = pObj->GetDistance(pEnemy);
int iDist = DistToBucketIndex(rDist);
if (iDist != -1)
{
ASSERT(iDist < DIST_BUCKET_COUNT && iDist >= 0);
pSystemEntry->iEnemies[iDist]++;
int iLSDist = (int)((rDist / LIGHT_SECOND) + 0.5);
if (iLSDist < 30)
{
printf("%s: %s (%x) and %s (%x) within %d ls\n",
pSystem->GetName().GetASCIIZPointer(),
pObj->GetNounPhrase().GetASCIIZPointer(),
pObj->GetID(),
pEnemy->GetNounPhrase().GetASCIIZPointer(),
pEnemy->GetID(),
iLSDist);
}
}
}
}
}
}
// Get the next node
CString sEntryPoint;
pNode = pSystem->GetStargateDestination(CONSTLIT("Outbound"), &sEntryPoint);
//.........这里部分代码省略.........
示例4: GenerateSnapshot
//.........这里部分代码省略.........
pTarget = Ctx.pBestObj;
else
pTarget = Results[mathRandom(0, Results.GetCount() - 1)];
}
else
pTarget = NULL;
// If we found the target, then output
if (pTarget)
{
// If we found the target, take a snapshot
printf("Found %s.\n", pTarget->GetNounPhrase(0).GetASCIIZPointer());
// Wait a bit
for (i = 0; i < iUpdateTime; i++)
{
if ((i % 100) == 99)
printf(".");
Universe.Update(g_SecondsPerUpdate, true);
}
if (iUpdateTime >= 99)
printf("\n");
// Paint
CG16bitImage Output;
Output.CreateBlank(cxWidth, cyHeight, false);
RECT rcViewport;
rcViewport.left = 0;
rcViewport.top = 0;
rcViewport.right = cxWidth;
rcViewport.bottom = cyHeight;
pSystem->PaintViewport(Output, rcViewport, pTarget, false);
// Write to file
if (!sFilespec.IsBlank())
{
CFileWriteStream OutputFile(sFilespec);
if (OutputFile.Create() != NOERROR)
{
printf("ERROR: Unable to create '%s'\n", sFilespec.GetASCIIZPointer());
return;
}
Output.WriteToWindowsBMP(&OutputFile);
OutputFile.Close();
printf("%s\n", sFilespec.GetASCIIZPointer());
}
// Otherwise, clipboard
else
{
if (error = Output.CopyToClipboard())
{
printf("ERROR: Unable to copy image to clipboard.\n");
return;
}
printf("Image copied to clipboard.\n");
}
// Done
break;
}
// Otherwise, loop to the next system
CString sEntryPoint;
pNode = pSystem->GetStargateDestination(CONSTLIT("Outbound"), &sEntryPoint);
// Done with old system
Universe.DestroySystem(pSystem);
// If no next node, then we loop through another universe
if (pNode == NULL || pNode->IsEndGame())
{
if (--iLoops > 0)
{
Universe.Reinit();
pNode = Universe.GetFirstTopologyNode();
}
else
{
printf("ERROR: Specified target could not be found.\n");
return;
}
}
}
}
示例5: DoSmokeTest
void DoSmokeTest (CUniverse &Universe, CXMLElement *pCmdLine)
{
ALERROR error;
int i, j;
int iSystemSample = pCmdLine->GetAttributeInteger(CONSTLIT("count"));
if (iSystemSample == 0)
iSystemSample = DEFAULT_SYSTEM_SAMPLE;
int iSystemUpdateTime = 100;
// Generate systems for multiple games
CSymbolTable AllSystems(TRUE, TRUE);
for (i = 0; i < iSystemSample; i++)
{
printf("sample %d", i+1);
CTopologyNode *pNode = Universe.GetFirstTopologyNode();
while (true)
{
// Create the system
CSystem *pSystem;
if (error = Universe.CreateStarSystem(pNode, &pSystem))
{
printf("ERROR: Unable to create star system.\n");
return;
}
// Set the POV
CSpaceObject *pPOV = pSystem->GetObject(0);
Universe.SetPOV(pPOV);
pSystem->SetPOVLRS(pPOV);
// Prepare system
Universe.UpdateExtended();
Universe.GarbageCollectLibraryBitmaps();
Universe.LoadLibraryBitmaps();
// Update for a while
for (j = 0; j < iSystemUpdateTime; j++)
Universe.Update(g_SecondsPerUpdate, true);
// Get the next node
CString sEntryPoint;
pNode = pSystem->GetStargateDestination(CONSTLIT("Outbound"), &sEntryPoint);
if (pNode == NULL || pNode->IsEndGame())
break;
// Done with old system
Universe.DestroySystem(pSystem);
printf(".");
}
Universe.Reinit();
printf("\n");
}
// Done
printf("Test successful.\n");
}