16 constexpr std::uint8_t
GoToJail = 30;
17 constexpr std::uint8_t
InJail = 40;
18 constexpr std::uint8_t
OffBoard = 41;
22 struct RestingOffset {
int x;
int z;
int degrees; };
23 using RestingRow = std::array<RestingOffset, RestingPositionCount>;
26 RestingRow{{{-22, 7, 45}, {-22, -34, 45}, {23, 6, -45},
27 {-22, -14, 45}, {0, -38, -45}, {24, -40, -45}}},
28 RestingRow{{{9, -25, -135}, {-4, -24, -118}, {9, -13, -150},
29 {-6, -14, -40}, {-10, -25, -90}, {9, -10, -180}}},
30 RestingRow{{{7, 22, 45}, {-26, 22, 45}, {-38, -10, -45},
31 {-38, 11, 45}, {-9, 22, 45}, {-38, 27, -45}}},
32 RestingRow{{{-21, 10, 90}, {15, -10, -45}, {15, 10, -45},
33 {-21, -10, 90}, {-25, 0, 0}, {-29, -10, 0}}},
34 RestingRow{{{-20, 10, 90}, {20, -10, -90}, {20, 10, -90},
35 {-20, -10, 90}, {30, 0, 0}, {-15, 0, 0}}}
39 RestingType::GoFreeParking, RestingType::Property, RestingType::RailroadUtilityChance,
40 RestingType::Property, RestingType::RailroadUtilityChance, RestingType::RailroadUtilityChance,
41 RestingType::Property, RestingType::RailroadUtilityChance, RestingType::Property,
42 RestingType::Property, RestingType::JustVisiting, RestingType::Property,
43 RestingType::RailroadUtilityChance, RestingType::Property, RestingType::Property,
44 RestingType::RailroadUtilityChance, RestingType::Property, RestingType::RailroadUtilityChance,
45 RestingType::Property, RestingType::Property, RestingType::GoFreeParking,
46 RestingType::Property, RestingType::RailroadUtilityChance, RestingType::Property,
47 RestingType::Property, RestingType::RailroadUtilityChance, RestingType::Property,
48 RestingType::Property, RestingType::RailroadUtilityChance, RestingType::Property,
49 RestingType::GoFreeParking, RestingType::Property, RestingType::Property,
50 RestingType::RailroadUtilityChance, RestingType::Property, RestingType::RailroadUtilityChance,
51 RestingType::RailroadUtilityChance, RestingType::Property, RestingType::RailroadUtilityChance,
52 RestingType::Property, RestingType::InJail
56 {
return static_cast<std::size_t
>(
value); }
79 else if (square < FreeParking)
95 constexpr std::uint32_t
PerToken = 0x0063;
103 pose->yaw -= std::numbers::pi_v<float> / 2.0F;
106 case 3:
pose->x += 15.0F;
pose->z += 16.0F;
break;
107 case 2:
pose->x -= 15.0F;
pose->z += 16.0F;
break;
108 case 1:
pose->x -= 16.0F;
pose->z -= 15.0F;
break;
109 default:
pose->x += 16.0F;
pose->z -= 15.0F;
break;
120 if (!
pose)
return std::nullopt;
140 pose->yaw += std::numbers::pi_v<float> *
static_cast<float>(
offset.degrees) / 180.0F;
176 else if (square < FreeParking)
180 pose.yaw = std::numbers::pi_v<float> / 2.0F;
186 pose.yaw = std::numbers::pi_v<float>;
192 pose.yaw = -std::numbers::pi_v<float> / 2.0F;
204 std::uint8_t
boardSquare, std::uint8_t house)
noexcept
const std::array< Point3D, 42 > & locations3D()
constexpr DataTag dataTag(DataId id) noexcept
constexpr std::uint16_t legacyGroupValue(LegacyGroupId group) noexcept
constexpr std::uint16_t dataGroup(DataId id) noexcept
std::optional< BuildingPose > housePosition(std::uint8_t boardSquare, std::uint8_t house) noexcept
std::optional< BuildingPose > hotelPosition(std::uint8_t boardSquare) noexcept
constexpr std::uint8_t BoardSquareCountWithSpecials
std::optional< RestingIdleCategory > restingIdleCategory(std::uint8_t boardSquare) noexcept
std::optional< TokenPose > tokenOrientation(std::uint8_t boardSquare) noexcept
constexpr std::uint8_t RestingPositionCount
std::optional< TokenPose > tokenAnimationStartOrientation(std::uint8_t boardSquare, data::DataId sequenceId) noexcept
std::optional< TokenPose > tokenRestingOrientation(std::uint8_t boardSquare, std::uint8_t restingPosition, std::uint8_t token) noexcept