MCPcopy Create free account
hub / github.com/BohemiaInteractive/CWR / LoadCampaigns

Method LoadCampaigns

engine/Poseidon/UI/OptionsUIImpl.cpp:1494–1560  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1492}
1493
1494void DisplayCampaignLoad::LoadCampaigns()
1495{
1496 RString dir = GetTmpSaveDirectory();
1497
1498 _campaigns.Clear();
1499
1500 _finddata_t info;
1501 intptr_t h = _findfirst("Campaigns\\*.*", &info);
1502 if (h != -1)
1503 {
1504 do
1505 {
1506 if ((info.attrib & _A_SUBDIR) != 0 && info.name[0] != '.')
1507 {
1508 RString name = info.name;
1509 int i = _campaigns.Add();
1510 CampaignHistory& campaign = _campaigns[i];
1511 campaign.Clear(name);
1512
1513 char buffer[256];
1514 snprintf(buffer, sizeof(buffer), "%s%s.sqc", (const char*)dir, (const char*)name);
1515 ParamArchiveLoad ar;
1516 if (ar.LoadBin(buffer) || ar.Load(buffer) == LSOK)
1517 {
1518 if (ar.Serialize("Campaign", campaign, 1) != LSOK)
1519 {
1520 campaign.Clear(name);
1521 Poseidon::Foundation::WarningMessage("Cannot load campaign description %s", buffer);
1522 }
1523 }
1524 }
1525 } while (0 == _findnext(h, &info));
1526 _findclose(h);
1527 }
1528 static const char campaigns[] = "campaigns\\";
1529 for (int i = 0; i < GFileBanks.Size(); i++)
1530 {
1531 const QFBank& bank = GFileBanks[i];
1532 const char* prefix = bank.GetPrefix();
1533 if (CmpStartStr(prefix, campaigns) == 0)
1534 {
1535 char name[256];
1536 snprintf(name, sizeof(name), "%s", (const char*)prefix + strlen(campaigns));
1537 int n = strlen(name) - 1;
1538 if (name[n] == '\\' || name[n] == '/')
1539 {
1540 name[n] = 0;
1541 }
1542
1543 int i = _campaigns.Add();
1544 CampaignHistory& campaign = _campaigns[i];
1545 campaign.Clear(name);
1546
1547 char buffer[256];
1548 snprintf(buffer, sizeof(buffer), "%s%s.sqc", (const char*)dir, name);
1549 ParamArchiveLoad ar;
1550 if (ar.LoadBin(buffer) || ar.Load(buffer) == LSOK)
1551 {

Callers

nothing calls this directly

Calls 13

GetTmpSaveDirectoryFunction · 0.85
_findfirstFunction · 0.85
WarningMessageFunction · 0.85
_findnextFunction · 0.85
_findcloseFunction · 0.85
CmpStartStrFunction · 0.85
ClearMethod · 0.45
AddMethod · 0.45
LoadBinMethod · 0.45
LoadMethod · 0.45
SerializeMethod · 0.45
SizeMethod · 0.45

Tested by

no test coverage detected