mirror of https://github.com/OpenRCT2/OpenRCT2.git
swinging rides
This commit is contained in:
parent
77d546f39d
commit
bb1d3ab637
|
@ -8,6 +8,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#include "../../interface/Viewport.h"
|
||||
#include "../../object/StationObject.h"
|
||||
#include "../../paint/Paint.h"
|
||||
#include "../../paint/Supports.h"
|
||||
#include "../../world/Entity.h"
|
||||
|
@ -237,9 +238,15 @@ static void paint_magic_carpet(
|
|||
metal_a_supports_paint_setup(
|
||||
session, METAL_SUPPORTS_TUBES, 8, 0, height, session->TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
StationObject* stationObject = nullptr;
|
||||
if (ride != nullptr)
|
||||
stationObject = ride_get_station_object(ride);
|
||||
|
||||
uint32_t imageId = SPR_STATION_BASE_D | session->TrackColours[SCHEME_SUPPORTS];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
|
||||
if (stationObject != nullptr && !(stationObject->Flags & STATION_OBJECT_FLAGS::NO_PLATFORMS))
|
||||
{
|
||||
uint32_t imageId = SPR_STATION_BASE_D | session->TrackColours[SCHEME_SUPPORTS];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#include "../../interface/Viewport.h"
|
||||
#include "../../object/StationObject.h"
|
||||
#include "../../paint/Paint.h"
|
||||
#include "../../paint/Supports.h"
|
||||
#include "../../world/Entity.h"
|
||||
|
@ -129,6 +130,10 @@ static void paint_swinging_inverter_ship(
|
|||
uint8_t relativeTrackSequence = track_map_1x4[direction][trackSequence];
|
||||
uint32_t imageId;
|
||||
|
||||
StationObject* stationObject = nullptr;
|
||||
if (ride != nullptr)
|
||||
stationObject = ride_get_station_object(ride);
|
||||
|
||||
if (relativeTrackSequence != 1 && relativeTrackSequence != 3)
|
||||
{
|
||||
if (direction & 1)
|
||||
|
@ -142,27 +147,30 @@ static void paint_swinging_inverter_ship(
|
|||
metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 8, 0, height, session->TrackColours[SCHEME_SUPPORTS]);
|
||||
}
|
||||
|
||||
imageId = SPR_STATION_BASE_D | session->TrackColours[SCHEME_SUPPORTS];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
|
||||
|
||||
switch (direction)
|
||||
if (stationObject != nullptr && !(stationObject->Flags & STATION_OBJECT_FLAGS::NO_PLATFORMS))
|
||||
{
|
||||
case 0:
|
||||
imageId = SPR_STATION_PLATFORM_SW_NE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 24, height + 9 }, { 32, 8, 1 });
|
||||
break;
|
||||
case 1:
|
||||
imageId = SPR_STATION_PLATFORM_NW_SE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 24, 0, height + 9 }, { 8, 32, 1 });
|
||||
break;
|
||||
case 2:
|
||||
imageId = SPR_STATION_PLATFORM_SW_NE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsChild(session, imageId, 0, 0, 32, 8, 1, height + 9, -2, 0, height);
|
||||
break;
|
||||
case 3:
|
||||
imageId = SPR_STATION_PLATFORM_NW_SE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsChild(session, imageId, 0, 0, 8, 32, 1, height + 9, 0, -2, height);
|
||||
break;
|
||||
imageId = SPR_STATION_BASE_D | session->TrackColours[SCHEME_SUPPORTS];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
|
||||
|
||||
switch (direction)
|
||||
{
|
||||
case 0:
|
||||
imageId = SPR_STATION_PLATFORM_SW_NE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 24, height + 9 }, { 32, 8, 1 });
|
||||
break;
|
||||
case 1:
|
||||
imageId = SPR_STATION_PLATFORM_NW_SE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 24, 0, height + 9 }, { 8, 32, 1 });
|
||||
break;
|
||||
case 2:
|
||||
imageId = SPR_STATION_PLATFORM_SW_NE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsChild(session, imageId, 0, 0, 32, 8, 1, height + 9, -2, 0, height);
|
||||
break;
|
||||
case 3:
|
||||
imageId = SPR_STATION_PLATFORM_NW_SE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsChild(session, imageId, 0, 0, 8, 32, 1, height + 9, 0, -2, height);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#include "../../interface/Viewport.h"
|
||||
#include "../../object/StationObject.h"
|
||||
#include "../../paint/Paint.h"
|
||||
#include "../../paint/Supports.h"
|
||||
#include "../../world/Entity.h"
|
||||
|
@ -184,6 +185,10 @@ static void paint_swinging_ship(
|
|||
uint32_t imageId;
|
||||
bool hasFence;
|
||||
|
||||
StationObject* stationObject = nullptr;
|
||||
if (ride != nullptr)
|
||||
stationObject = ride_get_station_object(ride);
|
||||
|
||||
if (relativeTrackSequence == 1 || relativeTrackSequence == 4)
|
||||
{
|
||||
wooden_a_supports_paint_setup(session, direction & 1, 0, height, session->TrackColours[SCHEME_SUPPORTS]);
|
||||
|
@ -193,111 +198,123 @@ static void paint_swinging_ship(
|
|||
metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 6, 0, height, session->TrackColours[SCHEME_SUPPORTS]);
|
||||
metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 7, 0, height, session->TrackColours[SCHEME_SUPPORTS]);
|
||||
|
||||
imageId = SPR_STATION_BASE_A_NW_SE | session->TrackColours[SCHEME_SUPPORTS];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
|
||||
if (stationObject != nullptr && !(stationObject->Flags & STATION_OBJECT_FLAGS::NO_PLATFORMS))
|
||||
{
|
||||
imageId = SPR_STATION_BASE_A_NW_SE | session->TrackColours[SCHEME_SUPPORTS];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 5, 0, height, session->TrackColours[SCHEME_SUPPORTS]);
|
||||
metal_a_supports_paint_setup(session, METAL_SUPPORTS_TUBES, 8, 0, height, session->TrackColours[SCHEME_SUPPORTS]);
|
||||
|
||||
imageId = SPR_STATION_BASE_A_SW_NE | session->TrackColours[SCHEME_SUPPORTS];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
|
||||
if (stationObject != nullptr && !(stationObject->Flags & STATION_OBJECT_FLAGS::NO_PLATFORMS))
|
||||
{
|
||||
imageId = SPR_STATION_BASE_A_SW_NE | session->TrackColours[SCHEME_SUPPORTS];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 0, height }, { 32, 32, 1 });
|
||||
}
|
||||
}
|
||||
|
||||
paint_util_set_segment_support_height(session, SEGMENTS_ALL, 0xFFFF, 0);
|
||||
|
||||
if (direction & 1)
|
||||
if (stationObject != nullptr && !(stationObject->Flags & STATION_OBJECT_FLAGS::NO_PLATFORMS))
|
||||
{
|
||||
if (relativeTrackSequence != 1 && relativeTrackSequence != 4)
|
||||
if (direction & 1)
|
||||
{
|
||||
hasFence = track_paint_util_has_fence(EDGE_NE, session->MapPosition, trackElement, ride, session->CurrentRotation);
|
||||
if (relativeTrackSequence == 2)
|
||||
if (relativeTrackSequence != 1 && relativeTrackSequence != 4)
|
||||
{
|
||||
imageId = (hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_NW_SE : SPR_STATION_PLATFORM_BEGIN_NW_SE)
|
||||
| session->TrackColours[SCHEME_TRACK];
|
||||
}
|
||||
else
|
||||
{
|
||||
imageId = (hasFence ? SPR_STATION_PLATFORM_FENCED_NW_SE : SPR_STATION_PLATFORM_NW_SE)
|
||||
| session->TrackColours[SCHEME_TRACK];
|
||||
}
|
||||
PaintAddImageAsChild(session, imageId, 0, 0, 8, 32, 1, height + 9, 0, -2, height + 9);
|
||||
|
||||
imageId = (relativeTrackSequence == 2 ? SPR_STATION_PLATFORM_BEGIN_NW_SE : SPR_STATION_PLATFORM_NW_SE)
|
||||
| session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 24, 0, height + 9 }, { 8, 32, 1 });
|
||||
|
||||
hasFence = track_paint_util_has_fence(EDGE_SW, session->MapPosition, trackElement, ride, session->CurrentRotation);
|
||||
if (relativeTrackSequence == 3)
|
||||
{
|
||||
if (hasFence)
|
||||
hasFence = track_paint_util_has_fence(
|
||||
EDGE_NE, session->MapPosition, trackElement, ride, session->CurrentRotation);
|
||||
if (relativeTrackSequence == 2)
|
||||
{
|
||||
imageId = SPR_STATION_BEGIN_ANGLE_FENCE_NW_SE | session->TrackColours[SCHEME_TRACK];
|
||||
imageId = (hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_NW_SE : SPR_STATION_PLATFORM_BEGIN_NW_SE)
|
||||
| session->TrackColours[SCHEME_TRACK];
|
||||
}
|
||||
else
|
||||
{
|
||||
imageId = (hasFence ? SPR_STATION_PLATFORM_FENCED_NW_SE : SPR_STATION_PLATFORM_NW_SE)
|
||||
| session->TrackColours[SCHEME_TRACK];
|
||||
}
|
||||
PaintAddImageAsChild(session, imageId, 0, 0, 8, 32, 1, height + 9, 0, -2, height + 9);
|
||||
|
||||
imageId = (relativeTrackSequence == 2 ? SPR_STATION_PLATFORM_BEGIN_NW_SE : SPR_STATION_PLATFORM_NW_SE)
|
||||
| session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 24, 0, height + 9 }, { 8, 32, 1 });
|
||||
|
||||
hasFence = track_paint_util_has_fence(
|
||||
EDGE_SW, session->MapPosition, trackElement, ride, session->CurrentRotation);
|
||||
if (relativeTrackSequence == 3)
|
||||
{
|
||||
if (hasFence)
|
||||
{
|
||||
imageId = SPR_STATION_BEGIN_ANGLE_FENCE_NW_SE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 31, 0, height + 11 }, { 1, 32, 7 });
|
||||
}
|
||||
else
|
||||
{
|
||||
imageId = SPR_STATION_FENCE_SMALL_SW_NE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 23, 31, height + 11 }, { 8, 1, 7 });
|
||||
}
|
||||
|
||||
imageId = SPR_STATION_FENCE_SMALL_SW_NE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 31, height + 11 }, { 8, 1, 7 });
|
||||
}
|
||||
else if (hasFence)
|
||||
{
|
||||
imageId = SPR_STATION_FENCE_NW_SE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 31, 0, height + 11 }, { 1, 32, 7 });
|
||||
}
|
||||
else
|
||||
{
|
||||
imageId = SPR_STATION_FENCE_SMALL_SW_NE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 23, 31, height + 11 }, { 8, 1, 7 });
|
||||
}
|
||||
|
||||
imageId = SPR_STATION_FENCE_SMALL_SW_NE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 31, height + 11 }, { 8, 1, 7 });
|
||||
}
|
||||
else if (hasFence)
|
||||
{
|
||||
imageId = SPR_STATION_FENCE_NW_SE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 31, 0, height + 11 }, { 1, 32, 7 });
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (relativeTrackSequence != 1 && relativeTrackSequence != 4)
|
||||
else
|
||||
{
|
||||
hasFence = track_paint_util_has_fence(EDGE_NW, session->MapPosition, trackElement, ride, session->CurrentRotation);
|
||||
if (relativeTrackSequence == 2)
|
||||
if (relativeTrackSequence != 1 && relativeTrackSequence != 4)
|
||||
{
|
||||
imageId = (hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_SW_NE : SPR_STATION_PLATFORM_BEGIN_SW_NE)
|
||||
| session->TrackColours[SCHEME_TRACK];
|
||||
}
|
||||
else
|
||||
{
|
||||
imageId = (hasFence ? SPR_STATION_PLATFORM_FENCED_SW_NE : SPR_STATION_PLATFORM_SW_NE)
|
||||
| session->TrackColours[SCHEME_TRACK];
|
||||
}
|
||||
PaintAddImageAsChild(session, imageId, 0, 0, 32, 8, 1, height + 9, -2, 0, height + 9);
|
||||
|
||||
imageId = (relativeTrackSequence == 2 ? SPR_STATION_PLATFORM_BEGIN_SW_NE : SPR_STATION_PLATFORM_SW_NE)
|
||||
| session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 24, height + 9 }, { 32, 8, 1 });
|
||||
|
||||
hasFence = track_paint_util_has_fence(EDGE_SE, session->MapPosition, trackElement, ride, session->CurrentRotation);
|
||||
if (relativeTrackSequence == 3)
|
||||
{
|
||||
if (hasFence)
|
||||
hasFence = track_paint_util_has_fence(
|
||||
EDGE_NW, session->MapPosition, trackElement, ride, session->CurrentRotation);
|
||||
if (relativeTrackSequence == 2)
|
||||
{
|
||||
imageId = SPR_STATION_BEGIN_ANGLE_FENCE_SW_NE | session->TrackColours[SCHEME_TRACK];
|
||||
imageId = (hasFence ? SPR_STATION_PLATFORM_BEGIN_FENCED_SW_NE : SPR_STATION_PLATFORM_BEGIN_SW_NE)
|
||||
| session->TrackColours[SCHEME_TRACK];
|
||||
}
|
||||
else
|
||||
{
|
||||
imageId = (hasFence ? SPR_STATION_PLATFORM_FENCED_SW_NE : SPR_STATION_PLATFORM_SW_NE)
|
||||
| session->TrackColours[SCHEME_TRACK];
|
||||
}
|
||||
PaintAddImageAsChild(session, imageId, 0, 0, 32, 8, 1, height + 9, -2, 0, height + 9);
|
||||
|
||||
imageId = (relativeTrackSequence == 2 ? SPR_STATION_PLATFORM_BEGIN_SW_NE : SPR_STATION_PLATFORM_SW_NE)
|
||||
| session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 24, height + 9 }, { 32, 8, 1 });
|
||||
|
||||
hasFence = track_paint_util_has_fence(
|
||||
EDGE_SE, session->MapPosition, trackElement, ride, session->CurrentRotation);
|
||||
if (relativeTrackSequence == 3)
|
||||
{
|
||||
if (hasFence)
|
||||
{
|
||||
imageId = SPR_STATION_BEGIN_ANGLE_FENCE_SW_NE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 31, height + 11 }, { 32, 1, 7 });
|
||||
}
|
||||
else
|
||||
{
|
||||
imageId = SPR_STATION_FENCE_SMALL_NW_SE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 31, 23, height + 11 }, { 1, 8, 7 });
|
||||
}
|
||||
|
||||
imageId = SPR_STATION_FENCE_SMALL_NW_SE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 31, 0, height + 11 }, { 1, 8, 7 });
|
||||
}
|
||||
else if (hasFence)
|
||||
{
|
||||
imageId = SPR_STATION_FENCE_SW_NE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 31, height + 11 }, { 32, 1, 7 });
|
||||
}
|
||||
else
|
||||
{
|
||||
imageId = SPR_STATION_FENCE_SMALL_NW_SE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 31, 23, height + 11 }, { 1, 8, 7 });
|
||||
}
|
||||
|
||||
imageId = SPR_STATION_FENCE_SMALL_NW_SE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 31, 0, height + 11 }, { 1, 8, 7 });
|
||||
}
|
||||
else if (hasFence)
|
||||
{
|
||||
imageId = SPR_STATION_FENCE_SW_NE | session->TrackColours[SCHEME_TRACK];
|
||||
PaintAddImageAsParent(session, imageId, { 0, 31, height + 11 }, { 32, 1, 7 });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch (relativeTrackSequence)
|
||||
{
|
||||
case 1:
|
||||
|
|
Loading…
Reference in New Issue