18 constexpr std::array<std::uint8_t, 8>
24 constexpr std::array<std::uint8_t, 8>
38 data_.push_back(
value);
49 static_cast<std::uint8_t
>(
64 static_cast<std::uint8_t
>(
75 static_cast<std::uint64_t
>(
89 std::span<const std::uint8_t>
data)
100 const std::vector<std::uint8_t>&
data)
103 static_cast<std::uint32_t
>(
113 const std::wstring&
value)
116 static_cast<std::uint32_t
>(
130 static_cast<std::uint32_t
>(
138 const std::vector<std::uint8_t>&
data()
const
144 std::vector<std::uint8_t> take()
146 return std::move(data_);
150 std::vector<std::uint8_t> data_;
158 std::span<const std::uint8_t>
data)
166 if (position_ >= data_.size())
186 std::uint8_t
byte = 0;
194 static_cast<std::uint32_t
>(
211 std::uint8_t
byte = 0;
219 static_cast<std::uint64_t
>(
230 std::uint64_t rawValue = 0;
238 static_cast<std::int64_t
>(
248 std::uint8_t rawValue = 0;
265 std::vector<std::uint8_t>& result)
269 data_.size() - position_)
276 static_cast<std::ptrdiff_t
>(
281 static_cast<std::ptrdiff_t
>(
293 std::vector<std::uint8_t>& result)
295 std::uint32_t size = 0;
310 std::wstring& result)
312 std::uint32_t size = 0;
321 result.reserve(size);
323 for (std::uint32_t
i = 0;
327 std::uint32_t
ch = 0;
335 static_cast<wchar_t>(
353 std::span<const std::uint8_t>
356 std::size_t position_ = 0;
366 static_cast<std::int64_t
>(
378 std::int64_t rawValue = 0;
380 if (!reader.i64(rawValue))
395 std::span<const std::uint8_t>
data)
398 14695981039346656037ull;
400 for (
const std::uint8_t
byte :
417#define WRITE_OPTION(field) \
418 writeNumber(writer, options.field)
420#define WRITE_BOOL_OPTION(field) \
421 writer.boolean(options.field)
442 rollDiceToDecideStartingOrder
452 futureRentTradingAllowed
456 immunitiesTradingAllowed
460 allowPlayersToTakeOverAIs
464 dealFreePropertiesAtStartup
468 dealNPropertiesAtStartup
484 mortgagedCountsInGroupRent
496 auctionGoingTimeDelay
500 inactivityWarningTime
522#undef WRITE_BOOL_OPTION
530#define READ_OPTION(field) \
531 if (!readNumber(reader, options.field)) return false
533#define READ_BOOL_OPTION(field) \
534 if (!reader.boolean(options.field)) return false
555 rollDiceToDecideStartingOrder
565 futureRentTradingAllowed
569 immunitiesTradingAllowed
573 allowPlayersToTakeOverAIs
577 dealFreePropertiesAtStartup
581 dealNPropertiesAtStartup
597 mortgagedCountsInGroupRent
609 auctionGoingTimeDelay
613 inactivityWarningTime
637#undef READ_BOOL_OPTION
699 player.timeOfLastActivity
718 player.inactivityCount
722 player.acceptedConfiguration
727 player.diceRollHistory
730 for (
const auto amount :
731 player.cashGivenInTrade)
759 square.offeredInTradeTo
790 for (
const auto card :
806 deck.jailOfferedInTradeTo
815 for (
const auto die :
821 for (
const auto die :
827 for (
const auto die :
1015 if (!reader.text(player.name))
1025 player.aiPlayerLevel
1030 player.timeOfLastActivity
1034 player.currentSquare
1037 player.firstMoveMade
1045 player.inactivityCount
1048 player.acceptedConfiguration
1052 player.diceRollHistory
1060 player.cashGivenInTrade)
1075 player.tradeAccepted
1093 square.offeredInTradeTo
1148 deck.jailOfferedInTradeTo
1328 .currentSquare > 41)
1340 const std::array<std::uint8_t, 8>&
magic,
1341 std::span<const std::uint8_t> payload,
1342 std::vector<std::uint8_t>& result)
1346 std::numeric_limits<
1363 static_cast<std::uint32_t
>(
1383 std::span<const std::uint8_t>
data,
1384 const std::array<std::uint8_t, 8>&
magic,
1385 std::vector<std::uint8_t>& payload)
1397 for (std::size_t
i = 0;
1413 std::uint32_t version = 0;
1414 std::uint32_t size = 0;
1419 !reader.u32(version) ||
1420 !reader.u32(size) ||
1438 static_cast<std::ptrdiff_t
>(
1455 std::vector<std::uint8_t>& result)
1481 std::span<const std::uint8_t> data,
1485 std::vector<std::uint8_t> payload;
1498 Reader reader(payload);
1531 if (!reader.finished())
1554 std::vector<std::uint8_t>& result)
1572 std::span<const std::uint8_t> data,
1575 std::vector<std::uint8_t>
1590 Reader reader(payload);