本文整理汇总了C++中CSystem::SetPOVLRS方法的典型用法代码示例。如果您正苦于以下问题:C++ CSystem::SetPOVLRS方法的具体用法?C++ CSystem::SetPOVLRS怎么用?C++ CSystem::SetPOVLRS使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CSystem
的用法示例。
在下文中一共展示了CSystem::SetPOVLRS方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RunEncounter
EResults RunEncounter (CUniverse &Universe, CSimViewer &Viewer, CStationType *pDefenderType, CShipClass *pAttackerClass, CSovereign *pAttackerSovereign)
{
int iTimeOut = DEFAULT_TIME_OUT;
// Make sure the universe is clean
CString sError;
if (Universe.InitGame(0, &sError) != NOERROR)
{
printf("ERROR: %s", sError.GetASCIIZPointer());
return resultError;
}
// Create an empty system
CSystem *pSystem;
if (Universe.CreateEmptyStarSystem(&pSystem) != NOERROR)
{
printf("ERROR: Unable to create empty star system.\n");
return resultError;
}
// Create a station in the center of the system
CSpaceObject *pStation;
if (pSystem->CreateStation(pDefenderType, NULL, CVector(), &pStation) != NOERROR)
{
printf("ERROR: Unable to create station.\n");
return resultError;
}
// Set the POV
Universe.SetPOV(pStation);
pSystem->SetPOVLRS(pStation);
// Prepare system
Universe.UpdateExtended();
Universe.GarbageCollectLibraryBitmaps();
Universe.StartGame(true);
// Now create an attacker some distance away
CVector vPos = PolarToVector(mathRandom(0, 359), INITIAL_DISTANCE);
CShip *pAttacker;
if (pSystem->CreateShip(pAttackerClass->GetUNID(), NULL, NULL, pAttackerSovereign, vPos, CVector(), 0, NULL, NULL, &pAttacker) != NOERROR)
{
printf("ERROR: Unable to create attacking ship.\n");
return resultError;
}
// Set the attacker to attack the station
IShipController *pController = pAttacker->GetController();
if (pController == NULL)
{
printf("ERROR: No controller for ship.\n");
return resultError;
}
pController->AddOrder(IShipController::orderAttackStation, pStation, IShipController::SData());
// Watch the attacker
Universe.SetPOV(pAttacker);
pSystem->SetPOVLRS(pAttacker);
// Update context
SSystemUpdateCtx Ctx;
Ctx.bForceEventFiring = true;
Ctx.bForcePainted = true;
// Now keep updating until either the station is destroyed, the ship is destroyed, or we time-out
int iTime = 0;
int iDestroyedTime = (Viewer.IsEmpty() ? 0 : DESTROY_TIME);
bool bDestroyed = false;
EResults iResult = resultTimeout;
while (iTime < iTimeOut && (!bDestroyed || iDestroyedTime > 0))
{
iTime++;
Universe.Update(Ctx);
if (!Viewer.IsEmpty())
Viewer.PaintViewport(Universe);
if (bDestroyed)
iDestroyedTime--;
else if (pStation->IsDestroyed() || pStation->IsAbandoned())
{
bDestroyed = true;
iResult = resultDefenderDestroyed;
}
else if (pAttacker->IsDestroyed())
{
bDestroyed = true;
iResult = resultAttackerDestroyed;
//.........这里部分代码省略.........
示例2: GenerateSnapshot
void GenerateSnapshot (CUniverse &Universe, CXMLElement *pCmdLine)
{
ALERROR error;
int i;
// Get some parameters
int iInitialUpdateTime = 10;
int iUpdateTime = pCmdLine->GetAttributeInteger(CONSTLIT("wait"));
// Criteria
CString sNode = pCmdLine->GetAttribute(CONSTLIT("node"));
CString sCriteria = pCmdLine->GetAttribute(CONSTLIT("criteria"));
// Output
int cxWidth;
int cyHeight;
if (pCmdLine->FindAttributeInteger(CONSTLIT("size"), &cxWidth))
{
cyHeight = cxWidth;
}
else
{
cxWidth = 1024;
cyHeight = 1024;
}
// Paint flags
DWORD dwPaintFlags = 0;
if (pCmdLine->GetAttributeBool(CONSTLIT("noStars")))
dwPaintFlags |= CSystem::VWP_NO_STAR_FIELD;
// Output file
CString sFilespec = pCmdLine->GetAttribute(CONSTLIT("output"));
if (!sFilespec.IsBlank())
sFilespec = pathAddExtensionIfNecessary(sFilespec, CONSTLIT(".bmp"));
// Update context
SSystemUpdateCtx Ctx;
Ctx.bForceEventFiring = true;
Ctx.bForcePainted = true;
// Loop over all systems until we find what we're looking for
int iLoops = 20;
int iNodeIndex = 0;
CTopologyNode *pNode = Universe.GetTopologyNode(iNodeIndex);
while (true)
{
// Create the system
CSystem *pSystem;
if (error = Universe.CreateStarSystem(pNode, &pSystem))
{
printf("ERROR: Unable to create star system.\n");
return;
}
// If this is the node we want, then search
CSpaceObject *pTarget;
if (sNode.IsBlank() || strEquals(sNode, pNode->GetID()))
{
printf("Searching %s...\n", pNode->GetSystemName().GetASCIIZPointer());
// Set the POV
CSpaceObject *pPOV = pSystem->GetObject(0);
Universe.SetPOV(pPOV);
pSystem->SetPOVLRS(pPOV);
// Prepare system
Universe.UpdateExtended();
Universe.GarbageCollectLibraryBitmaps();
// Update for a while
for (i = 0; i < iInitialUpdateTime; i++)
Universe.Update(Ctx);
// Compose the criteria
CSpaceObject::Criteria Criteria;
CSpaceObject::ParseCriteria(pPOV, sCriteria, &Criteria);
// Get the list of all objects in the system that match the criteria
CSpaceObject::SCriteriaMatchCtx Ctx(Criteria);
TArray<CSpaceObject *> Results;
for (i = 0; i < pSystem->GetObjectCount(); i++)
{
CSpaceObject *pObj = pSystem->GetObject(i);
if (pObj && pObj->MatchesCriteria(Ctx, Criteria))
Results.Insert(pObj);
//.........这里部分代码省略.........
示例3: Run
void Run (CUniverse &Universe, CXMLElement *pCmdLine)
{
ALERROR error;
int i;
CCodeChain &CC = g_pUniverse->GetCC();
bool bNoLogo = pCmdLine->GetAttributeBool(NO_LOGO_SWITCH);
// Prepare the universe
CTopologyNode *pNode = g_pUniverse->GetFirstTopologyNode();
if (pNode == NULL)
{
printf("ERROR: No topology node found.\n");
return;
}
CSystem *pSystem;
if (error = g_pUniverse->CreateStarSystem(pNode, &pSystem))
{
printf("ERROR: Unable to create star system.\n");
return;
}
// Set the POV
CSpaceObject *pPOV = pSystem->GetObject(0);
g_pUniverse->SetPOV(pPOV);
pSystem->SetPOVLRS(pPOV);
// Prepare system
g_pUniverse->UpdateExtended();
g_pUniverse->GarbageCollectLibraryBitmaps();
CString sCommand = pCmdLine->GetAttribute(RUN_SWITCH);
CString sRunFile = pCmdLine->GetAttribute(RUN_FILE_SWITCH);
// If this is a run file, then we parse it and run it
if (!sRunFile.IsBlank() && !strEquals(sRunFile, CONSTLIT("true")))
{
TArray<CString> Files;
ParseStringList(sRunFile, PSL_FLAG_ALLOW_WHITESPACE, &Files);
for (i = 0; i < Files.GetCount(); i++)
RunFile(Files[i], bNoLogo);
}
// If we have a command, invoke it
else if (!sCommand.IsBlank() && !strEquals(sCommand, CONSTLIT("True")))
{
CCodeChainCtx Ctx;
ICCItem *pCode = Ctx.Link(sCommand, 0, NULL);
ICCItem *pResult = Ctx.Run(pCode);
CString sOutput;
if (pResult->IsIdentifier())
sOutput = pResult->Print(&CC, PRFLAG_NO_QUOTES | PRFLAG_ENCODE_FOR_DISPLAY);
else
sOutput = CC.Unlink(pResult);
Ctx.Discard(pResult);
Ctx.Discard(pCode);
// Output result
printf("%s\n", sOutput.GetASCIIZPointer());
}
// Otherwise, we enter a command loop
else
{
// Welcome
if (!bNoLogo)
{
printf("(help) for function help.\n");
printf("\\q to quit.\n\n");
}
// Loop
while (true)
{
char szBuffer[1024];
if (!bNoLogo)
printf(": ");
gets_s(szBuffer, sizeof(szBuffer)-1);
CString sCommand(szBuffer);
// Escape codes
if (*sCommand.GetASCIIZPointer() == '\\')
{
// Quit command
if (strStartsWith(sCommand, CONSTLIT("\\q")))
break;
else if (strStartsWith(sCommand, CONSTLIT("\\?"))
//.........这里部分代码省略.........
示例4: GenerateWeaponEffectChart
//.........这里部分代码省略.........
|| pSystem->CreateStation(pTargetType, NULL, CVector(), &pStation) != NOERROR)
{
printf("ERROR: Unable to create station.\n");
return;
}
// Create the weapon platform some distance away
CSovereign *pPlatformSovereign = Universe.FindSovereign(PLAYER_SOVEREIGN_UNID);
CShip *pPlatform;
if (pPlatformSovereign == NULL
|| pSystem->CreateShip(dwPlatformUNID,
NULL,
NULL,
pPlatformSovereign,
CVector(-5.0 * LIGHT_SECOND, 0.),
CVector(),
0,
NULL,
NULL,
&pPlatform) != NOERROR)
{
printf("ERROR: Unable to create weapons platform.\n");
return;
}
// Set the attacker to hold
IShipController *pController = pPlatform->GetController();
if (pController == NULL)
{
printf("ERROR: No controller for ship.\n");
return;
}
pController->AddOrder(IShipController::orderHold, NULL, IShipController::SData());
pPlatform->SetControllerEnabled(false);
// Install the largest possible reactor on the ship
CItemType *pReactorType = Universe.FindItemType(REACTOR_UNID);
if (pReactorType)
{
CItem ReactorItem(pReactorType, 1);
CItemListManipulator ItemList(pPlatform->GetItemList());
ItemList.AddItem(ReactorItem);
pPlatform->OnComponentChanged(comCargo);
pPlatform->ItemsModified();
pPlatform->InvalidateItemListAddRemove();
pPlatform->InstallItemAsDevice(ItemList);
}
// Set the POV
Universe.SetPOV(pStation);
pSystem->SetPOVLRS(pStation);
// Prepare system
Universe.UpdateExtended();
Universe.GarbageCollectLibraryBitmaps();
Universe.StartGame(true);
// Output each weapon
int xOrigin;
int yOrigin;
CG32bitImage &Image = Output.GetOutputImage(&xOrigin, &yOrigin);
const CG16bitFont &TitleFont = Output.GetStyleFont(STYLE_TITLE);
CG32bitPixel rgbTitleColor = Output.GetStyleColor(STYLE_TITLE);
for (i = 0; i < Selection.GetCount(); i++)
{
CItemType *pType = Selection.GetItemType(i);
// Compute the metrics of this row
int xRow = xOrigin + (i % iColumns) * cxRow;
int yRow = yOrigin + (i / iColumns) * cyRow;
// Paint the weapon title
Image.Fill(xRow, yRow, cxRow, cyRow, CG32bitPixel(0x40, 0x40, 0x40));
TitleFont.DrawText(Image, xRow + 8, yRow, rgbTitleColor, pType->GetNounPhrase());
// Paint the frames
PaintWeaponFrames(Image, pType, pPlatform, iFramesPerItem,
xRow + ITEM_ICON_WIDTH + cxFrameHorzMargin,
yRow + cyRowTitle,
cxMaxDistPerTick,
cyFrame);
}
// Done
Output.Output();
}
示例5: GenerateSnapshot
void GenerateSnapshot (CUniverse &Universe, CXMLElement *pCmdLine)
{
ALERROR error;
int i;
// Get some parameters
int iInitialUpdateTime = pCmdLine->GetAttributeIntegerBounded(CONSTLIT("initialUpdate"), 0, -1, 10);
int iUpdateTime = pCmdLine->GetAttributeInteger(CONSTLIT("wait"));
bool bObjOnly = pCmdLine->GetAttributeBool(CONSTLIT("objOnly"));
// Criteria
CString sNode = pCmdLine->GetAttribute(CONSTLIT("node"));
CString sCriteria = pCmdLine->GetAttribute(CONSTLIT("criteria"));
// Number of snapshots
int iTotalCount = pCmdLine->GetAttributeIntegerBounded(CONSTLIT("count"), 1, -1, 1);
// Output
int cxWidth;
int cyHeight;
if (pCmdLine->FindAttributeInteger(CONSTLIT("size"), &cxWidth))
{
cyHeight = cxWidth;
}
else
{
cxWidth = 1024;
cyHeight = 1024;
}
// Paint flags
DWORD dwPaintFlags = 0;
if (pCmdLine->GetAttributeBool(CONSTLIT("noStars")))
dwPaintFlags |= CSystem::VWP_NO_STAR_FIELD;
// Output file
CString sFilespec = pCmdLine->GetAttribute(CONSTLIT("output"));
if (!sFilespec.IsBlank())
sFilespec = pathStripExtension(sFilespec);
// Output image
CG32bitImage Output;
Output.Create(cxWidth, cyHeight);
// Update context
SSystemUpdateCtx Ctx;
Ctx.bForceEventFiring = true;
Ctx.bForcePainted = true;
RECT rcViewport;
rcViewport.left = 0;
rcViewport.top = 0;
rcViewport.right = cxWidth;
rcViewport.bottom = cyHeight;
// Loop over all systems until we find what we're looking for
int iLoops = 20;
int iNodeIndex = 0;
int iSnapshotIndex = 0;
CTopologyNode *pNode = Universe.GetTopologyNode(iNodeIndex);
while (true)
{
// Create the system
CSystem *pSystem;
if (error = Universe.CreateStarSystem(pNode, &pSystem))
{
printf("ERROR: Unable to create star system.\n");
return;
}
// If this is the node we want, then search
CSpaceObject *pTarget;
if (sNode.IsBlank() || strEquals(sNode, pNode->GetID()))
{
printf("Searching %s...\n", pNode->GetSystemName().GetASCIIZPointer());
// Set the POV
CSpaceObject *pPOV = pSystem->GetObject(0);
Universe.SetPOV(pPOV);
pSystem->SetPOVLRS(pPOV);
// Prepare system
Universe.UpdateExtended();
Universe.GarbageCollectLibraryBitmaps();
// Update for a while
//.........这里部分代码省略.........
示例6: TestUpdate
void TestUpdate (CUniverse &Universe, CXMLElement *pCmdLine)
{
int i;
int iTrial;
TArray<DWORD> Trials;
DWORD dwLastAverage;
// How many tests
int iCount = pCmdLine->GetAttributeInteger(CONSTLIT("count"));
if (iCount == 0)
iCount = 1;
// How long do we update
int iUpdateCount = pCmdLine->GetAttributeInteger(CONSTLIT("updateCount"));
if (iUpdateCount == 0)
iUpdateCount = DEFAULT_UPDATE;
// Create the fist system
for (iTrial = 0; iTrial < iCount; iTrial++)
{
TArray<SSample> Timings;
printf("Trial: %d\n", iTrial + 1);
// Initialize the universe
CString sError;
if (Universe.InitGame(0, &sError) != NOERROR)
{
printf("ERROR: %s", sError.GetASCIIZPointer());
return;
}
// Create the first system
CTopologyNode *pNode = Universe.GetFirstTopologyNode();
if (pNode == NULL)
{
printf("ERROR: Cannot find first node.\n");
return;
}
CSystem *pSystem;
if (Universe.CreateStarSystem(pNode, &pSystem) != NOERROR)
{
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.StartGame(true);
// Update context
SSystemUpdateCtx Ctx;
Ctx.bForceEventFiring = true;
Ctx.bForcePainted = true;
// Update for a while
DWORD dwStart = ::GetTickCount();
for (i = 0; i < iUpdateCount; i++)
{
Universe.Update(Ctx);
if (i > 0 && (i % SAMPLE_SIZE) == 0)
{
DWORD dwEnd = ::GetTickCount();
DWORD dwTime = dwEnd - dwStart;
SSample *pSample = Timings.Insert();
pSample->dwTime = dwTime;
pSample->iObjCount = GetValidObjCount(pSystem);
CString sTime = strFormatMilliseconds(dwTime);
CString sObjTime = strFormatMicroseconds(1000 * dwTime / pSample->iObjCount);
printf("Objs: %d Total time: %s Per obj: %s\n",
pSample->iObjCount,
sTime.GetASCIIZPointer(),
sObjTime.GetASCIIZPointer());
dwStart = ::GetTickCount();
}
}
// Compute trial average
DWORD dwTotal = 0;
//.........这里部分代码省略.........
示例7: 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");
}