diff --git a/src/openrct2-ui/windows/Map.cpp b/src/openrct2-ui/windows/Map.cpp index 9ac7f82c55..5e61d3fbf2 100644 --- a/src/openrct2-ui/windows/Map.cpp +++ b/src/openrct2-ui/windows/Map.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 26fcb2f43e..53448356c9 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2-ui/windows/StaffList.cpp b/src/openrct2-ui/windows/StaffList.cpp index f5de96e323..540ebebcbb 100644 --- a/src/openrct2-ui/windows/StaffList.cpp +++ b/src/openrct2-ui/windows/StaffList.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include diff --git a/src/openrct2/GameStateSnapshots.cpp b/src/openrct2/GameStateSnapshots.cpp index 9f5262d132..d5ec981383 100644 --- a/src/openrct2/GameStateSnapshots.cpp +++ b/src/openrct2/GameStateSnapshots.cpp @@ -11,6 +11,7 @@ #include "core/CircularBuffer.h" #include "peep/Peep.h" +#include "world/EntityList.h" #include "world/Sprite.h" static constexpr size_t MaximumGameStateSnapshots = 32; diff --git a/src/openrct2/actions/RideDemolishAction.cpp b/src/openrct2/actions/RideDemolishAction.cpp index 6ad78b6611..d3c9074a8d 100644 --- a/src/openrct2/actions/RideDemolishAction.cpp +++ b/src/openrct2/actions/RideDemolishAction.cpp @@ -22,6 +22,7 @@ #include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../world/Banner.h" +#include "../world/EntityList.h" #include "../world/Park.h" #include "../world/Sprite.h" #include "MazeSetTrackAction.h" diff --git a/src/openrct2/actions/StaffSetColourAction.cpp b/src/openrct2/actions/StaffSetColourAction.cpp index 4767da64d1..f41462a167 100644 --- a/src/openrct2/actions/StaffSetColourAction.cpp +++ b/src/openrct2/actions/StaffSetColourAction.cpp @@ -17,6 +17,7 @@ #include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../windows/Intent.h" +#include "../world/EntityList.h" #include "../world/Sprite.h" StaffSetColourAction::StaffSetColourAction(StaffType staffType, uint8_t colour) diff --git a/src/openrct2/interface/InteractiveConsole.cpp b/src/openrct2/interface/InteractiveConsole.cpp index d54f5406c1..13988e3eff 100644 --- a/src/openrct2/interface/InteractiveConsole.cpp +++ b/src/openrct2/interface/InteractiveConsole.cpp @@ -46,6 +46,7 @@ #include "../util/Util.h" #include "../windows/Intent.h" #include "../world/Climate.h" +#include "../world/EntityList.h" #include "../world/Park.h" #include "../world/Scenery.h" #include "../world/Sprite.h" diff --git a/src/openrct2/interface/Viewport.cpp b/src/openrct2/interface/Viewport.cpp index f2e2106706..42bee34297 100644 --- a/src/openrct2/interface/Viewport.cpp +++ b/src/openrct2/interface/Viewport.cpp @@ -25,6 +25,7 @@ #include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../world/Climate.h" +#include "../world/EntityList.h" #include "../world/Map.h" #include "../world/Sprite.h" #include "Colour.h" diff --git a/src/openrct2/interface/Window_internal.cpp b/src/openrct2/interface/Window_internal.cpp index a8518bdcaf..9b3140dee4 100644 --- a/src/openrct2/interface/Window_internal.cpp +++ b/src/openrct2/interface/Window_internal.cpp @@ -1,5 +1,6 @@ #include "Window_internal.h" +#include "../world/EntityList.h" #include "../world/Sprite.h" void rct_window::SetLocation(const CoordsXYZ& coords) diff --git a/src/openrct2/network/NetworkBase.cpp b/src/openrct2/network/NetworkBase.cpp index 7ff908d54e..c0e0779121 100644 --- a/src/openrct2/network/NetworkBase.cpp +++ b/src/openrct2/network/NetworkBase.cpp @@ -24,6 +24,7 @@ #include "../ui/UiContext.h" #include "../ui/WindowManager.h" #include "../util/SawyerCoding.h" +#include "../world/EntityList.h" #include "../world/Location.hpp" #include "../world/Sprite.h" #include "network.h" diff --git a/src/openrct2/paint/sprite/Paint.Sprite.cpp b/src/openrct2/paint/sprite/Paint.Sprite.cpp index be08dac38d..c27bb3c055 100644 --- a/src/openrct2/paint/sprite/Paint.Sprite.cpp +++ b/src/openrct2/paint/sprite/Paint.Sprite.cpp @@ -16,6 +16,7 @@ #include "../../ride/RideData.h" #include "../../ride/TrackDesign.h" #include "../../ride/VehiclePaint.h" +#include "../../world/EntityList.h" #include "../../world/Sprite.h" #include "../Paint.h" diff --git a/src/openrct2/ride/CableLift.cpp b/src/openrct2/ride/CableLift.cpp index 118b3c96e0..fa1d5c6b7f 100644 --- a/src/openrct2/ride/CableLift.cpp +++ b/src/openrct2/ride/CableLift.cpp @@ -12,6 +12,7 @@ #include "../audio/audio.h" #include "../rct12/RCT12.h" #include "../util/Util.h" +#include "../world/EntityList.h" #include "../world/Sprite.h" #include "Ride.h" #include "RideData.h" diff --git a/src/openrct2/scripting/ScEntity.hpp b/src/openrct2/scripting/ScEntity.hpp index f4effa176a..c9aded3b04 100644 --- a/src/openrct2/scripting/ScEntity.hpp +++ b/src/openrct2/scripting/ScEntity.hpp @@ -16,6 +16,7 @@ # include "../peep/Peep.h" # include "../peep/Staff.h" # include "../util/Util.h" +# include "../world/EntityList.h" # include "../world/Sprite.h" # include "Duktape.hpp" # include "ScRide.hpp" diff --git a/src/openrct2/scripting/ScMap.hpp b/src/openrct2/scripting/ScMap.hpp index 3d7ac0de6f..86d7748030 100644 --- a/src/openrct2/scripting/ScMap.hpp +++ b/src/openrct2/scripting/ScMap.hpp @@ -13,6 +13,7 @@ # include "../common.h" # include "../ride/Ride.h" +# include "../world/EntityList.h" # include "../world/Map.h" # include "Duktape.hpp" # include "ScEntity.hpp" diff --git a/src/openrct2/world/Entity.h b/src/openrct2/world/Entity.h new file mode 100644 index 0000000000..6e12851fb7 --- /dev/null +++ b/src/openrct2/world/Entity.h @@ -0,0 +1,27 @@ +/***************************************************************************** + * Copyright (c) 2014-2021 OpenRCT2 developers + * + * For a complete list of all authors, please refer to contributors.md + * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is licensed under the GNU General Public License version 3. + *****************************************************************************/ + +#pragma once + +#include "SpriteBase.h" + +SpriteBase* try_get_sprite(size_t spriteIndex); +SpriteBase* get_sprite(size_t sprite_idx); + +template T* GetEntity(size_t sprite_idx) +{ + auto spr = get_sprite(sprite_idx); + return spr != nullptr ? spr->As() : nullptr; +} + +template T* TryGetEntity(size_t sprite_idx) +{ + auto spr = try_get_sprite(sprite_idx); + return spr != nullptr ? spr->As() : nullptr; +} diff --git a/src/openrct2/world/EntityList.h b/src/openrct2/world/EntityList.h index 90e7aab116..6f2d61ea7c 100644 --- a/src/openrct2/world/EntityList.h +++ b/src/openrct2/world/EntityList.h @@ -11,6 +11,7 @@ #include "../common.h" #include "../rct12/RCT12.h" +#include "Entity.h" #include "Location.hpp" #include "SpriteBase.h" @@ -34,7 +35,6 @@ uint16_t GetEntityListCount(EntityListId list); uint16_t GetNumFreeEntities(); void RebuildEntityLists(); const std::vector& GetEntityTileList(const CoordsXY& spritePos); -template T* GetEntity(size_t sprite_idx); template class EntityIterator { diff --git a/src/openrct2/world/Footpath.cpp b/src/openrct2/world/Footpath.cpp index 2fe6083bba..9c420a0c66 100644 --- a/src/openrct2/world/Footpath.cpp +++ b/src/openrct2/world/Footpath.cpp @@ -28,6 +28,7 @@ #include "../ride/Track.h" #include "../ride/TrackData.h" #include "../util/Util.h" +#include "EntityList.h" #include "Map.h" #include "MapAnimation.h" #include "Park.h" diff --git a/src/openrct2/world/MapAnimation.cpp b/src/openrct2/world/MapAnimation.cpp index d6c901cda4..cc86e52e00 100644 --- a/src/openrct2/world/MapAnimation.cpp +++ b/src/openrct2/world/MapAnimation.cpp @@ -18,6 +18,7 @@ #include "../ride/Track.h" #include "../world/Wall.h" #include "Banner.h" +#include "EntityList.h" #include "Footpath.h" #include "LargeScenery.h" #include "Map.h" diff --git a/src/openrct2/world/Sprite.h b/src/openrct2/world/Sprite.h index 43629fdc5d..0058633787 100644 --- a/src/openrct2/world/Sprite.h +++ b/src/openrct2/world/Sprite.h @@ -13,7 +13,7 @@ #include "../common.h" #include "../peep/Peep.h" #include "../ride/Vehicle.h" -#include "EntityList.h" +#include "Entity.h" #include "Fountain.h" #include "SpriteBase.h" @@ -198,20 +198,6 @@ enum LitterType : uint8_t LITTER_TYPE_EMPTY_BOWL_BLUE, }; -SpriteBase* try_get_sprite(size_t spriteIndex); -SpriteBase* get_sprite(size_t sprite_idx); -template T* GetEntity(size_t sprite_idx) -{ - auto spr = get_sprite(sprite_idx); - return spr != nullptr ? spr->As() : nullptr; -} - -template T* TryGetEntity(size_t sprite_idx) -{ - auto spr = try_get_sprite(sprite_idx); - return spr != nullptr ? spr->As() : nullptr; -} - constexpr const uint32_t SPATIAL_INDEX_SIZE = (MAXIMUM_MAP_SIZE_TECHNICAL * MAXIMUM_MAP_SIZE_TECHNICAL) + 1; constexpr const uint32_t SPATIAL_INDEX_LOCATION_NULL = SPATIAL_INDEX_SIZE - 1;