| 1492 | } |
| 1493 | |
| 1494 | void 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 | { |
nothing calls this directly
no test coverage detected