mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-15 11:03:00 +01:00
Refactor to use defined pathBit entry address.
This commit is contained in:
@@ -283,7 +283,7 @@ int viewport_interaction_get_item_right(int x, int y, viewport_interaction_info
|
||||
return info->type;
|
||||
|
||||
case VIEWPORT_INTERACTION_ITEM_FOOTPATH_ITEM:
|
||||
sceneryEntry = RCT2_ADDRESS(0x9ADA50, rct_scenery_entry*)[mapElement->properties.path.additions & 0x0F];
|
||||
sceneryEntry = g_pathBitSceneryEntries[(mapElement->properties.path.additions & 0x0F) - 1];
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 0, uint16) = 1164;
|
||||
if (mapElement->flags & 0x20) {
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_MAP_TOOLTIP_ARGS + 2, uint16) = 3124;
|
||||
|
||||
@@ -3107,7 +3107,7 @@ static int peep_update_walking_find_bench(rct_peep* peep){
|
||||
uint8 additions = map_element->properties.path.additions & 0xF;
|
||||
|
||||
if (!additions) return 0;
|
||||
rct_scenery_entry* sceneryEntry = RCT2_ADDRESS(0x9ADA50, rct_scenery_entry*)[additions];
|
||||
rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[additions - 1];
|
||||
|
||||
if (!(sceneryEntry->path_bit.var_06 & 0x2))return 0;
|
||||
|
||||
@@ -3184,7 +3184,7 @@ static int peep_update_walking_find_bin(rct_peep* peep){
|
||||
uint8 additions = map_element->properties.path.additions & 0xF;
|
||||
|
||||
if (!additions) return 0;
|
||||
rct_scenery_entry* sceneryEntry = RCT2_ADDRESS(0x9ADA50, rct_scenery_entry*)[additions];
|
||||
rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[additions - 1];
|
||||
|
||||
if (!(sceneryEntry->path_bit.var_06 & 0x1))return 0;
|
||||
|
||||
@@ -3261,7 +3261,7 @@ static void peep_update_walking_break_scenery(rct_peep* peep){
|
||||
uint8 additions = map_element->properties.path.additions & 0xF;
|
||||
|
||||
if (!additions) return;
|
||||
rct_scenery_entry* sceneryEntry = RCT2_ADDRESS(0x9ADA50, rct_scenery_entry*)[additions];
|
||||
rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[additions - 1];
|
||||
|
||||
if (!(sceneryEntry->path_bit.var_06 & 0x4))return;
|
||||
|
||||
@@ -3437,7 +3437,7 @@ static void peep_update_using_bin(rct_peep* peep){
|
||||
return;
|
||||
}
|
||||
|
||||
rct_scenery_entry* sceneryEntry = RCT2_ADDRESS(0x9ADA50, rct_scenery_entry*)[additions];
|
||||
rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[additions - 1];
|
||||
if (!(sceneryEntry->path_bit.var_06 & 1)){
|
||||
peep_state_reset(peep);
|
||||
return;
|
||||
@@ -3828,7 +3828,7 @@ static int peep_update_patrolling_find_bin(rct_peep* peep){
|
||||
|
||||
if (additions == 0)return 0;
|
||||
|
||||
rct_scenery_entry* sceneryEntry = RCT2_ADDRESS(0x9ADA50, rct_scenery_entry*)[additions];
|
||||
rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[additions - 1];
|
||||
|
||||
if (!(sceneryEntry->path_bit.var_06 & 1))
|
||||
return 0;
|
||||
@@ -4121,7 +4121,7 @@ static void peep_update_walking(rct_peep* peep){
|
||||
|
||||
if (additions){
|
||||
if (!(map_element->properties.path.additions & 0x80)){
|
||||
rct_scenery_entry* sceneryEntry = RCT2_ADDRESS(0x9ADA50, rct_scenery_entry*)[additions];
|
||||
rct_scenery_entry* sceneryEntry = g_pathBitSceneryEntries[additions - 1];
|
||||
|
||||
if (!(sceneryEntry->path_bit.var_06 & 0x2)) ebp = 9;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "../util/util.h"
|
||||
#include "footpath.h"
|
||||
#include "map.h"
|
||||
#include "scenery.h"
|
||||
|
||||
void sub_673883(int x, int y, int z);
|
||||
void sub_69A48B(int x, int y, int z);
|
||||
@@ -201,8 +202,8 @@ static money32 footpath_element_update(int x, int y, rct_map_element *mapElement
|
||||
}
|
||||
|
||||
if (RCT2_GLOBAL(0x00F3EF88, uint16) != 0) {
|
||||
uint8 *unk = RCT2_ADDRESS(0x009ADA50, uint8*)[RCT2_GLOBAL(0x00F3EF88, uint16)];
|
||||
uint16 unk6 = RCT2_GLOBAL(unk + 6, uint16);
|
||||
rct_scenery_entry* scenery_entry = g_pathBitSceneryEntries[RCT2_GLOBAL(0x00F3EF88, uint16) - 1];
|
||||
uint16 unk6 = scenery_entry->path_bit.var_06;
|
||||
|
||||
if ((unk6 & 0x80) && (mapElement->properties.path.type & 4)) {
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CANT_BUILD_THIS_ON_SLOPED_FOOTPATH;
|
||||
@@ -224,7 +225,7 @@ static money32 footpath_element_update(int x, int y, rct_map_element *mapElement
|
||||
return MONEY32_UNDEFINED;
|
||||
}
|
||||
|
||||
RCT2_GLOBAL(0x00F3EFD9, money32) += RCT2_GLOBAL(unk + 10, money16);
|
||||
RCT2_GLOBAL(0x00F3EFD9, money32) += scenery_entry->path_bit.price;
|
||||
}
|
||||
|
||||
if (flags & (1 << 4))
|
||||
@@ -259,8 +260,8 @@ static money32 footpath_element_update(int x, int y, rct_map_element *mapElement
|
||||
mapElement->properties.path.additions = (mapElement->properties.path.additions & 0xF0) | RCT2_GLOBAL(0x00F3EF88, uint8);
|
||||
mapElement->flags &= ~0x20;
|
||||
if (RCT2_GLOBAL(0x00F3EF88, uint16) != 0) {
|
||||
uint8 *unk = RCT2_ADDRESS(0x009ADA50, uint8*)[RCT2_GLOBAL(0x00F3EF88, uint16)];
|
||||
uint16 unk6 = RCT2_GLOBAL(unk + 6, uint16);
|
||||
rct_scenery_entry* scenery_entry = g_pathBitSceneryEntries[RCT2_GLOBAL(0x00F3EF88, uint16) - 1];
|
||||
uint16 unk6 = scenery_entry->path_bit.var_06;
|
||||
if (unk6 & 1)
|
||||
mapElement->properties.path.addition_status = 255;
|
||||
}
|
||||
|
||||
@@ -141,6 +141,9 @@ enum {
|
||||
#define g_largeSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_LARGE_SCENERY].chunks)
|
||||
#define g_wallSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_WALLS].chunks)
|
||||
#define g_bannerSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_BANNERS].chunks)
|
||||
|
||||
// Often 0x009ADA50 is used for pathBits this is 1 entry before g_pathBitSceneryEntries and is used
|
||||
// because 0 represents no path bits on a path. So remember to remove 1 when using it for 0x009ADA50
|
||||
#define g_pathBitSceneryEntries ((rct_scenery_entry**)object_entry_groups[OBJECT_TYPE_PATH_BITS].chunks)
|
||||
#define g_scenerySetEntries ((rct_scenery_set_entry**)object_entry_groups[OBJECT_TYPE_SCENERY_SETS].chunks)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user