From 3633b8640548244e6b8c6cd1a328185692d02637 Mon Sep 17 00:00:00 2001 From: duncanspumpkin Date: Sat, 28 Jan 2017 09:28:11 +0000 Subject: [PATCH] Minor refactor of track design to label enums --- src/openrct2/ride/track_design.c | 34 +++++++++++++++------------- src/openrct2/ride/track_design.h | 7 +++++- src/openrct2/windows/install_track.c | 2 +- src/openrct2/windows/track_list.c | 2 +- src/openrct2/windows/track_place.c | 2 +- 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/openrct2/ride/track_design.c b/src/openrct2/ride/track_design.c index 949d011ff5..e3745f03f9 100644 --- a/src/openrct2/ride/track_design.c +++ b/src/openrct2/ride/track_design.c @@ -55,7 +55,7 @@ rct_xyz16 gTrackPreviewOrigin; uint8 byte_F4414E; bool byte_9D8150; static uint8 _trackDesignPlaceOperation; -static uint8 byte_F44150; +static bool _trackDesignDontPlaceScenery; static money32 _trackDesignPlaceCost; static sint16 _trackDesignPlaceZ; static sint16 word_F44129; @@ -567,10 +567,10 @@ static sint32 track_design_place_scenery(rct_td6_scenery_element *scenery_start, { for (uint8 mode = 0; mode <= 1; mode++) { if ((scenery_start->scenery_object.flags & 0xFF) != 0xFF) { - byte_F4414E |= 1 << 2; + byte_F4414E |= BYTE_F4414E_HAS_SCENERY; } - if (byte_F4414E & (1 << 7)) { + if (byte_F4414E & BYTE_F4414E_DONT_PLACE_SCENERY) { continue; } @@ -964,7 +964,7 @@ static sint32 track_design_place_maze(rct_track_td6 *td6, sint16 x, sint16 y, si cost = game_do_command(mapCoord.x, bl | rotation << 8, mapCoord.y, rideIndex, GAME_COMMAND_PLACE_RIDE_ENTRANCE_OR_EXIT, 0, 0); } if (cost != MONEY32_UNDEFINED){ - byte_F4414E |= (1 << 0); + byte_F4414E |= BYTE_F4414E_ENTRANCE_EXIT_PLACED; } break; case 0x80: @@ -983,7 +983,7 @@ static sint32 track_design_place_maze(rct_track_td6 *td6, sint16 x, sint16 y, si cost = game_do_command(mapCoord.x, bl | rotation << 8, mapCoord.y, rideIndex | (1 << 8), GAME_COMMAND_PLACE_RIDE_ENTRANCE_OR_EXIT, 0, 0); } if (cost != MONEY32_UNDEFINED){ - byte_F4414E |= (1 << 0); + byte_F4414E |= BYTE_F4414E_ENTRANCE_EXIT_PLACED; } break; default: @@ -1239,7 +1239,7 @@ static bool track_design_place_ride(rct_track_td6 *td6, sint16 x, sint16 y, sint _trackDesignPlaceCost = cost; return 0; } - byte_F4414E |= (1 << 0); + byte_F4414E |= BYTE_F4414E_ENTRANCE_EXIT_PLACED; break; } while (!map_element_is_last_for_tile(map_element++)); } else { @@ -1255,7 +1255,7 @@ static bool track_design_place_ride(rct_track_td6 *td6, sint16 x, sint16 y, sint return 0; } else { _trackDesignPlaceCost += cost; - byte_F4414E |= (1 << 0); + byte_F4414E |= BYTE_F4414E_ENTRANCE_EXIT_PLACED; } } break; @@ -1285,10 +1285,10 @@ static bool track_design_place_ride(rct_track_td6 *td6, sint16 x, sint16 y, sint */ sint32 sub_6D01B3(rct_track_td6 *td6, uint8 bl, uint8 rideIndex, sint32 x, sint32 y, sint32 z) { - byte_F4414E = bl & 0x80; + byte_F4414E = (bl & PTD_OPERATION_DONT_PLACE_SCENERY) ? BYTE_F4414E_DONT_PLACE_SCENERY : 0; _trackDesignPlaceOperation = bl & 0x7F; if (gTrackDesignSceneryToggle) { - byte_F4414E |= 0x80; + byte_F4414E |= BYTE_F4414E_DONT_PLACE_SCENERY; } _currentRideIndex = rideIndex; @@ -1378,15 +1378,15 @@ static bool sub_6D2189(rct_track_td6 *td6, money32 *cost, uint8 *rideId, uint8 * _currentTrackPieceDirection = 0; sint32 z = sub_6D01B3(td6, PTD_OPERATION_GET_PLACE_Z, 0, mapSize, mapSize, 16); - if (byte_F4414E & 4) { - *flags |= 2; + if (byte_F4414E & BYTE_F4414E_HAS_SCENERY) { + *flags |= TRACK_DESIGN_FLAG_HAS_SCENERY; } z += 16 - word_F44129; sint32 operation = PTD_OPERATION_GET_COST; if (byte_F4414E & BYTE_F4414E_SCENERY_UNAVAILABLE) { - operation |= 0x80; + operation |= PTD_OPERATION_DONT_PLACE_SCENERY; *flags |= TRACK_DESIGN_FLAG_SCENERY_UNAVAILABLE; } @@ -1455,11 +1455,11 @@ static money32 place_track_design(sint16 x, sint16 y, sint16 z, uint8 flags, uin money32 cost = 0; if (!(flags & GAME_COMMAND_FLAG_APPLY)) { - byte_F44150 = 0; + _trackDesignDontPlaceScenery = false; cost = sub_6D01B3(td6, PTD_OPERATION_1, rideIndex, x, y, z); if (byte_F4414E & BYTE_F4414E_SCENERY_UNAVAILABLE) { - byte_F44150 |= 1 << 7; - cost = sub_6D01B3(td6, 0x80 | PTD_OPERATION_1, rideIndex, x, y, z); + _trackDesignDontPlaceScenery = true; + cost = sub_6D01B3(td6, PTD_OPERATION_DONT_PLACE_SCENERY | PTD_OPERATION_1, rideIndex, x, y, z); } } else { uint8 operation; @@ -1468,7 +1468,9 @@ static money32 place_track_design(sint16 x, sint16 y, sint16 z, uint8 flags, uin } else { operation = PTD_OPERATION_2; } - operation |= byte_F44150; + + if (_trackDesignDontPlaceScenery) + operation |= PTD_OPERATION_DONT_PLACE_SCENERY; cost = sub_6D01B3(td6, operation, rideIndex, x, y, z); } diff --git a/src/openrct2/ride/track_design.h b/src/openrct2/ride/track_design.h index 1760c61528..8910c74e92 100644 --- a/src/openrct2/ride/track_design.h +++ b/src/openrct2/ride/track_design.h @@ -163,11 +163,15 @@ enum { enum { TRACK_DESIGN_FLAG_SCENERY_UNAVAILABLE = (1 << 0), + TRACK_DESIGN_FLAG_HAS_SCENERY = (1 << 1), TRACK_DESIGN_FLAG_VEHICLE_UNAVAILABLE = (1 << 2), }; enum { + BYTE_F4414E_ENTRANCE_EXIT_PLACED = (1 << 0), BYTE_F4414E_SCENERY_UNAVAILABLE = (1 << 1), + BYTE_F4414E_HAS_SCENERY = (1 << 2), + BYTE_F4414E_DONT_PLACE_SCENERY = (1 << 7) }; enum { @@ -177,7 +181,8 @@ enum { PTD_OPERATION_GET_PLACE_Z, PTD_OPERATION_4, PTD_OPERATION_GET_COST, - PTD_OPERATION_CLEAR_OUTLINES + PTD_OPERATION_CLEAR_OUTLINES, + PTD_OPERATION_DONT_PLACE_SCENERY = (1 << 7) }; extern rct_track_td6 *gActiveTrackDesign; diff --git a/src/openrct2/windows/install_track.c b/src/openrct2/windows/install_track.c index 94628c477d..2cb179e3d7 100644 --- a/src/openrct2/windows/install_track.c +++ b/src/openrct2/windows/install_track.c @@ -237,7 +237,7 @@ static void window_install_track_paint(rct_window *w, rct_drawpixelinfo *dpi) // Warnings rct_track_td6 *td6 = _trackDesign; - if (td6->track_flags & 1) { + if (td6->track_flags & TRACK_DESIGN_FLAG_SCENERY_UNAVAILABLE) { if (!gTrackDesignSceneryToggle) { // Scenery not available gfx_draw_string_centred_clipped(dpi, STR_DESIGN_INCLUDES_SCENERY_WHICH_IS_UNAVAILABLE, NULL, COLOUR_BLACK, x, y, 368); diff --git a/src/openrct2/windows/track_list.c b/src/openrct2/windows/track_list.c index 1b9de01bd3..122182ce26 100644 --- a/src/openrct2/windows/track_list.c +++ b/src/openrct2/windows/track_list.c @@ -207,7 +207,7 @@ static void window_track_list_select(rct_window *w, sint32 index) if (gScreenFlags & SCREEN_FLAGS_TRACK_MANAGER) { window_track_manage_open(tdRef); } else { - if (_loadedTrackDesignIndex != TRACK_DESIGN_INDEX_UNLOADED && (_loadedTrackDesign->track_flags & 4)) { + if (_loadedTrackDesignIndex != TRACK_DESIGN_INDEX_UNLOADED && (_loadedTrackDesign->track_flags & TRACK_DESIGN_FLAG_VEHICLE_UNAVAILABLE)) { window_error_open(STR_THIS_DESIGN_WILL_BE_BUILT_WITH_AN_ALTERNATIVE_VEHICLE_TYPE, STR_NONE); } diff --git a/src/openrct2/windows/track_place.c b/src/openrct2/windows/track_place.c index 8c46fb8aa6..2f0091d9d1 100644 --- a/src/openrct2/windows/track_place.c +++ b/src/openrct2/windows/track_place.c @@ -331,7 +331,7 @@ static void window_track_place_tooldown(rct_window* w, sint32 widgetIndex, sint3 audio_play_sound_at_location(SOUND_PLACE_ITEM, mapX, mapY, mapZ); _currentRideIndex = rideIndex; - if (byte_F4414E & 1) { + if (byte_F4414E & BYTE_F4414E_ENTRANCE_EXIT_PLACED) { window_ride_main_open(rideIndex); window_close(w); } else {