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:
committed by
Michael Steenbeek
parent
efdc52662d
commit
271e6837e9
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user