diff --git a/CMakeLists.txt b/CMakeLists.txt
index d1318d8d7e..3755180a93 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -44,8 +44,8 @@ set(TITLE_SEQUENCE_SHA1 "304d13a126c15bf2c86ff13b81a2f2cc1856ac8d")
set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v1.0.20/objects.zip")
set(OBJECTS_SHA1 "151424d24b1d49a167932b58319bedaa6ec368e9")
-set(REPLAYS_URL "https://github.com/OpenRCT2/replays/releases/download/v0.0.22/replays.zip")
-set(REPLAYS_SHA1 "7591db0a3842a7ac44fcbfbff9a573c9cb3ddc56")
+set(REPLAYS_URL "https://github.com/OpenRCT2/replays/releases/download/v0.0.23/replays.zip")
+set(REPLAYS_SHA1 "AC67B93731B6246A31D9A8B01A6CA12AE98AE0D1")
option(FORCE32 "Force 32-bit build. It will add `-m32` to compiler flags.")
option(WITH_TESTS "Build tests")
diff --git a/openrct2.proj b/openrct2.proj
index 099197a8fa..d63e4ba8d0 100644
--- a/openrct2.proj
+++ b/openrct2.proj
@@ -48,8 +48,8 @@
304d13a126c15bf2c86ff13b81a2f2cc1856ac8d
https://github.com/OpenRCT2/objects/releases/download/v1.0.20/objects.zip
151424d24b1d49a167932b58319bedaa6ec368e9
- https://github.com/OpenRCT2/replays/releases/download/v0.0.22/replays.zip
- 7591db0a3842a7ac44fcbfbff9a573c9cb3ddc56
+ https://github.com/OpenRCT2/replays/releases/download/v0.0.23/replays.zip
+ AC67B93731B6246A31D9A8B01A6CA12AE98AE0D1
diff --git a/src/openrct2/GameStateSnapshots.cpp b/src/openrct2/GameStateSnapshots.cpp
index b655e03d5c..761f7e8234 100644
--- a/src/openrct2/GameStateSnapshots.cpp
+++ b/src/openrct2/GameStateSnapshots.cpp
@@ -257,7 +257,7 @@ struct GameStateSnapshots final : public IGameStateSnapshots
{
COMPARE_FIELD(Peep, RideTypesBeenOn[i]);
}
- COMPARE_FIELD(Peep, ItemExtraFlags);
+ COMPARE_FIELD(Peep, ItemFlags);
COMPARE_FIELD(Peep, Photo2RideRef);
COMPARE_FIELD(Peep, Photo3RideRef);
COMPARE_FIELD(Peep, Photo4RideRef);
@@ -324,7 +324,6 @@ struct GameStateSnapshots final : public IGameStateSnapshots
COMPARE_FIELD(Peep, HatColour);
COMPARE_FIELD(Peep, FavouriteRide);
COMPARE_FIELD(Peep, FavouriteRideRating);
- COMPARE_FIELD(Peep, ItemStandardFlags);
}
void CompareSpriteDataVehicle(
diff --git a/src/openrct2/peep/Peep.cpp b/src/openrct2/peep/Peep.cpp
index cb2e04833b..77bed4202c 100644
--- a/src/openrct2/peep/Peep.cpp
+++ b/src/openrct2/peep/Peep.cpp
@@ -3329,58 +3329,29 @@ void Peep::RemoveFromRide()
StateReset();
}
-uint64_t Peep::GetItemFlags(bool bit32Flag, bool ExtraItem) const
+uint64_t Peep::GetItemFlags() const
{
- if (bit32Flag)
- {
- if (ExtraItem)
- return ItemExtraFlags;
- return ItemStandardFlags;
- }
- uint64_t ItemFlag = ItemExtraFlags;
- return ItemStandardFlags | (ItemFlag << 32);
+ return ItemFlags;
}
-void Peep::SetItemFlags(uint32_t ItemFlag, bool ExtraItem)
+void Peep::SetItemFlags(uint64_t itemFlags)
{
- if (ExtraItem)
- {
- ItemExtraFlags = ItemFlag;
- return;
- }
- ItemStandardFlags = ItemFlag;
+ ItemFlags = itemFlags;
}
void Peep::RemoveAllItems()
{
- ItemStandardFlags = 0;
- ItemExtraFlags = 0;
+ ItemFlags = 0;
}
void Peep::RemoveItem(ShopItem item)
{
- // TODO: Join up standard and extra flags into a `uint64_t` to remove this if for the extra flags
- if (EnumValue(item) > EnumValue(ShopItem::Admission))
- {
- ItemExtraFlags &= ~(1 << (EnumValue(item) - EnumValue(ShopItem::Photo2)));
- }
- else
- {
- ItemStandardFlags &= ~EnumToFlag(item);
- }
+ ItemFlags &= ~EnumToFlag(item);
}
void Peep::GiveItem(ShopItem item)
{
- // TODO: Join up standard and extra flags into a `uint64_t` to remove this if for the extra flags
- if (EnumValue(item) > EnumValue(ShopItem::Admission))
- {
- ItemExtraFlags |= (1 << (EnumValue(item) - EnumValue(ShopItem::Photo2)));
- }
- else
- {
- ItemStandardFlags |= EnumToFlag(item);
- }
+ ItemFlags |= EnumToFlag(item);
}
bool Peep::HasItem(ShopItem peepItem) const
diff --git a/src/openrct2/peep/Peep.h b/src/openrct2/peep/Peep.h
index 987341a30c..6e2e8ac23c 100644
--- a/src/openrct2/peep/Peep.h
+++ b/src/openrct2/peep/Peep.h
@@ -597,7 +597,6 @@ struct Peep : SpriteBase
uint8_t WindowInvalidateFlags;
money16 PaidOnDrink;
uint8_t RideTypesBeenOn[16];
- uint32_t ItemExtraFlags;
ride_id_t Photo2RideRef;
ride_id_t Photo3RideRef;
ride_id_t Photo4RideRef;
@@ -725,7 +724,7 @@ struct Peep : SpriteBase
uint8_t HatColour;
ride_id_t FavouriteRide;
uint8_t FavouriteRideRating;
- uint32_t ItemStandardFlags;
+ uint64_t ItemFlags;
public: // Peep
Guest* AsGuest();
@@ -760,8 +759,8 @@ public: // Peep
// Reset the peep's stored goal, which means they will forget any stored pathfinding history
// on the next peep_pathfind_choose_direction call.
void ResetPathfindGoal();
- uint64_t GetItemFlags(bool bit32Flag = false, bool ExtraItem = false) const;
- void SetItemFlags(uint32_t ItemFlag, bool ExtraItem = false);
+ uint64_t GetItemFlags() const;
+ void SetItemFlags(uint64_t itemFlags);
void RemoveAllItems();
void RemoveItem(ShopItem item);
void GiveItem(ShopItem item);
diff --git a/src/openrct2/rct1/RCT1.h b/src/openrct2/rct1/RCT1.h
index cdb8a82543..a03d67b15e 100644
--- a/src/openrct2/rct1/RCT1.h
+++ b/src/openrct2/rct1/RCT1.h
@@ -462,6 +462,10 @@ struct rct1_peep : RCT12SpriteBase
uint8_t favourite_ride_rating; // 0xFA
uint8_t pad_FB;
uint32_t item_standard_flags; // 0xFC
+ uint64_t GetItemFlags() const
+ {
+ return item_standard_flags;
+ }
};
assert_struct_size(rct1_peep, 0x100);
diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp
index 26ac64659a..fd43a2d939 100644
--- a/src/openrct2/rct1/S4Importer.cpp
+++ b/src/openrct2/rct1/S4Importer.cpp
@@ -1568,7 +1568,7 @@ private:
dst->FavouriteRideRating = 0;
}
- dst->SetItemFlags(src->item_standard_flags, 0);
+ dst->SetItemFlags(src->GetItemFlags());
if (dst->AssignedPeepType == PeepType::Guest)
{
diff --git a/src/openrct2/rct2/RCT2.h b/src/openrct2/rct2/RCT2.h
index 31030edf0e..1017e5a3b1 100644
--- a/src/openrct2/rct2/RCT2.h
+++ b/src/openrct2/rct2/RCT2.h
@@ -726,6 +726,10 @@ struct RCT2SpritePeep : RCT12SpriteBase
uint8_t favourite_ride_rating; // 0xFA
uint8_t pad_FB;
uint32_t item_standard_flags; // 0xFC
+ uint64_t GetItemFlags() const
+ {
+ return item_standard_flags | (static_cast(item_extra_flags) << 32);
+ }
};
assert_struct_size(RCT2SpritePeep, 0x100);
diff --git a/src/openrct2/rct2/S6Exporter.cpp b/src/openrct2/rct2/S6Exporter.cpp
index b4ea21065f..5ee52da09b 100644
--- a/src/openrct2/rct2/S6Exporter.cpp
+++ b/src/openrct2/rct2/S6Exporter.cpp
@@ -1173,7 +1173,7 @@ void S6Exporter::ExportSpritePeep(RCT2SpritePeep* dst, const Peep* src)
{
dst->ride_types_been_on[i] = src->RideTypesBeenOn[i];
}
- dst->item_extra_flags = src->GetItemFlags(true, true);
+ dst->item_extra_flags = static_cast(src->GetItemFlags() >> 32);
dst->photo2_ride_ref = OpenRCT2RideIdToRCT12RideId(src->Photo2RideRef);
dst->photo3_ride_ref = OpenRCT2RideIdToRCT12RideId(src->Photo3RideRef);
dst->photo4_ride_ref = OpenRCT2RideIdToRCT12RideId(src->Photo4RideRef);
@@ -1245,7 +1245,7 @@ void S6Exporter::ExportSpritePeep(RCT2SpritePeep* dst, const Peep* src)
dst->hat_colour = src->HatColour;
dst->favourite_ride = OpenRCT2RideIdToRCT12RideId(src->FavouriteRide);
dst->favourite_ride_rating = src->FavouriteRideRating;
- dst->item_standard_flags = src->GetItemFlags(true);
+ dst->item_standard_flags = static_cast(src->GetItemFlags());
}
void S6Exporter::ExportSpriteMisc(RCT12SpriteBase* cdst, const SpriteBase* csrc)
diff --git a/src/openrct2/rct2/S6Importer.cpp b/src/openrct2/rct2/S6Importer.cpp
index b130415bef..6a79af0e95 100644
--- a/src/openrct2/rct2/S6Importer.cpp
+++ b/src/openrct2/rct2/S6Importer.cpp
@@ -1461,7 +1461,7 @@ public:
{
dst->RideTypesBeenOn[i] = src->ride_types_been_on[i];
}
- dst->SetItemFlags(src->item_extra_flags, 1);
+ dst->SetItemFlags(src->GetItemFlags());
dst->Photo2RideRef = RCT12RideIdToOpenRCT2RideId(src->photo2_ride_ref);
dst->Photo3RideRef = RCT12RideIdToOpenRCT2RideId(src->photo3_ride_ref);
dst->Photo4RideRef = RCT12RideIdToOpenRCT2RideId(src->photo4_ride_ref);
@@ -1533,7 +1533,6 @@ public:
dst->HatColour = src->hat_colour;
dst->FavouriteRide = RCT12RideIdToOpenRCT2RideId(src->favourite_ride);
dst->FavouriteRideRating = src->favourite_ride_rating;
- dst->SetItemFlags(src->item_standard_flags, 0);
}
void ImportSpriteMisc(SpriteBase* cdst, const RCT12SpriteBase* csrc)
diff --git a/test/tests/S6ImportExportTests.cpp b/test/tests/S6ImportExportTests.cpp
index 39196d1103..0da56c0bea 100644
--- a/test/tests/S6ImportExportTests.cpp
+++ b/test/tests/S6ImportExportTests.cpp
@@ -191,7 +191,7 @@ static void CompareSpriteDataPeep(const Peep& left, const Peep& right)
{
COMPARE_FIELD(RideTypesBeenOn[i]);
}
- COMPARE_FIELD(ItemExtraFlags);
+ COMPARE_FIELD(ItemFlags);
COMPARE_FIELD(Photo2RideRef);
COMPARE_FIELD(Photo3RideRef);
COMPARE_FIELD(Photo4RideRef);
@@ -267,7 +267,6 @@ static void CompareSpriteDataPeep(const Peep& left, const Peep& right)
COMPARE_FIELD(HatColour);
COMPARE_FIELD(FavouriteRide);
COMPARE_FIELD(FavouriteRideRating);
- COMPARE_FIELD(ItemStandardFlags);
}
static void CompareSpriteDataVehicle(const Vehicle& left, const Vehicle& right)