1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-24 00:03:11 +01:00

Refactor byte_F4414E into separate local bools

This commit is contained in:
Gymnasiast
2017-07-25 17:02:38 +02:00
committed by Michael Steenbeek
parent efdc52662d
commit 271e6837e9
3 changed files with 44 additions and 33 deletions

View File

@@ -53,7 +53,6 @@ rct_xyz16 gTrackPreviewMin;
rct_xyz16 gTrackPreviewMax;
rct_xyz16 gTrackPreviewOrigin;
uint8 byte_F4414E;
bool byte_9D8150;
static uint8 _trackDesignPlaceOperation;
static bool _trackDesignDontPlaceScenery;
@@ -61,6 +60,12 @@ static money32 _trackDesignPlaceCost;
static sint16 _trackDesignPlaceZ;
static sint16 _trackDesignPlaceSceneryZ;
// Previously all flags in byte_F4414E
static bool _trackDesignPlaceStateEntranceExitPlaced = false;
static bool _trackDesignPlaceStateSceneryUnavailable = false;
static bool _trackDesignPlaceStateHasScenery = false;
static bool _trackDesignPlaceStatePlaceScenery = true;
static rct_track_td6 *track_design_open_from_buffer(uint8 *src, size_t srcLength);
static map_backup *track_design_preview_backup_map();
static void track_design_preview_restore_map(map_backup *backup);
@@ -553,10 +558,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 |= BYTE_F4414E_HAS_SCENERY;
_trackDesignPlaceStateHasScenery = true;
}
if (byte_F4414E & BYTE_F4414E_DONT_PLACE_SCENERY) {
if (!_trackDesignPlaceStatePlaceScenery) {
continue;
}
@@ -719,13 +724,14 @@ static sint32 track_design_place_scenery(rct_td6_scenery_element *scenery_start,
uint8 entry_type, entry_index;
if (!find_object_in_entry_group(&scenery->scenery_object, &entry_type, &entry_index)){
entry_type = scenery->scenery_object.flags & 0xF;
if (entry_type != OBJECT_TYPE_PATHS){
byte_F4414E |= BYTE_F4414E_SCENERY_UNAVAILABLE;
if (entry_type != OBJECT_TYPE_PATHS)
{
_trackDesignPlaceStateSceneryUnavailable = true;
continue;
}
if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER){
byte_F4414E |= BYTE_F4414E_SCENERY_UNAVAILABLE;
if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER) {
_trackDesignPlaceStateSceneryUnavailable = true;
continue;
}
@@ -741,7 +747,7 @@ static sint32 track_design_place_scenery(rct_td6_scenery_element *scenery_start,
}
if (entry_index == object_entry_group_counts[OBJECT_TYPE_PATHS]){
byte_F4414E |= BYTE_F4414E_SCENERY_UNAVAILABLE;
_trackDesignPlaceStateSceneryUnavailable = true;
continue;
}
}
@@ -884,7 +890,7 @@ static sint32 track_design_place_scenery(rct_td6_scenery_element *scenery_start,
}
break;
default:
byte_F4414E |= BYTE_F4414E_SCENERY_UNAVAILABLE;
_trackDesignPlaceStateSceneryUnavailable = true;
continue;
break;
}
@@ -958,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 |= BYTE_F4414E_ENTRANCE_EXIT_PLACED;
_trackDesignPlaceStateEntranceExitPlaced = true;
}
break;
case 0x80:
@@ -977,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 |= BYTE_F4414E_ENTRANCE_EXIT_PLACED;
_trackDesignPlaceStateEntranceExitPlaced = true;
}
break;
default:
@@ -1249,7 +1255,7 @@ static bool track_design_place_ride(rct_track_td6 *td6, sint16 x, sint16 y, sint
_trackDesignPlaceCost = cost;
return 0;
}
byte_F4414E |= BYTE_F4414E_ENTRANCE_EXIT_PLACED;
_trackDesignPlaceStateEntranceExitPlaced = true;
break;
} while (!map_element_is_last_for_tile(map_element++));
} else {
@@ -1268,7 +1274,7 @@ static bool track_design_place_ride(rct_track_td6 *td6, sint16 x, sint16 y, sint
else
{
_trackDesignPlaceCost += cost;
byte_F4414E |= BYTE_F4414E_ENTRANCE_EXIT_PLACED;
_trackDesignPlaceStateEntranceExitPlaced = true;
}
}
break;
@@ -1299,10 +1305,15 @@ static bool track_design_place_ride(rct_track_td6 *td6, sint16 x, sint16 y, sint
*/
sint32 place_virtual_track(rct_track_td6 *td6, uint8 ptdOperation, bool placeScenery, uint8 rideIndex, sint32 x, sint32 y, sint32 z)
{
byte_F4414E = (!placeScenery) ? BYTE_F4414E_DONT_PLACE_SCENERY : 0;
// Previously byte_F4414E was cleared here
_trackDesignPlaceStatePlaceScenery = placeScenery;
_trackDesignPlaceStateEntranceExitPlaced = false;
_trackDesignPlaceStateSceneryUnavailable = false;
_trackDesignPlaceStateHasScenery = false;
_trackDesignPlaceOperation = ptdOperation;
if (gTrackDesignSceneryToggle) {
byte_F4414E |= BYTE_F4414E_DONT_PLACE_SCENERY;
_trackDesignPlaceStatePlaceScenery = false;
}
_currentRideIndex = rideIndex;
@@ -1395,14 +1406,14 @@ static bool track_design_place_preview(rct_track_td6 *td6, money32 *cost, uint8
_currentTrackPieceDirection = 0;
sint32 z = place_virtual_track(td6, PTD_OPERATION_GET_PLACE_Z, true, 0, mapSize, mapSize, 16);
if (byte_F4414E & BYTE_F4414E_HAS_SCENERY) {
if (_trackDesignPlaceStateHasScenery) {
*flags |= TRACK_DESIGN_FLAG_HAS_SCENERY;
}
z += 16 - _trackDesignPlaceSceneryZ;
bool placeScenery = true;
if (byte_F4414E & BYTE_F4414E_SCENERY_UNAVAILABLE) {
if (_trackDesignPlaceStateSceneryUnavailable) {
placeScenery = false;
*flags |= TRACK_DESIGN_FLAG_SCENERY_UNAVAILABLE;
}
@@ -1513,7 +1524,7 @@ static money32 place_track_design(sint16 x, sint16 y, sint16 z, uint8 flags, uin
if (!(flags & GAME_COMMAND_FLAG_APPLY)) {
_trackDesignDontPlaceScenery = false;
cost = place_virtual_track(td6, PTD_OPERATION_1, true, rideIndex, x, y, z);
if (byte_F4414E & BYTE_F4414E_SCENERY_UNAVAILABLE) {
if (_trackDesignPlaceStateSceneryUnavailable) {
_trackDesignDontPlaceScenery = true;
cost = place_virtual_track(td6, PTD_OPERATION_1, false, rideIndex, x, y, z);
}
@@ -1909,4 +1920,9 @@ static void track_design_preview_clear_map()
map_update_tile_pointers();
}
bool track_design_are_entrance_and_exit_placed()
{
return _trackDesignPlaceStateEntranceExitPlaced;
}
#pragma endregion

View File

@@ -19,6 +19,8 @@
#include "../common.h"
#include "../object.h"
#include "../rct12.h"
#include "../rct2.h"
#include "../world/map.h"
#include "vehicle.h"
@@ -92,7 +94,7 @@ typedef struct rct_track_td6 {
uint8 track_flags; // 0x06
};
uint8 version_and_colour_scheme; // 0x07 0b0000_VVCC
rct_vehicle_colour vehicle_colours[32]; // 0x08
rct_vehicle_colour vehicle_colours[RCT2_MAX_CARS_PER_TRAIN]; // 0x08
union{
uint8 pad_48;
uint8 track_spine_colour_rct1; // 0x48
@@ -127,14 +129,14 @@ typedef struct rct_track_td6 {
uint8 intensity; // 0x5C
uint8 nausea; // 0x5D
money16 upkeep_cost; // 0x5E
uint8 track_spine_colour[4]; // 0x60
uint8 track_rail_colour[4]; // 0x64
uint8 track_support_colour[4]; // 0x68
uint8 track_spine_colour[RCT12_NUM_COLOUR_SCHEMES]; // 0x60
uint8 track_rail_colour[RCT12_NUM_COLOUR_SCHEMES]; // 0x64
uint8 track_support_colour[RCT12_NUM_COLOUR_SCHEMES]; // 0x68
uint32 flags2; // 0x6C
rct_object_entry vehicle_object; // 0x70
uint8 space_required_x; // 0x80
uint8 space_required_y; // 0x81
uint8 vehicle_additional_colour[32]; // 0x82
uint8 vehicle_additional_colour[RCT2_MAX_CARS_PER_TRAIN]; // 0x82
uint8 lift_hill_speed_num_circuits; // 0xA2 0bCCCL_LLLL
void *elements; // 0xA3 (data starts here in file)
size_t elementsSize;
@@ -179,13 +181,6 @@ enum {
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 {
PTD_OPERATION_DRAW_OUTLINES,
PTD_OPERATION_1,
@@ -197,13 +192,11 @@ enum {
};
extern rct_track_td6 *gActiveTrackDesign;
extern uint8 gTrackDesignPlaceFlags;
extern bool gTrackDesignSceneryToggle;
extern rct_xyz16 gTrackPreviewMin;
extern rct_xyz16 gTrackPreviewMax;
extern rct_xyz16 gTrackPreviewOrigin;
extern uint8 byte_F4414E;
extern bool byte_9D8150;
extern bool gTrackDesignSaveMode;
@@ -235,4 +228,6 @@ void track_design_save_select_map_element(sint32 interactionType, sint32 x, sint
bool track_design_save(uint8 rideIndex);
bool track_design_save_to_file(const utf8 *path);
bool track_design_are_entrance_and_exit_placed();
#endif

View File

@@ -332,7 +332,7 @@ static void window_track_place_tooldown(rct_window* w, rct_widgetindex widgetInd
audio_play_sound_at_location(SOUND_PLACE_ITEM, mapX, mapY, mapZ);
_currentRideIndex = rideIndex;
if (byte_F4414E & BYTE_F4414E_ENTRANCE_EXIT_PLACED) {
if (track_design_are_entrance_and_exit_placed()) {
window_ride_main_open(rideIndex);
window_close(w);
} else {