mirror of https://github.com/OpenRCT2/OpenRCT2.git
Peep::ItemFlags merging (#13511)
* Merge standard and extra item flags for peeps * Update replays
This commit is contained in:
parent
c12e1634fc
commit
9cbdae2ef1
|
@ -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")
|
||||
|
|
|
@ -48,8 +48,8 @@
|
|||
<TitleSequencesSha1>304d13a126c15bf2c86ff13b81a2f2cc1856ac8d</TitleSequencesSha1>
|
||||
<ObjectsUrl>https://github.com/OpenRCT2/objects/releases/download/v1.0.20/objects.zip</ObjectsUrl>
|
||||
<ObjectsSha1>151424d24b1d49a167932b58319bedaa6ec368e9</ObjectsSha1>
|
||||
<ReplaysUrl>https://github.com/OpenRCT2/replays/releases/download/v0.0.22/replays.zip</ReplaysUrl>
|
||||
<ReplaysSha1>7591db0a3842a7ac44fcbfbff9a573c9cb3ddc56</ReplaysSha1>
|
||||
<ReplaysUrl>https://github.com/OpenRCT2/replays/releases/download/v0.0.23/replays.zip</ReplaysUrl>
|
||||
<ReplaysSha1>AC67B93731B6246A31D9A8B01A6CA12AE98AE0D1</ReplaysSha1>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -1568,7 +1568,7 @@ private:
|
|||
dst->FavouriteRideRating = 0;
|
||||
}
|
||||
|
||||
dst->SetItemFlags(src->item_standard_flags, 0);
|
||||
dst->SetItemFlags(src->GetItemFlags());
|
||||
|
||||
if (dst->AssignedPeepType == PeepType::Guest)
|
||||
{
|
||||
|
|
|
@ -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<uint64_t>(item_extra_flags) << 32);
|
||||
}
|
||||
};
|
||||
assert_struct_size(RCT2SpritePeep, 0x100);
|
||||
|
||||
|
|
|
@ -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<uint32_t>(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<uint32_t>(src->GetItemFlags());
|
||||
}
|
||||
|
||||
void S6Exporter::ExportSpriteMisc(RCT12SpriteBase* cdst, const SpriteBase* csrc)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue