diff --git a/src/paint/map_element/map_element.c b/src/paint/map_element/map_element.c index 0679189255..8c9d6785d1 100644 --- a/src/paint/map_element/map_element.c +++ b/src/paint/map_element/map_element.c @@ -36,6 +36,8 @@ static void blank_tiles_paint(int x, int y); static void sub_68B3FB(int x, int y); +const int SEGMENTS_ALL = SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4; + /** * * rct2: 0x0068B35F diff --git a/src/paint/map_element/map_element.h b/src/paint/map_element/map_element.h index 810574ba74..f129a3ccdf 100644 --- a/src/paint/map_element/map_element.h +++ b/src/paint/map_element/map_element.h @@ -45,7 +45,7 @@ enum SEGMENT_C4 = (1 << 8), // 4 }; -static const int SEGMENTS_ALL = SEGMENT_B4 | SEGMENT_B8 | SEGMENT_BC | SEGMENT_C0 | SEGMENT_C4 | SEGMENT_C8 | SEGMENT_CC | SEGMENT_D0 | SEGMENT_D4; +extern const int SEGMENTS_ALL; enum { diff --git a/src/ride/track_paint.c b/src/ride/track_paint.c index 06600130ca..b716b66ca3 100644 --- a/src/ride/track_paint.c +++ b/src/ride/track_paint.c @@ -46,6 +46,79 @@ static rct_xy16 loc_7667AE[] = { {.x = -1, .y = 0}, }; +const uint8 track_map_2x2[][4] = { + {0, 1, 2, 3}, + {1, 3, 0, 2}, + {3, 2, 1, 0}, + {2, 0, 3, 1} +}; + +const uint8 edges_2x2[] = { + EDGE_NE | EDGE_NW, + EDGE_NE | EDGE_SE, + EDGE_SW | EDGE_NW, + EDGE_SW | EDGE_SE, +}; + +const uint8 track_map_3x3[][9] = { + {0, 1, 2, 3, 4, 5, 6, 7, 8}, + {0, 3, 5, 7, 2, 8, 1, 6, 4}, + {0, 7, 8, 6, 5, 4, 3, 1, 2}, + {0, 6, 4, 1, 8, 2, 7, 3, 5} +}; + +const uint8 edges_3x3[] = { + 0, + EDGE_NE | EDGE_NW, + EDGE_NE, + EDGE_NE | EDGE_SE, + EDGE_NW, + EDGE_SE, + EDGE_SW | EDGE_NW, + EDGE_SW | EDGE_SE, + EDGE_SW, +}; + +const uint16 track_map_4x4[][16] = { + {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, + {3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12}, + {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, + {12, 8, 4, 0, 13, 9, 5, 1, 14, 10, 6, 2, 15, 11, 7, 3}, +}; + +const uint8 edges_4x4[] = { + EDGE_NE | EDGE_NW, + EDGE_NE, + EDGE_NE, + EDGE_NE | EDGE_SE, + EDGE_NW, + 0, + 0, + EDGE_SE, + EDGE_NW, + 0, + 0, + EDGE_SE, + EDGE_NW | EDGE_SW, + EDGE_SW, + EDGE_SW, + EDGE_SW | EDGE_SE +}; + +const uint floorSpritesCork[] = { + SPR_FLOOR_CORK_SE_SW, + SPR_FLOOR_CORK_SW, + SPR_FLOOR_CORK_SE, + SPR_FLOOR_CORK +}; + +const uint fenceSpritesRope[] = { + SPR_FENCE_ROPE_NE, + SPR_FENCE_ROPE_SE, + SPR_FENCE_ROPE_SW, + SPR_FENCE_ROPE_NW +}; + bool track_paint_util_has_fence(enum edge edge, rct_xy16 position, rct_map_element * mapElement, rct_ride * ride, uint8 rotation) { rct_xy16 offset; diff --git a/src/ride/track_paint.h b/src/ride/track_paint.h index 6d8825a43a..504ab069a5 100644 --- a/src/ride/track_paint.h +++ b/src/ride/track_paint.h @@ -21,64 +21,14 @@ #include "../world/map.h" #include "../paint/map_element/map_element.h" -static const uint8 track_map_2x2[][4] = { - {0, 1, 2, 3}, - {1, 3, 0, 2}, - {3, 2, 1, 0}, - {2, 0, 3, 1} -}; +extern const uint8 track_map_2x2[][4]; +extern const uint8 edges_2x2[]; -static const uint8 edges_2x2[] = { - EDGE_NE | EDGE_NW, - EDGE_NE | EDGE_SE, - EDGE_SW | EDGE_NW, - EDGE_SW | EDGE_SE, -}; +extern const uint8 track_map_3x3[][9]; +extern const uint8 edges_3x3[]; -static const uint8 track_map_3x3[][9] = { - {0, 1, 2, 3, 4, 5, 6, 7, 8}, - {0, 3, 5, 7, 2, 8, 1, 6, 4}, - {0, 7, 8, 6, 5, 4, 3, 1, 2}, - {0, 6, 4, 1, 8, 2, 7, 3, 5} -}; - -static const uint8 edges_3x3[] = { - 0, - EDGE_NE | EDGE_NW, - EDGE_NE, - EDGE_NE | EDGE_SE, - EDGE_NW, - EDGE_SE, - EDGE_SW | EDGE_NW, - EDGE_SW | EDGE_SE, - EDGE_SW, -}; - -static const uint16 track_map_4x4[][16] = { - {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, - {3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12}, - {15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, - {12, 8, 4, 0, 13, 9, 5, 1, 14, 10, 6, 2, 15, 11, 7, 3}, -}; - -static const uint8 edges_4x4[] = { - EDGE_NE | EDGE_NW, - EDGE_NE, - EDGE_NE, - EDGE_NE | EDGE_SE, - EDGE_NW, - 0, - 0, - EDGE_SE, - EDGE_NW, - 0, - 0, - EDGE_SE, - EDGE_NW | EDGE_SW, - EDGE_SW, - EDGE_SW, - EDGE_SW | EDGE_SE -}; +extern const uint16 track_map_4x4[][16]; +extern const uint8 edges_4x4[]; enum { SPR_FLOOR_CORK_SE_SW = 22134, @@ -91,19 +41,9 @@ enum { SPR_FENCE_ROPE_NW = 22141, }; -static const uint floorSpritesCork[] = { - SPR_FLOOR_CORK_SE_SW, - SPR_FLOOR_CORK_SW, - SPR_FLOOR_CORK_SE, - SPR_FLOOR_CORK -}; +extern const uint floorSpritesCork[]; -static const uint fenceSpritesRope[] = { - SPR_FENCE_ROPE_NE, - SPR_FENCE_ROPE_SE, - SPR_FENCE_ROPE_SW, - SPR_FENCE_ROPE_NW -}; +extern const uint fenceSpritesRope[]; bool track_paint_util_has_fence(enum edge edge, rct_xy16 position, rct_map_element * mapElement, rct_ride * ride, uint8 rotation); void track_paint_util_paint_floor(uint edges, uint32 colourFlags, uint16 height, const uint floorSprites[4], uint8 rotation);