mirror of https://github.com/OpenRCT2/OpenRCT2.git
Close #10051: Create TrackDesignSceneryElement
This commit is contained in:
parent
dd6d028c5b
commit
6be7c42a3d
|
@ -179,8 +179,16 @@ public:
|
|||
for (uint8_t endFlag = _stream.ReadValue<uint8_t>(); endFlag != 0xFF; endFlag = _stream.ReadValue<uint8_t>())
|
||||
{
|
||||
_stream.SetPosition(_stream.GetPosition() - 1);
|
||||
rct_td6_scenery_element sceneryElement{};
|
||||
_stream.Read(&sceneryElement, sizeof(rct_td6_scenery_element));
|
||||
rct_td6_scenery_element t6SceneryElement{};
|
||||
_stream.Read(&t6SceneryElement, sizeof(rct_td6_scenery_element));
|
||||
TrackDesignSceneryElement sceneryElement{};
|
||||
sceneryElement.scenery_object = t6SceneryElement.scenery_object;
|
||||
sceneryElement.x = t6SceneryElement.x;
|
||||
sceneryElement.y = t6SceneryElement.y;
|
||||
sceneryElement.z = t6SceneryElement.z;
|
||||
sceneryElement.flags = t6SceneryElement.flags;
|
||||
sceneryElement.primary_colour = t6SceneryElement.primary_colour;
|
||||
sceneryElement.secondary_colour = t6SceneryElement.secondary_colour;
|
||||
td->scenery_elements.push_back(sceneryElement);
|
||||
}
|
||||
|
||||
|
|
|
@ -809,7 +809,7 @@ static void track_design_update_max_min_coordinates(int16_t x, int16_t y, int16_
|
|||
}
|
||||
|
||||
static bool TrackDesignPlaceSceneryElementGetEntry(
|
||||
uint8_t& entry_type, uint8_t& entry_index, const rct_td6_scenery_element& scenery)
|
||||
uint8_t& entry_type, uint8_t& entry_index, const TrackDesignSceneryElement& scenery)
|
||||
{
|
||||
if (!find_object_in_entry_group(&scenery.scenery_object, &entry_type, &entry_index))
|
||||
{
|
||||
|
@ -850,7 +850,7 @@ static bool TrackDesignPlaceSceneryElementGetEntry(
|
|||
}
|
||||
|
||||
static bool TrackDesignPlaceSceneryElementRemoveGhost(
|
||||
CoordsXY mapCoord, const rct_td6_scenery_element& scenery, uint8_t rotation, int32_t originZ)
|
||||
CoordsXY mapCoord, const TrackDesignSceneryElement& scenery, uint8_t rotation, int32_t originZ)
|
||||
{
|
||||
uint8_t entry_type, entry_index;
|
||||
if (TrackDesignPlaceSceneryElementGetEntry(entry_type, entry_index, scenery))
|
||||
|
@ -905,7 +905,7 @@ static bool TrackDesignPlaceSceneryElementRemoveGhost(
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool TrackDesignPlaceSceneryElementGetPlaceZ(const rct_td6_scenery_element& scenery)
|
||||
static bool TrackDesignPlaceSceneryElementGetPlaceZ(const TrackDesignSceneryElement& scenery)
|
||||
{
|
||||
int32_t z = scenery.z * 8 + _trackDesignPlaceZ;
|
||||
if (z < _trackDesignPlaceSceneryZ)
|
||||
|
@ -920,7 +920,7 @@ static bool TrackDesignPlaceSceneryElementGetPlaceZ(const rct_td6_scenery_elemen
|
|||
}
|
||||
|
||||
static bool TrackDesignPlaceSceneryElement(
|
||||
CoordsXY mapCoord, uint8_t mode, const rct_td6_scenery_element& scenery, uint8_t rotation, int32_t originZ)
|
||||
CoordsXY mapCoord, uint8_t mode, const TrackDesignSceneryElement& scenery, uint8_t rotation, int32_t originZ)
|
||||
{
|
||||
if (_trackDesignPlaceOperation == PTD_OPERATION_DRAW_OUTLINES && mode == 0)
|
||||
{
|
||||
|
@ -1193,7 +1193,7 @@ static bool TrackDesignPlaceSceneryElement(
|
|||
* rct2: 0x006D0964
|
||||
*/
|
||||
static int32_t track_design_place_all_scenery(
|
||||
const std::vector<rct_td6_scenery_element>& sceneryList, int32_t originX, int32_t originY, int32_t originZ)
|
||||
const std::vector<TrackDesignSceneryElement>& sceneryList, int32_t originX, int32_t originY, int32_t originZ)
|
||||
{
|
||||
for (uint8_t mode = 0; mode <= 1; mode++)
|
||||
{
|
||||
|
|
|
@ -30,6 +30,18 @@ struct TrackDesignEntranceElement
|
|||
int16_t y;
|
||||
};
|
||||
|
||||
/* Track Scenery entry size: 0x16 */
|
||||
struct TrackDesignSceneryElement
|
||||
{
|
||||
rct_object_entry scenery_object; // 0x00
|
||||
int8_t x; // 0x10
|
||||
int8_t y; // 0x11
|
||||
int8_t z; // 0x12
|
||||
uint8_t flags; // 0x13 direction quadrant tertiary colour
|
||||
uint8_t primary_colour; // 0x14
|
||||
uint8_t secondary_colour; // 0x15
|
||||
};
|
||||
|
||||
/**
|
||||
* Track design structure.
|
||||
*/
|
||||
|
@ -87,7 +99,7 @@ struct TrackDesign
|
|||
std::vector<rct_td46_maze_element> maze_elements;
|
||||
std::vector<TrackDesignTrackElement> track_elements;
|
||||
std::vector<TrackDesignEntranceElement> entrance_elements;
|
||||
std::vector<rct_td6_scenery_element> scenery_elements;
|
||||
std::vector<TrackDesignSceneryElement> scenery_elements;
|
||||
|
||||
std::string name;
|
||||
|
||||
|
@ -190,7 +202,7 @@ void track_design_save_select_tile_element(int32_t interactionType, CoordsXY loc
|
|||
|
||||
bool track_design_are_entrance_and_exit_placed();
|
||||
|
||||
extern std::vector<rct_td6_scenery_element> _trackSavedTileElementsDesc;
|
||||
extern std::vector<TrackDesignSceneryElement> _trackSavedTileElementsDesc;
|
||||
extern std::vector<const TileElement*> _trackSavedTileElements;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -40,7 +40,7 @@ bool gTrackDesignSaveMode = false;
|
|||
ride_id_t gTrackDesignSaveRideIndex = RIDE_ID_NULL;
|
||||
|
||||
std::vector<const TileElement*> _trackSavedTileElements;
|
||||
std::vector<rct_td6_scenery_element> _trackSavedTileElementsDesc;
|
||||
std::vector<TrackDesignSceneryElement> _trackSavedTileElementsDesc;
|
||||
|
||||
static bool track_design_save_should_select_scenery_around(ride_id_t rideIndex, TileElement* tileElement);
|
||||
static void track_design_save_select_nearby_scenery_for_tile(ride_id_t rideIndex, int32_t cx, int32_t cy);
|
||||
|
@ -193,7 +193,7 @@ static void track_design_save_push_tile_element(CoordsXY loc, TileElement* tileE
|
|||
static void track_design_save_push_tile_element_desc(
|
||||
const rct_object_entry* entry, CoordsXYZ loc, uint8_t flags, uint8_t primaryColour, uint8_t secondaryColour)
|
||||
{
|
||||
rct_td6_scenery_element item{};
|
||||
TrackDesignSceneryElement item{};
|
||||
item.scenery_object = *entry;
|
||||
item.x = loc.x / 32;
|
||||
item.y = loc.y / 32;
|
||||
|
@ -363,7 +363,7 @@ static void track_design_save_pop_tile_element_desc(const rct_object_entry* entr
|
|||
size_t removeIndex = SIZE_MAX;
|
||||
for (size_t i = 0; i < _trackSavedTileElementsDesc.size(); i++)
|
||||
{
|
||||
rct_td6_scenery_element* item = &_trackSavedTileElementsDesc[i];
|
||||
TrackDesignSceneryElement* item = &_trackSavedTileElementsDesc[i];
|
||||
if (item->x != loc.x / 32)
|
||||
continue;
|
||||
if (item->y != loc.y / 32)
|
||||
|
|
Loading…
Reference in New Issue