1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-23 15:52:55 +01:00

Combine drawing of the Spiral and Mini RC (#5025)

This commit is contained in:
Michael Steenbeek
2017-01-09 22:09:33 +01:00
committed by GitHub
parent 4f61cae8a8
commit 1c2458b6dd
8 changed files with 144 additions and 340 deletions

View File

@@ -62,7 +62,6 @@
C64FDA771D6D9A2100F259B9 /* reverse_freefall_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8CE1CDBC3B7009F9BFC /* reverse_freefall_coaster.c */; }; C64FDA771D6D9A2100F259B9 /* reverse_freefall_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8CE1CDBC3B7009F9BFC /* reverse_freefall_coaster.c */; };
C64FDA781D6D9A2100F259B9 /* reverser_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8CF1CDBC3B7009F9BFC /* reverser_roller_coaster.c */; }; C64FDA781D6D9A2100F259B9 /* reverser_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8CF1CDBC3B7009F9BFC /* reverser_roller_coaster.c */; };
C64FDA791D6D9A2100F259B9 /* side_friction_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D01CDBC3B7009F9BFC /* side_friction_roller_coaster.c */; }; C64FDA791D6D9A2100F259B9 /* side_friction_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D01CDBC3B7009F9BFC /* side_friction_roller_coaster.c */; };
C64FDA7A1D6D9A2100F259B9 /* spiral_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D11CDBC3B7009F9BFC /* spiral_roller_coaster.c */; };
C64FDA7B1D6D9A2100F259B9 /* stand_up_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D21CDBC3B7009F9BFC /* stand_up_roller_coaster.c */; }; C64FDA7B1D6D9A2100F259B9 /* stand_up_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D21CDBC3B7009F9BFC /* stand_up_roller_coaster.c */; };
C64FDA7C1D6D9A2100F259B9 /* steeplechase.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D31CDBC3B7009F9BFC /* steeplechase.c */; }; C64FDA7C1D6D9A2100F259B9 /* steeplechase.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D31CDBC3B7009F9BFC /* steeplechase.c */; };
C64FDA7D1D6D9A2100F259B9 /* suspended_swinging_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D41CDBC3B7009F9BFC /* suspended_swinging_coaster.c */; }; C64FDA7D1D6D9A2100F259B9 /* suspended_swinging_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D41CDBC3B7009F9BFC /* suspended_swinging_coaster.c */; };
@@ -166,7 +165,6 @@
C686F91E1CDBC3B7009F9BFC /* reverse_freefall_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8CE1CDBC3B7009F9BFC /* reverse_freefall_coaster.c */; }; C686F91E1CDBC3B7009F9BFC /* reverse_freefall_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8CE1CDBC3B7009F9BFC /* reverse_freefall_coaster.c */; };
C686F91F1CDBC3B7009F9BFC /* reverser_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8CF1CDBC3B7009F9BFC /* reverser_roller_coaster.c */; }; C686F91F1CDBC3B7009F9BFC /* reverser_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8CF1CDBC3B7009F9BFC /* reverser_roller_coaster.c */; };
C686F9201CDBC3B7009F9BFC /* side_friction_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D01CDBC3B7009F9BFC /* side_friction_roller_coaster.c */; }; C686F9201CDBC3B7009F9BFC /* side_friction_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D01CDBC3B7009F9BFC /* side_friction_roller_coaster.c */; };
C686F9211CDBC3B7009F9BFC /* spiral_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D11CDBC3B7009F9BFC /* spiral_roller_coaster.c */; };
C686F9221CDBC3B7009F9BFC /* stand_up_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D21CDBC3B7009F9BFC /* stand_up_roller_coaster.c */; }; C686F9221CDBC3B7009F9BFC /* stand_up_roller_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D21CDBC3B7009F9BFC /* stand_up_roller_coaster.c */; };
C686F9231CDBC3B7009F9BFC /* steeplechase.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D31CDBC3B7009F9BFC /* steeplechase.c */; }; C686F9231CDBC3B7009F9BFC /* steeplechase.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D31CDBC3B7009F9BFC /* steeplechase.c */; };
C686F9241CDBC3B7009F9BFC /* suspended_swinging_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D41CDBC3B7009F9BFC /* suspended_swinging_coaster.c */; }; C686F9241CDBC3B7009F9BFC /* suspended_swinging_coaster.c in Sources */ = {isa = PBXBuildFile; fileRef = C686F8D41CDBC3B7009F9BFC /* suspended_swinging_coaster.c */; };
@@ -615,7 +613,6 @@
C686F8CE1CDBC3B7009F9BFC /* reverse_freefall_coaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = reverse_freefall_coaster.c; sourceTree = "<group>"; }; C686F8CE1CDBC3B7009F9BFC /* reverse_freefall_coaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = reverse_freefall_coaster.c; sourceTree = "<group>"; };
C686F8CF1CDBC3B7009F9BFC /* reverser_roller_coaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = reverser_roller_coaster.c; sourceTree = "<group>"; }; C686F8CF1CDBC3B7009F9BFC /* reverser_roller_coaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = reverser_roller_coaster.c; sourceTree = "<group>"; };
C686F8D01CDBC3B7009F9BFC /* side_friction_roller_coaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = side_friction_roller_coaster.c; sourceTree = "<group>"; }; C686F8D01CDBC3B7009F9BFC /* side_friction_roller_coaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = side_friction_roller_coaster.c; sourceTree = "<group>"; };
C686F8D11CDBC3B7009F9BFC /* spiral_roller_coaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = spiral_roller_coaster.c; sourceTree = "<group>"; };
C686F8D21CDBC3B7009F9BFC /* stand_up_roller_coaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stand_up_roller_coaster.c; sourceTree = "<group>"; }; C686F8D21CDBC3B7009F9BFC /* stand_up_roller_coaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stand_up_roller_coaster.c; sourceTree = "<group>"; };
C686F8D31CDBC3B7009F9BFC /* steeplechase.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = steeplechase.c; sourceTree = "<group>"; }; C686F8D31CDBC3B7009F9BFC /* steeplechase.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = steeplechase.c; sourceTree = "<group>"; };
C686F8D41CDBC3B7009F9BFC /* suspended_swinging_coaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = suspended_swinging_coaster.c; sourceTree = "<group>"; }; C686F8D41CDBC3B7009F9BFC /* suspended_swinging_coaster.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = suspended_swinging_coaster.c; sourceTree = "<group>"; };
@@ -1358,7 +1355,6 @@
C686F8CE1CDBC3B7009F9BFC /* reverse_freefall_coaster.c */, C686F8CE1CDBC3B7009F9BFC /* reverse_freefall_coaster.c */,
C686F8CF1CDBC3B7009F9BFC /* reverser_roller_coaster.c */, C686F8CF1CDBC3B7009F9BFC /* reverser_roller_coaster.c */,
C686F8D01CDBC3B7009F9BFC /* side_friction_roller_coaster.c */, C686F8D01CDBC3B7009F9BFC /* side_friction_roller_coaster.c */,
C686F8D11CDBC3B7009F9BFC /* spiral_roller_coaster.c */,
C686F8D21CDBC3B7009F9BFC /* stand_up_roller_coaster.c */, C686F8D21CDBC3B7009F9BFC /* stand_up_roller_coaster.c */,
C686F8D31CDBC3B7009F9BFC /* steeplechase.c */, C686F8D31CDBC3B7009F9BFC /* steeplechase.c */,
C686F8D41CDBC3B7009F9BFC /* suspended_swinging_coaster.c */, C686F8D41CDBC3B7009F9BFC /* suspended_swinging_coaster.c */,
@@ -2545,7 +2541,6 @@
C606CCBE1DB4054000FE4015 /* compat.c in Sources */, C606CCBE1DB4054000FE4015 /* compat.c in Sources */,
C64FDA781D6D9A2100F259B9 /* reverser_roller_coaster.c in Sources */, C64FDA781D6D9A2100F259B9 /* reverser_roller_coaster.c in Sources */,
C64FDA791D6D9A2100F259B9 /* side_friction_roller_coaster.c in Sources */, C64FDA791D6D9A2100F259B9 /* side_friction_roller_coaster.c in Sources */,
C64FDA7A1D6D9A2100F259B9 /* spiral_roller_coaster.c in Sources */,
C64FDA7B1D6D9A2100F259B9 /* stand_up_roller_coaster.c in Sources */, C64FDA7B1D6D9A2100F259B9 /* stand_up_roller_coaster.c in Sources */,
C606CCC61DB4054000FE4015 /* Printer.cpp in Sources */, C606CCC61DB4054000FE4015 /* Printer.cpp in Sources */,
C64FDA7C1D6D9A2100F259B9 /* steeplechase.c in Sources */, C64FDA7C1D6D9A2100F259B9 /* steeplechase.c in Sources */,
@@ -2652,7 +2647,6 @@
C686F8AC1CDBC37E009F9BFC /* banner.c in Sources */, C686F8AC1CDBC37E009F9BFC /* banner.c in Sources */,
D44272671CC81B3200D84D28 /* land.c in Sources */, D44272671CC81B3200D84D28 /* land.c in Sources */,
D442726D1CC81B3200D84D28 /* mapgen.c in Sources */, D442726D1CC81B3200D84D28 /* mapgen.c in Sources */,
C686F9211CDBC3B7009F9BFC /* spiral_roller_coaster.c in Sources */,
C686F9291CDBC3B7009F9BFC /* wooden_roller_coaster.c in Sources */, C686F9291CDBC3B7009F9BFC /* wooden_roller_coaster.c in Sources */,
D460DFD41E0123D1007BA2FE /* PlatformEnvironment.cpp in Sources */, D460DFD41E0123D1007BA2FE /* PlatformEnvironment.cpp in Sources */,
D44272A71CC81B3200D84D28 /* sprite.c in Sources */, D44272A71CC81B3200D84D28 /* sprite.c in Sources */,

View File

@@ -261,7 +261,6 @@
<ClCompile Include="ride\coaster\reverser_roller_coaster.c" /> <ClCompile Include="ride\coaster\reverser_roller_coaster.c" />
<ClCompile Include="ride\coaster\reverse_freefall_coaster.c" /> <ClCompile Include="ride\coaster\reverse_freefall_coaster.c" />
<ClCompile Include="ride\coaster\side_friction_roller_coaster.c" /> <ClCompile Include="ride\coaster\side_friction_roller_coaster.c" />
<ClCompile Include="ride\coaster\spiral_roller_coaster.c" />
<ClCompile Include="ride\coaster\stand_up_roller_coaster.c" /> <ClCompile Include="ride\coaster\stand_up_roller_coaster.c" />
<ClCompile Include="ride\coaster\steeplechase.c" /> <ClCompile Include="ride\coaster\steeplechase.c" />
<ClCompile Include="ride\coaster\suspended_swinging_coaster.c" /> <ClCompile Include="ride\coaster\suspended_swinging_coaster.c" />

View File

@@ -6044,6 +6044,140 @@ static void mini_rc_track_right_banked_25_deg_down_to_flat(uint8 rideIndex, uint
mini_rc_track_flat_to_left_banked_25_deg_up(rideIndex, trackSequence, (direction + 2) & 3, height, mapElement); mini_rc_track_flat_to_left_banked_25_deg_up(rideIndex, trackSequence, (direction + 2) & 3, height, mapElement);
} }
static void mini_rc_track_left_curved_lift_hill(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
switch (trackSequence) {
case 0:
switch (direction) {
case 0:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19333, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(1, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 1:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19335, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(2, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 2:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19337, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(1, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 3:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19331, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(2, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
}
if (direction == 0 || direction == 3) {
paint_util_push_tunnel_rotated(direction, height, TUNNEL_6);
}
paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
paint_util_set_general_support_height(height + 72, 0x20);
break;
case 1:
paint_util_set_general_support_height(height + 56, 0x20);
break;
case 2:
paint_util_set_general_support_height(height + 56, 0x20);
break;
case 3:
switch (direction) {
case 0:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19332, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(2, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 1:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19334, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(1, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 2:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19336, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(2, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 3:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19330, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(1, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
}
switch (direction) {
case 2:
paint_util_push_tunnel_right(height + 16, TUNNEL_8);
break;
case 3:
paint_util_push_tunnel_left(height + 16, TUNNEL_8);
break;
}
paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, 0);
paint_util_set_general_support_height(height + 72, 0x20);
break;
}
}
static void mini_rc_track_right_curved_lift_hill(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
switch (trackSequence) {
case 0:
switch (direction) {
case 0:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19322, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(1, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 1:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19324, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(2, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 2:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19326, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(1, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 3:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19328, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(2, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
}
if (direction == 0 || direction == 3) {
paint_util_push_tunnel_rotated(direction, height, TUNNEL_6);
}
paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
paint_util_set_general_support_height(height + 72, 0x20);
break;
case 1:
paint_util_set_general_support_height(height + 56, 0x20);
break;
case 2:
paint_util_set_general_support_height(height + 56, 0x20);
break;
case 3:
switch (direction) {
case 0:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19323, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(2, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 1:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19325, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(1, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 2:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19327, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(2, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 3:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19329, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(1, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
}
switch (direction) {
case 0:
paint_util_push_tunnel_right(height + 16, TUNNEL_8);
break;
case 1:
paint_util_push_tunnel_left(height + 16, TUNNEL_8);
break;
}
paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, 0);
paint_util_set_general_support_height(height + 72, 0x20);
break;
}
}
TRACK_PAINT_FUNCTION get_track_paint_function_mini_rc(int trackType, int direction) TRACK_PAINT_FUNCTION get_track_paint_function_mini_rc(int trackType, int direction)
{ {
switch (trackType) { switch (trackType) {
@@ -6313,6 +6447,10 @@ TRACK_PAINT_FUNCTION get_track_paint_function_mini_rc(int trackType, int directi
return mini_rc_track_left_banked_25_deg_down_to_flat; return mini_rc_track_left_banked_25_deg_down_to_flat;
case TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT: case TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT:
return mini_rc_track_right_banked_25_deg_down_to_flat; return mini_rc_track_right_banked_25_deg_down_to_flat;
case TRACK_ELEM_LEFT_CURVED_LIFT_HILL:
return mini_rc_track_left_curved_lift_hill;
case TRACK_ELEM_RIGHT_CURVED_LIFT_HILL:
return mini_rc_track_right_curved_lift_hill;
} }
return NULL; return NULL;
} }

View File

@@ -1,310 +0,0 @@
#pragma region Copyright (c) 2014-2016 OpenRCT2 Developers
/*****************************************************************************
* OpenRCT2, an open source clone of Roller Coaster Tycoon 2.
*
* OpenRCT2 is the work of many authors, a full list can be found in contributors.md
* For more information, visit https://github.com/OpenRCT2/OpenRCT2
*
* OpenRCT2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* A full copy of the GNU General Public License can be found in licence.txt
*****************************************************************************/
#pragma endregion
#include "../../drawing/drawing.h"
#include "../../paint/supports.h"
#include "../../interface/viewport.h"
#include "../../paint/map_element/map_element.h"
#include "../../paint/paint.h"
#include "../../sprites.h"
#include "../../world/map.h"
#include "../../world/sprite.h"
#include "../ride_data.h"
#include "../track_data.h"
#include "../track_paint.h"
static void spiral_rc_track_left_curved_lift_hill(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
switch (trackSequence) {
case 0:
switch (direction) {
case 0:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19333, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(1, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 1:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19335, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(2, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 2:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19337, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(1, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 3:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19331, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(2, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
}
if (direction == 0 || direction == 3) {
paint_util_push_tunnel_rotated(direction, height, TUNNEL_6);
}
paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
paint_util_set_general_support_height(height + 72, 0x20);
break;
case 1:
paint_util_set_general_support_height(height + 56, 0x20);
break;
case 2:
paint_util_set_general_support_height(height + 56, 0x20);
break;
case 3:
switch (direction) {
case 0:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19332, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(2, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 1:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19334, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(1, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 2:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19336, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(2, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 3:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19330, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(1, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
}
switch (direction) {
case 2:
paint_util_push_tunnel_right(height + 16, TUNNEL_8);
break;
case 3:
paint_util_push_tunnel_left(height + 16, TUNNEL_8);
break;
}
paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, 0);
paint_util_set_general_support_height(height + 72, 0x20);
break;
}
}
static void spiral_rc_track_right_curved_lift_hill(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element * mapElement)
{
switch (trackSequence) {
case 0:
switch (direction) {
case 0:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19322, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(1, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 1:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19324, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(2, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 2:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19326, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(1, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 3:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19328, 0, 6, 32, 20, 3, height);
metal_a_supports_paint_setup(2, 4, 14, height, gTrackColours[SCHEME_SUPPORTS]);
break;
}
if (direction == 0 || direction == 3) {
paint_util_push_tunnel_rotated(direction, height, TUNNEL_6);
}
paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_BC | SEGMENT_C4 | SEGMENT_CC | SEGMENT_D0, direction), 0xFFFF, 0);
paint_util_set_general_support_height(height + 72, 0x20);
break;
case 1:
paint_util_set_general_support_height(height + 56, 0x20);
break;
case 2:
paint_util_set_general_support_height(height + 56, 0x20);
break;
case 3:
switch (direction) {
case 0:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19323, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(2, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 1:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19325, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(1, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 2:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19327, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(2, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
case 3:
sub_98196C_rotated(direction, gTrackColours[SCHEME_TRACK] | 19329, 6, 0, 20, 32, 3, height);
metal_a_supports_paint_setup(1, 4, 17, height, gTrackColours[SCHEME_SUPPORTS]);
break;
}
switch (direction) {
case 0:
paint_util_push_tunnel_right(height + 16, TUNNEL_8);
break;
case 1:
paint_util_push_tunnel_left(height + 16, TUNNEL_8);
break;
}
paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_B8 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_D4, direction), 0xFFFF, 0);
paint_util_set_general_support_height(height + 72, 0x20);
break;
}
}
TRACK_PAINT_FUNCTION get_track_paint_function_spiral_rc(int trackType, int direction)
{
switch (trackType) {
// Use Mini Roller Coaster
case TRACK_ELEM_FLAT:
case TRACK_ELEM_END_STATION:
case TRACK_ELEM_BEGIN_STATION:
case TRACK_ELEM_MIDDLE_STATION:
case TRACK_ELEM_25_DEG_UP:
case TRACK_ELEM_60_DEG_UP:
case TRACK_ELEM_FLAT_TO_25_DEG_UP:
case TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP:
case TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP:
case TRACK_ELEM_25_DEG_UP_TO_FLAT:
case TRACK_ELEM_25_DEG_DOWN:
case TRACK_ELEM_60_DEG_DOWN:
case TRACK_ELEM_FLAT_TO_25_DEG_DOWN:
case TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN:
case TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN:
case TRACK_ELEM_25_DEG_DOWN_TO_FLAT:
case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES:
case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES:
case TRACK_ELEM_FLAT_TO_LEFT_BANK:
case TRACK_ELEM_FLAT_TO_RIGHT_BANK:
case TRACK_ELEM_LEFT_BANK_TO_FLAT:
case TRACK_ELEM_RIGHT_BANK_TO_FLAT:
case TRACK_ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES:
case TRACK_ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES:
case TRACK_ELEM_LEFT_BANK_TO_25_DEG_UP:
case TRACK_ELEM_RIGHT_BANK_TO_25_DEG_UP:
case TRACK_ELEM_25_DEG_UP_TO_LEFT_BANK:
case TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANK:
case TRACK_ELEM_LEFT_BANK_TO_25_DEG_DOWN:
case TRACK_ELEM_RIGHT_BANK_TO_25_DEG_DOWN:
case TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANK:
case TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANK:
case TRACK_ELEM_LEFT_BANK:
case TRACK_ELEM_RIGHT_BANK:
case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP:
case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP:
case TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN:
case TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN:
case TRACK_ELEM_S_BEND_LEFT:
case TRACK_ELEM_S_BEND_RIGHT:
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES:
case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES:
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_BANK:
case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK:
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP:
case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP:
case TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN:
case TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN:
case TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL:
case TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL:
case TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL:
case TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL:
case TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE:
case TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE:
case TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE:
case TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE:
case TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP:
case TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP:
case TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN:
case TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN:
case TRACK_ELEM_BRAKES:
case TRACK_ELEM_25_DEG_UP_LEFT_BANKED:
case TRACK_ELEM_25_DEG_UP_RIGHT_BANKED:
case TRACK_ELEM_ON_RIDE_PHOTO:
case TRACK_ELEM_25_DEG_DOWN_LEFT_BANKED:
case TRACK_ELEM_25_DEG_DOWN_RIGHT_BANKED:
case TRACK_ELEM_LEFT_EIGHTH_TO_DIAG:
case TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG:
case TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL:
case TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL:
case TRACK_ELEM_LEFT_EIGHTH_BANK_TO_DIAG:
case TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_DIAG:
case TRACK_ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL:
case TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL:
case TRACK_ELEM_DIAG_FLAT:
case TRACK_ELEM_DIAG_25_DEG_UP:
case TRACK_ELEM_DIAG_60_DEG_UP:
case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_UP:
case TRACK_ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP:
case TRACK_ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP:
case TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT:
case TRACK_ELEM_DIAG_25_DEG_DOWN:
case TRACK_ELEM_DIAG_60_DEG_DOWN:
case TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN:
case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN:
case TRACK_ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN:
case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT:
case TRACK_ELEM_DIAG_FLAT_TO_LEFT_BANK:
case TRACK_ELEM_DIAG_FLAT_TO_RIGHT_BANK:
case TRACK_ELEM_DIAG_LEFT_BANK_TO_FLAT:
case TRACK_ELEM_DIAG_RIGHT_BANK_TO_FLAT:
case TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP:
case TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP:
case TRACK_ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK:
case TRACK_ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK:
case TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN:
case TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN:
case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK:
case TRACK_ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK:
case TRACK_ELEM_DIAG_LEFT_BANK:
case TRACK_ELEM_DIAG_RIGHT_BANK:
case TRACK_ELEM_BLOCK_BRAKES:
case TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP:
case TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP:
case TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN:
case TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN:
case TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP:
case TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP:
case TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN:
case TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN:
case TRACK_ELEM_25_DEG_UP_TO_LEFT_BANKED_25_DEG_UP:
case TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANKED_25_DEG_UP:
case TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_25_DEG_UP:
case TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_25_DEG_UP:
case TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANKED_25_DEG_DOWN:
case TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANKED_25_DEG_DOWN:
case TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN:
case TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN:
case TRACK_ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_UP:
case TRACK_ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_UP:
case TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_LEFT_BANKED_FLAT:
case TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_RIGHT_BANKED_FLAT:
case TRACK_ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_DOWN:
case TRACK_ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN:
case TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_LEFT_BANKED_FLAT:
case TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_RIGHT_BANKED_FLAT:
case TRACK_ELEM_FLAT_TO_LEFT_BANKED_25_DEG_UP:
case TRACK_ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_UP:
case TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_FLAT:
case TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_FLAT:
case TRACK_ELEM_FLAT_TO_LEFT_BANKED_25_DEG_DOWN:
case TRACK_ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN:
case TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_FLAT:
case TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT:
return get_track_paint_function_mini_rc(trackType, direction);
case TRACK_ELEM_LEFT_CURVED_LIFT_HILL:
return spiral_rc_track_left_curved_lift_hill;
case TRACK_ELEM_RIGHT_CURVED_LIFT_HILL:
return spiral_rc_track_right_curved_lift_hill;
}
return NULL;
}

View File

@@ -1055,7 +1055,7 @@ const uint8 FlatRideTrackSequenceProperties[][16] = {
// rct2: 0x0097C468 (0 - 31) and 0x0097C5D4 (32 - 63) // rct2: 0x0097C468 (0 - 31) and 0x0097C5D4 (32 - 63)
const uint64 RideTypePossibleTrackConfigurations[RIDE_TYPE_COUNT] = { const uint64 RideTypePossibleTrackConfigurations[RIDE_TYPE_COUNT] = {
/* RIDE_TYPE_SPIRAL_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING) | (1ULL << TRACK_LIFT_HILL_CURVED), /* RIDE_TYPE_SPIRAL_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_LIFT_HILL_CURVED),
/* RIDE_TYPE_STAND_UP_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_VERTICAL_LOOP) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HALF_LOOP) | (1ULL << TRACK_CORKSCREW) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_BLOCK_BRAKES), /* RIDE_TYPE_STAND_UP_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_VERTICAL_LOOP) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HALF_LOOP) | (1ULL << TRACK_CORKSCREW) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_BLOCK_BRAKES),
/* RIDE_TYPE_SUSPENDED_SWINGING_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_LARGE_UNBANKED) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES), /* RIDE_TYPE_SUSPENDED_SWINGING_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_LARGE_UNBANKED) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES),
/* RIDE_TYPE_INVERTED_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_VERTICAL_LOOP) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_TWIST) | (1ULL << TRACK_HALF_LOOP) | (1ULL << TRACK_CORKSCREW) | (1ULL << TRACK_HELIX_LARGE) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_HALF_LOOP_LARGE) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING), /* RIDE_TYPE_INVERTED_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_VERTICAL_LOOP) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_TWIST) | (1ULL << TRACK_HALF_LOOP) | (1ULL << TRACK_CORKSCREW) | (1ULL << TRACK_HELIX_LARGE) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_HALF_LOOP_LARGE) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING),
@@ -1142,7 +1142,7 @@ const uint64 RideTypePossibleTrackConfigurations[RIDE_TYPE_COUNT] = {
/* RIDE_TYPE_54 */ 0, /* RIDE_TYPE_54 */ 0,
/* RIDE_TYPE_55 */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_STEEP_LONG), /* RIDE_TYPE_55 */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_STEEP_LONG),
/* RIDE_TYPE_INVERTED_IMPULSE_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_VERTICAL) | (1ULL << TRACK_CURVE_VERTICAL), /* RIDE_TYPE_INVERTED_IMPULSE_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_VERTICAL) | (1ULL << TRACK_CURVE_VERTICAL),
/* RIDE_TYPE_MINI_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING), /* RIDE_TYPE_MINI_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_LIFT_HILL_CURVED),
/* RIDE_TYPE_MINE_RIDE */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_ON_RIDE_PHOTO), /* RIDE_TYPE_MINE_RIDE */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_ON_RIDE_PHOTO),
/* RIDE_TYPE_59 */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_CURVE_VERY_SMALL) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES), /* RIDE_TYPE_59 */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_LIFT_HILL) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_CURVE_VERY_SMALL) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_BLOCK_BRAKES),
/* RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_VERTICAL_LOOP) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_TWIST) | (1ULL << TRACK_CORKSCREW) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_SLOPE_VERTICAL) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING) | (1ULL << TRACK_CURVE_VERTICAL) | (1ULL << TRACK_QUARTER_LOOP) /* RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER */ (1ULL << TRACK_STRAIGHT) | (1ULL << TRACK_STATION_END) | (1ULL << TRACK_FLAT_ROLL_BANKING) | (1ULL << TRACK_VERTICAL_LOOP) | (1ULL << TRACK_SLOPE) | (1ULL << TRACK_SLOPE_STEEP) | (1ULL << TRACK_SLOPE_CURVE) | (1ULL << TRACK_SLOPE_CURVE_STEEP) | (1ULL << TRACK_S_BEND) | (1ULL << TRACK_CURVE_SMALL) | (1ULL << TRACK_CURVE) | (1ULL << TRACK_TWIST) | (1ULL << TRACK_CORKSCREW) | (1ULL << TRACK_HELIX_SMALL) | (1ULL << TRACK_BRAKES) | (1ULL << TRACK_ON_RIDE_PHOTO) | (1ULL << TRACK_SLOPE_VERTICAL) | (1ULL << TRACK_BLOCK_BRAKES) | (1ULL << TRACK_SLOPE_ROLL_BANKING) | (1ULL << TRACK_CURVE_VERTICAL) | (1ULL << TRACK_QUARTER_LOOP)
@@ -6241,7 +6241,7 @@ const track_curve_chain gFlatRideTrackCurveChain[256] = {
}; };
const TRACK_PAINT_FUNCTION_GETTER RideTypeTrackPaintFunctions[RIDE_TYPE_COUNT] = { const TRACK_PAINT_FUNCTION_GETTER RideTypeTrackPaintFunctions[RIDE_TYPE_COUNT] = {
get_track_paint_function_spiral_rc, // RIDE_TYPE_SPIRAL_ROLLER_COASTER get_track_paint_function_mini_rc, // RIDE_TYPE_SPIRAL_ROLLER_COASTER
get_track_paint_function_stand_up_rc, // RIDE_TYPE_STAND_UP_ROLLER_COASTER get_track_paint_function_stand_up_rc, // RIDE_TYPE_STAND_UP_ROLLER_COASTER
get_track_paint_function_suspended_swinging_rc, // RIDE_TYPE_SUSPENDED_SWINGING_COASTER get_track_paint_function_suspended_swinging_rc, // RIDE_TYPE_SUSPENDED_SWINGING_COASTER
get_track_paint_function_inverted_rc, // RIDE_TYPE_INVERTED_ROLLER_COASTER get_track_paint_function_inverted_rc, // RIDE_TYPE_INVERTED_ROLLER_COASTER

View File

@@ -1733,19 +1733,6 @@ void track_paint_util_left_corkscrew_up_supports(uint8 direction, uint16 height)
} }
} }
static int pick_ride_type_for_drawing(int rideType, int trackType)
{
if (rideType == RIDE_TYPE_MINI_ROLLER_COASTER) {
switch(trackType) {
case TRACK_ELEM_LEFT_CURVED_LIFT_HILL:
case TRACK_ELEM_RIGHT_CURVED_LIFT_HILL:
rideType = RIDE_TYPE_SPIRAL_ROLLER_COASTER;
}
}
return rideType;
}
/** /**
* *
* rct2: 0x006C4794 * rct2: 0x006C4794
@@ -1804,13 +1791,11 @@ void track_paint(uint8 direction, int height, rct_map_element *mapElement)
gTrackColours[SCHEME_3] = ghost_id; gTrackColours[SCHEME_3] = ghost_id;
} }
int rideType = pick_ride_type_for_drawing(ride->type, trackType);
bool useOriginalRidePaint = false; bool useOriginalRidePaint = false;
#ifndef NO_RCT2 #ifndef NO_RCT2
useOriginalRidePaint = gUseOriginalRidePaint; useOriginalRidePaint = gUseOriginalRidePaint;
#endif #endif
TRACK_PAINT_FUNCTION_GETTER paintFunctionGetter = RideTypeTrackPaintFunctions[rideType]; TRACK_PAINT_FUNCTION_GETTER paintFunctionGetter = RideTypeTrackPaintFunctions[ride->type];
if (paintFunctionGetter != NULL && !useOriginalRidePaint) { if (paintFunctionGetter != NULL && !useOriginalRidePaint) {
TRACK_PAINT_FUNCTION paintFunction = paintFunctionGetter(trackType, direction); TRACK_PAINT_FUNCTION paintFunction = paintFunctionGetter(trackType, direction);
if (paintFunction != NULL) { if (paintFunction != NULL) {
@@ -1819,13 +1804,13 @@ void track_paint(uint8 direction, int height, rct_map_element *mapElement)
} }
else { else {
#ifndef NO_RCT2 #ifndef NO_RCT2
uint32 *trackDirectionList = (uint32 *)RideTypeTrackPaintFunctionsOld[rideType][trackType]; uint32 *trackDirectionList = (uint32 *)RideTypeTrackPaintFunctionsOld[ride->type][trackType];
if (trackDirectionList != NULL) { if (trackDirectionList != NULL) {
// Have to call from this point as it pushes esi and expects callee to pop it // Have to call from this point as it pushes esi and expects callee to pop it
RCT2_CALLPROC_X( RCT2_CALLPROC_X(
0x006C4934, 0x006C4934,
rideType, ride->type,
(int)trackDirectionList, (int)trackDirectionList,
direction, direction,
height, height,

View File

@@ -317,7 +317,6 @@ void track_paint_util_left_corkscrew_up_supports(uint8 direction, uint16 height)
typedef void (*TRACK_PAINT_FUNCTION)(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement); typedef void (*TRACK_PAINT_FUNCTION)(uint8 rideIndex, uint8 trackSequence, uint8 direction, int height, rct_map_element* mapElement);
typedef TRACK_PAINT_FUNCTION (*TRACK_PAINT_FUNCTION_GETTER)(int trackType, int direction); typedef TRACK_PAINT_FUNCTION (*TRACK_PAINT_FUNCTION_GETTER)(int trackType, int direction);
TRACK_PAINT_FUNCTION get_track_paint_function_spiral_rc(int trackType, int direction);
TRACK_PAINT_FUNCTION get_track_paint_function_stand_up_rc(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_stand_up_rc(int trackType, int direction);
TRACK_PAINT_FUNCTION get_track_paint_function_suspended_swinging_rc(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_suspended_swinging_rc(int trackType, int direction);
TRACK_PAINT_FUNCTION get_track_paint_function_inverted_rc(int trackType, int direction); TRACK_PAINT_FUNCTION get_track_paint_function_inverted_rc(int trackType, int direction);

View File

@@ -119,7 +119,6 @@
<ClCompile Include="..\..\src\openrct2\ride\coaster\reverser_roller_coaster.c" /> <ClCompile Include="..\..\src\openrct2\ride\coaster\reverser_roller_coaster.c" />
<ClCompile Include="..\..\src\openrct2\ride\coaster\reverse_freefall_coaster.c" /> <ClCompile Include="..\..\src\openrct2\ride\coaster\reverse_freefall_coaster.c" />
<ClCompile Include="..\..\src\openrct2\ride\coaster\side_friction_roller_coaster.c" /> <ClCompile Include="..\..\src\openrct2\ride\coaster\side_friction_roller_coaster.c" />
<ClCompile Include="..\..\src\openrct2\ride\coaster\spiral_roller_coaster.c" />
<ClCompile Include="..\..\src\openrct2\ride\coaster\stand_up_roller_coaster.c" /> <ClCompile Include="..\..\src\openrct2\ride\coaster\stand_up_roller_coaster.c" />
<ClCompile Include="..\..\src\openrct2\ride\coaster\steeplechase.c" /> <ClCompile Include="..\..\src\openrct2\ride\coaster\steeplechase.c" />
<ClCompile Include="..\..\src\openrct2\ride\coaster\suspended_swinging_coaster.c" /> <ClCompile Include="..\..\src\openrct2\ride\coaster\suspended_swinging_coaster.c" />