| 62 | } |
| 63 | |
| 64 | static Header prepareHeader(SaveFlags flags, size_t numPackedObjects) |
| 65 | { |
| 66 | Header result; |
| 67 | std::memset(&result, 0, sizeof(result)); |
| 68 | |
| 69 | result.type = S5Type::savedGame; |
| 70 | if (hasSaveFlags(flags, SaveFlags::landscape)) |
| 71 | { |
| 72 | result.type = S5Type::landscape; |
| 73 | } |
| 74 | if (hasSaveFlags(flags, SaveFlags::scenario)) |
| 75 | { |
| 76 | result.type = S5Type::scenario; |
| 77 | } |
| 78 | |
| 79 | result.numPackedObjects = static_cast<uint16_t>(numPackedObjects); |
| 80 | result.version = kCurrentVersion; |
| 81 | result.magic = kMagicNumber; |
| 82 | |
| 83 | if (hasSaveFlags(flags, SaveFlags::raw)) |
| 84 | { |
| 85 | result.flags |= HeaderFlags::isRaw; |
| 86 | } |
| 87 | if (hasSaveFlags(flags, SaveFlags::dump)) |
| 88 | { |
| 89 | result.flags |= HeaderFlags::isDump; |
| 90 | } |
| 91 | if (!hasSaveFlags(flags, SaveFlags::scenario) |
| 92 | && !hasSaveFlags(flags, SaveFlags::raw) |
| 93 | && !hasSaveFlags(flags, SaveFlags::dump)) |
| 94 | { |
| 95 | result.flags |= HeaderFlags::hasSaveDetails; |
| 96 | } |
| 97 | |
| 98 | return result; |
| 99 | } |
| 100 | |
| 101 | // 0x004471A4 |
| 102 | static std::unique_ptr<SaveDetails> prepareSaveDetails(OpenLoco::GameState& gameState) |
no test coverage detected