From 0f183e9ad2af9c344fe60d192e1d70b9c030cd1e Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 12 Sep 2021 18:29:37 +0200 Subject: [PATCH 1/5] Make FreeEntity take a reference --- src/openrct2/world/Sprite.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/openrct2/world/Sprite.cpp b/src/openrct2/world/Sprite.cpp index 7faafd75c5..34571a5bce 100644 --- a/src/openrct2/world/Sprite.cpp +++ b/src/openrct2/world/Sprite.cpp @@ -44,7 +44,7 @@ constexpr const uint32_t SPATIAL_INDEX_LOCATION_NULL = SPATIAL_INDEX_SIZE - 1; static std::array, SPATIAL_INDEX_SIZE> gSpriteSpatialIndex; -static void FreeEntity(EntityBase* entity); +static void FreeEntity(EntityBase& entity); constexpr size_t GetSpatialIndexOffset(int32_t x, int32_t y) { @@ -238,7 +238,7 @@ void reset_sprite_list() { continue; } - FreeEntity(spr); + FreeEntity(*spr); spr->Type = EntityType::Null; spr->sprite_index = i; @@ -545,10 +545,10 @@ void sprite_set_coordinates(const CoordsXYZ& spritePos, EntityBase* sprite) /** * Frees any dynamically attached memory to the entity, such as peep name. */ -static void FreeEntity(EntityBase* entity) +static void FreeEntity(EntityBase& entity) { - auto* guest = entity->As(); - auto* staff = entity->As(); + auto* guest = entity.As(); + auto* staff = entity.As(); if (staff != nullptr) { staff->SetName({}); @@ -567,7 +567,7 @@ static void FreeEntity(EntityBase* entity) */ void sprite_remove(EntityBase* sprite) { - FreeEntity(sprite); + FreeEntity(*sprite); EntityTweener::Get().RemoveEntity(sprite); RemoveFromEntityList(sprite); // remove from existing list From 3e1544aac8afceaa95a9a2f2af80bad54f506a53 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 12 Sep 2021 18:31:21 +0200 Subject: [PATCH 2/5] Add missing object types to ObjectTypeToString() --- .../scripting/bindings/object/ScObject.hpp | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/openrct2/scripting/bindings/object/ScObject.hpp b/src/openrct2/scripting/bindings/object/ScObject.hpp index a2d1938ae9..ee2a8dc138 100644 --- a/src/openrct2/scripting/bindings/object/ScObject.hpp +++ b/src/openrct2/scripting/bindings/object/ScObject.hpp @@ -60,9 +60,25 @@ namespace OpenRCT2::Scripting static std::string_view ObjectTypeToString(uint8_t type) { - static const char* Types[] = { "ride", "small_scenery", "large_scenery", "wall", "banner", - "footpath", "footpath_addition", "scenery_group", "park_entrance", "water", - "stex", "terrain_surface", "terrain_edge", "station", "music" }; + static const char* Types[] = { + "ride", + "small_scenery", + "large_scenery", + "wall", + "banner", + "footpath", + "footpath_addition", + "scenery_group", + "park_entrance", + "water", + "stex", + "terrain_surface", + "terrain_edge", + "station", + "music", + "footpath_surface", + "footpath_railings", + }; if (type >= std::size(Types)) return "unknown"; return Types[type]; From 1426010652d5655c64266665cb6ebdfe2a78dcbe Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 12 Sep 2021 18:33:27 +0200 Subject: [PATCH 3/5] Plugin: use ObjectEntryIndex for music and entrance style --- src/openrct2/scripting/bindings/ride/ScRide.cpp | 8 ++++---- src/openrct2/scripting/bindings/ride/ScRide.hpp | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/openrct2/scripting/bindings/ride/ScRide.cpp b/src/openrct2/scripting/bindings/ride/ScRide.cpp index d03c54d141..6bdd07b4f7 100644 --- a/src/openrct2/scripting/bindings/ride/ScRide.cpp +++ b/src/openrct2/scripting/bindings/ride/ScRide.cpp @@ -252,13 +252,13 @@ namespace OpenRCT2::Scripting } } - uint8_t ScRide::stationStyle_get() const + ObjectEntryIndex ScRide::stationStyle_get() const { auto ride = GetRide(); return ride != nullptr ? ride->entrance_style : 0; } - void ScRide::stationStyle_set(uint8_t value) + void ScRide::stationStyle_set(ObjectEntryIndex value) { ThrowIfGameStateNotMutable(); auto ride = GetRide(); @@ -268,13 +268,13 @@ namespace OpenRCT2::Scripting } } - uint8_t ScRide::music_get() const + ObjectEntryIndex ScRide::music_get() const { auto ride = GetRide(); return ride != nullptr ? ride->music : 0; } - void ScRide::music_set(uint8_t value) + void ScRide::music_set(ObjectEntryIndex value) { ThrowIfGameStateNotMutable(); auto ride = GetRide(); diff --git a/src/openrct2/scripting/bindings/ride/ScRide.hpp b/src/openrct2/scripting/bindings/ride/ScRide.hpp index 4b05584f3c..0ee26d3d46 100644 --- a/src/openrct2/scripting/bindings/ride/ScRide.hpp +++ b/src/openrct2/scripting/bindings/ride/ScRide.hpp @@ -109,13 +109,13 @@ namespace OpenRCT2::Scripting void colourSchemes_set(const std::vector& value); - uint8_t stationStyle_get() const; + ObjectEntryIndex stationStyle_get() const; - void stationStyle_set(uint8_t value); + void stationStyle_set(ObjectEntryIndex value); - uint8_t music_get() const; + ObjectEntryIndex music_get() const; - void music_set(uint8_t value); + void music_set(ObjectEntryIndex value); std::vector> stations_get() const; From 6202ecb281ea803681506128261bd4c9543db0bb Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Sun, 12 Sep 2021 18:36:50 +0200 Subject: [PATCH 4/5] Make util_zlib_inflate() take const --- src/openrct2/util/Util.cpp | 2 +- src/openrct2/util/Util.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/openrct2/util/Util.cpp b/src/openrct2/util/Util.cpp index 78225880b7..2260f5f1b6 100644 --- a/src/openrct2/util/Util.cpp +++ b/src/openrct2/util/Util.cpp @@ -566,7 +566,7 @@ constexpr int32_t MAX_ZLIB_REALLOC = 4 * 1024 * 1024; * @return Returns a pointer to memory holding decompressed data or NULL on failure. * @note It is caller's responsibility to free() the returned pointer once done with it. */ -uint8_t* util_zlib_inflate(uint8_t* data, size_t data_in_size, size_t* data_out_size) +uint8_t* util_zlib_inflate(const uint8_t* data, size_t data_in_size, size_t* data_out_size) { int32_t ret = Z_OK; uLongf out_size = static_cast(*data_out_size); diff --git a/src/openrct2/util/Util.h b/src/openrct2/util/Util.h index e0db4f33a2..678da94245 100644 --- a/src/openrct2/util/Util.h +++ b/src/openrct2/util/Util.h @@ -56,7 +56,7 @@ bool str_is_null_or_empty(const char* str); uint32_t util_rand(); std::optional> util_zlib_deflate(const uint8_t* data, size_t data_in_size); -uint8_t* util_zlib_inflate(uint8_t* data, size_t data_in_size, size_t* data_out_size); +uint8_t* util_zlib_inflate(const uint8_t* data, size_t data_in_size, size_t* data_out_size); bool util_gzip_compress(FILE* source, FILE* dest); int8_t add_clamp_int8_t(int8_t value, int8_t value_to_add); From 5d039a5f55ab49878e804a4e9246dcbe88edc124 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Sun, 12 Sep 2021 18:45:53 +0200 Subject: [PATCH 5/5] Use std::string_view instead of C string MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: ζeh Matt <5415177+ZehMatt@users.noreply.github.com> --- src/openrct2/scripting/bindings/object/ScObject.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openrct2/scripting/bindings/object/ScObject.hpp b/src/openrct2/scripting/bindings/object/ScObject.hpp index ee2a8dc138..19f1b09399 100644 --- a/src/openrct2/scripting/bindings/object/ScObject.hpp +++ b/src/openrct2/scripting/bindings/object/ScObject.hpp @@ -60,7 +60,7 @@ namespace OpenRCT2::Scripting static std::string_view ObjectTypeToString(uint8_t type) { - static const char* Types[] = { + static constexpr std::string_view Types[] = { "ride", "small_scenery", "large_scenery",