From 308b086c55b4914c4dd9e7f1fe2cf3beb985a87c Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Thu, 27 Aug 2015 16:19:17 +0200 Subject: [PATCH] Name some addresses, clean up strings ids and usage --- src/addresses.h | 3 + src/localisation/string_ids.h | 311 +++++++++++++------------ src/ride/ride.c | 42 ++-- src/ride/track.c | 60 ++--- src/ride/track.h | 4 + src/windows/editor_object_selection.c | 4 +- src/windows/editor_objective_options.c | 2 +- src/windows/ride_construction.c | 6 +- src/windows/top_toolbar.c | 24 +- src/world/footpath.c | 4 +- src/world/map.c | 32 +-- src/world/map.h | 4 + 12 files changed, 257 insertions(+), 239 deletions(-) diff --git a/src/addresses.h b/src/addresses.h index 5533ef5ce3..09e92b50b5 100644 --- a/src/addresses.h +++ b/src/addresses.h @@ -287,6 +287,8 @@ #define RCT2_ADDRESS_UNCOMPLETED_RESEARCH_TYPES 0x00EE787C +#define RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER 0x00F1AD60 + #define RCT2_ADDRESS_MAP_IMAGE_DATA 0x00F1AD68 // No longer used @@ -347,6 +349,7 @@ #define RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE 0x00F44152 +#define RCT2_ADDRESS_ABOVE_GROUND_FLAGS 0x00F441D4 #define RCT2_ADDRESS_TRACK_LIST 0x00F441EC #define RCT2_ADDRESS_SCENERY_COST 0x00F64EB4 diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index 80ec47ade7..255c907cb0 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -85,9 +85,6 @@ enum { STR_RESOLUTION_X_BY_Y = 840, - STR_ROTATE_CLOCKWISE = 5458, - STR_ROTATE_ANTI_CLOCKWISE = 5459, - STR_ABOUT = 847, STR_ROLLERCOASTER_TYCOON_2 = 848, STR_VERSION_X = 849, @@ -258,6 +255,8 @@ enum { STR_CLOSE_PARK = 1013, STR_OPEN_PARK = 1014, + STR_UNABLE_TO_OPERATE_WITH_MORE_THAN_ONE_STATION_IN_THIS_MODE = 1015, + STR_UNABLE_TO_OPERATE_WITH_LESS_THAN_TWO_STATIONS_IN_THIS_MODE = 1016, STR_CANT_CHANGE_OPERATING_MODE = 1017, STR_RIDE_SET_VEHICLE_TYPE_FAIL = 1018, STR_RIDE_SET_VEHICLE_SET_NUM_CARS_PER_TRAIN_FAIL = 1019, @@ -283,6 +282,7 @@ enum { STR_RCT2_SAVED_GAME = 1043, STR_RCT2_SCENARIO_FILE = 1044, STR_RCT2_LANDSCAPE_FILE = 1045, + STR_SCENARIO_SAVE_FAILED = 1048, STR_INVISIBLE_SUPPORTS = 1051, @@ -397,6 +397,7 @@ enum { STR_PLACE_SCENERY_TIP = 1159, STR_ADJUST_WATER_TIP = 1160, + STR_CANT_POSITION_THIS_HERE = 1161, STR_CANT_LOWER_WATER_LEVEL_HERE = 1166, STR_CANT_RAISE_WATER_LEVEL_HERE = 1167, @@ -906,25 +907,6 @@ enum { STR_SHOP_ITEM_SINGULAR_LEMONADE = 2013, STR_SHOP_ITEM_SINGULAR_EMPTY_BOX = 2014, STR_SHOP_ITEM_SINGULAR_EMPTY_BOTTLE = 2015, - STR_SHOP_ITEM_SINGULAR_PRETZEL = 2125, - STR_SHOP_ITEM_SINGULAR_HOT_CHOCOLATE = 2126, - STR_SHOP_ITEM_SINGULAR_ICED_TEA = 2127, - STR_SHOP_ITEM_SINGULAR_FUNNEL_CAKE = 2128, - STR_SHOP_ITEM_SINGULAR_SUNGLASSES = 2129, - STR_SHOP_ITEM_SINGULAR_BEEF_NOODLES = 2130, - STR_SHOP_ITEM_SINGULAR_FRIED_RICE_NOODLES = 2131, - STR_SHOP_ITEM_SINGULAR_WONTON_SOUP = 2132, - STR_SHOP_ITEM_SINGULAR_MEATBALL_SOUP = 2133, - STR_SHOP_ITEM_SINGULAR_FRUIT_JUICE = 2134, - STR_SHOP_ITEM_SINGULAR_SOYBEAN_MILK = 2135, - STR_SHOP_ITEM_SINGULAR_SUJONGKWA = 2136, - STR_SHOP_ITEM_SINGULAR_SUB_SANDWICH = 2137, - STR_SHOP_ITEM_SINGULAR_COOKIE = 2138, - STR_SHOP_ITEM_SINGULAR_EMPTY_BOWL_RED = 2139, - STR_SHOP_ITEM_SINGULAR_EMPTY_DRINK_CARTON = 2140, - STR_SHOP_ITEM_SINGULAR_EMPTY_JUICE_CUP = 2141, - STR_SHOP_ITEM_SINGULAR_ROAST_SAUSAGE = 2142, - STR_SHOP_ITEM_SINGULAR_EMPTY_BOWL_BLUE = 2143, STR_SHOP_ITEM_PLURAL_BALLOON = 2016, STR_SHOP_ITEM_PLURAL_CUDDLY_TOY = 2017, @@ -954,25 +936,6 @@ enum { STR_SHOP_ITEM_PLURAL_LEMONADE = 2041, STR_SHOP_ITEM_PLURAL_EMPTY_BOX = 2042, STR_SHOP_ITEM_PLURAL_EMPTY_BOTTLE = 2043, - STR_SHOP_ITEM_PLURAL_PRETZEL = 2147, - STR_SHOP_ITEM_PLURAL_HOT_CHOCOLATE = 2148, - STR_SHOP_ITEM_PLURAL_ICED_TEA = 2149, - STR_SHOP_ITEM_PLURAL_FUNNEL_CAKE = 2150, - STR_SHOP_ITEM_PLURAL_SUNGLASSES = 2151, - STR_SHOP_ITEM_PLURAL_BEEF_NOODLES = 2152, - STR_SHOP_ITEM_PLURAL_FRIED_RICE_NOODLES = 2153, - STR_SHOP_ITEM_PLURAL_WONTON_SOUP = 2154, - STR_SHOP_ITEM_PLURAL_MEATBALL_SOUP = 2155, - STR_SHOP_ITEM_PLURAL_FRUIT_JUICE = 2156, - STR_SHOP_ITEM_PLURAL_SOYBEAN_MILK = 2157, - STR_SHOP_ITEM_PLURAL_SUJONGKWA = 2158, - STR_SHOP_ITEM_PLURAL_SUB_SANDWICH = 2159, - STR_SHOP_ITEM_PLURAL_COOKIE = 2160, - STR_SHOP_ITEM_PLURAL_EMPTY_BOWL_RED = 2161, - STR_SHOP_ITEM_PLURAL_EMPTY_DRINK_CARTON = 2162, - STR_SHOP_ITEM_PLURAL_EMPTY_JUICE_CUP = 2163, - STR_SHOP_ITEM_PLURAL_ROAST_SAUSAGE = 2164, - STR_SHOP_ITEM_PLURAL_EMPTY_BOWL_BLUE = 2165, STR_SHOP_ITEM_INDEFINITE_BALLOON = 2044, STR_SHOP_ITEM_INDEFINITE_CUDDLY_TOY = 2045, @@ -1002,25 +965,6 @@ enum { STR_SHOP_ITEM_INDEFINITE_LEMONADE = 2069, STR_SHOP_ITEM_INDEFINITE_EMPTY_BOX = 2070, STR_SHOP_ITEM_INDEFINITE_EMPTY_BOTTLE = 2071, - STR_SHOP_ITEM_INDEFINITE_PRETZEL = 2169, - STR_SHOP_ITEM_INDEFINITE_HOT_CHOCOLATE = 2170, - STR_SHOP_ITEM_INDEFINITE_ICED_TEA = 2171, - STR_SHOP_ITEM_INDEFINITE_FUNNEL_CAKE = 2172, - STR_SHOP_ITEM_INDEFINITE_SUNGLASSES = 2173, - STR_SHOP_ITEM_INDEFINITE_BEEF_NOODLES = 2174, - STR_SHOP_ITEM_INDEFINITE_FRIED_RICE_NOODLES = 2175, - STR_SHOP_ITEM_INDEFINITE_WONTON_SOUP = 2176, - STR_SHOP_ITEM_INDEFINITE_MEATBALL_SOUP = 2177, - STR_SHOP_ITEM_INDEFINITE_FRUIT_JUICE = 2178, - STR_SHOP_ITEM_INDEFINITE_SOYBEAN_MILK = 2179, - STR_SHOP_ITEM_INDEFINITE_SUJONGKWA = 2180, - STR_SHOP_ITEM_INDEFINITE_SUB_SANDWICH = 2181, - STR_SHOP_ITEM_INDEFINITE_COOKIE = 2182, - STR_SHOP_ITEM_INDEFINITE_EMPTY_BOWL_RED = 2183, - STR_SHOP_ITEM_INDEFINITE_EMPTY_DRINK_CARTON = 2184, - STR_SHOP_ITEM_INDEFINITE_EMPTY_JUICE_CUP = 2185, - STR_SHOP_ITEM_INDEFINITE_ROAST_SAUSAGE = 2186, - STR_SHOP_ITEM_INDEFINITE_EMPTY_BOWL_BLUE = 2187, STR_SHOP_ITEM_DISPLAY_BALLOON = 2072, STR_SHOP_ITEM_DISPLAY_CUDDLY_TOY = 2073, @@ -1050,6 +994,67 @@ enum { STR_SHOP_ITEM_DISPLAY_LEMONADE = 2097, STR_SHOP_ITEM_DISPLAY_EMPTY_BOX = 2098, STR_SHOP_ITEM_DISPLAY_EMPTY_BOTTLE = 2099, + + STR_SHOP_ITEM_SINGULAR_PRETZEL = 2125, + STR_SHOP_ITEM_SINGULAR_HOT_CHOCOLATE = 2126, + STR_SHOP_ITEM_SINGULAR_ICED_TEA = 2127, + STR_SHOP_ITEM_SINGULAR_FUNNEL_CAKE = 2128, + STR_SHOP_ITEM_SINGULAR_SUNGLASSES = 2129, + STR_SHOP_ITEM_SINGULAR_BEEF_NOODLES = 2130, + STR_SHOP_ITEM_SINGULAR_FRIED_RICE_NOODLES = 2131, + STR_SHOP_ITEM_SINGULAR_WONTON_SOUP = 2132, + STR_SHOP_ITEM_SINGULAR_MEATBALL_SOUP = 2133, + STR_SHOP_ITEM_SINGULAR_FRUIT_JUICE = 2134, + STR_SHOP_ITEM_SINGULAR_SOYBEAN_MILK = 2135, + STR_SHOP_ITEM_SINGULAR_SUJONGKWA = 2136, + STR_SHOP_ITEM_SINGULAR_SUB_SANDWICH = 2137, + STR_SHOP_ITEM_SINGULAR_COOKIE = 2138, + STR_SHOP_ITEM_SINGULAR_EMPTY_BOWL_RED = 2139, + STR_SHOP_ITEM_SINGULAR_EMPTY_DRINK_CARTON = 2140, + STR_SHOP_ITEM_SINGULAR_EMPTY_JUICE_CUP = 2141, + STR_SHOP_ITEM_SINGULAR_ROAST_SAUSAGE = 2142, + STR_SHOP_ITEM_SINGULAR_EMPTY_BOWL_BLUE = 2143, + + STR_SHOP_ITEM_PLURAL_PRETZEL = 2147, + STR_SHOP_ITEM_PLURAL_HOT_CHOCOLATE = 2148, + STR_SHOP_ITEM_PLURAL_ICED_TEA = 2149, + STR_SHOP_ITEM_PLURAL_FUNNEL_CAKE = 2150, + STR_SHOP_ITEM_PLURAL_SUNGLASSES = 2151, + STR_SHOP_ITEM_PLURAL_BEEF_NOODLES = 2152, + STR_SHOP_ITEM_PLURAL_FRIED_RICE_NOODLES = 2153, + STR_SHOP_ITEM_PLURAL_WONTON_SOUP = 2154, + STR_SHOP_ITEM_PLURAL_MEATBALL_SOUP = 2155, + STR_SHOP_ITEM_PLURAL_FRUIT_JUICE = 2156, + STR_SHOP_ITEM_PLURAL_SOYBEAN_MILK = 2157, + STR_SHOP_ITEM_PLURAL_SUJONGKWA = 2158, + STR_SHOP_ITEM_PLURAL_SUB_SANDWICH = 2159, + STR_SHOP_ITEM_PLURAL_COOKIE = 2160, + STR_SHOP_ITEM_PLURAL_EMPTY_BOWL_RED = 2161, + STR_SHOP_ITEM_PLURAL_EMPTY_DRINK_CARTON = 2162, + STR_SHOP_ITEM_PLURAL_EMPTY_JUICE_CUP = 2163, + STR_SHOP_ITEM_PLURAL_ROAST_SAUSAGE = 2164, + STR_SHOP_ITEM_PLURAL_EMPTY_BOWL_BLUE = 2165, + + STR_SHOP_ITEM_INDEFINITE_PRETZEL = 2169, + STR_SHOP_ITEM_INDEFINITE_HOT_CHOCOLATE = 2170, + STR_SHOP_ITEM_INDEFINITE_ICED_TEA = 2171, + STR_SHOP_ITEM_INDEFINITE_FUNNEL_CAKE = 2172, + STR_SHOP_ITEM_INDEFINITE_SUNGLASSES = 2173, + STR_SHOP_ITEM_INDEFINITE_BEEF_NOODLES = 2174, + STR_SHOP_ITEM_INDEFINITE_FRIED_RICE_NOODLES = 2175, + STR_SHOP_ITEM_INDEFINITE_WONTON_SOUP = 2176, + STR_SHOP_ITEM_INDEFINITE_MEATBALL_SOUP = 2177, + STR_SHOP_ITEM_INDEFINITE_FRUIT_JUICE = 2178, + STR_SHOP_ITEM_INDEFINITE_SOYBEAN_MILK = 2179, + STR_SHOP_ITEM_INDEFINITE_SUJONGKWA = 2180, + STR_SHOP_ITEM_INDEFINITE_SUB_SANDWICH = 2181, + STR_SHOP_ITEM_INDEFINITE_COOKIE = 2182, + STR_SHOP_ITEM_INDEFINITE_EMPTY_BOWL_RED = 2183, + STR_SHOP_ITEM_INDEFINITE_EMPTY_DRINK_CARTON = 2184, + STR_SHOP_ITEM_INDEFINITE_EMPTY_JUICE_CUP = 2185, + STR_SHOP_ITEM_INDEFINITE_ROAST_SAUSAGE = 2186, + STR_SHOP_ITEM_INDEFINITE_EMPTY_BOWL_BLUE = 2187, + STR_SHOP_ITEM_DISPLAY_PRETZEL = 2191, STR_SHOP_ITEM_DISPLAY_HOT_CHOCOLATE = 2192, STR_SHOP_ITEM_DISPLAY_ICED_TEA = 2193, @@ -1070,7 +1075,6 @@ enum { STR_SHOP_ITEM_DISPLAY_ROAST_SAUSAGE = 2208, STR_SHOP_ITEM_DISPLAY_EMPTY_BOWL_BLUE = 2209, - STR_STAFF_HANDYMEN_TAB_TIP = 2210, STR_STAFF_MECHANICS_TAB_TIP = 2211, STR_STAFF_SECURITY_TAB_TIP = 2212, @@ -1374,87 +1378,27 @@ enum { STR_SHORTCUT_SHOW_RECENT_MESSAGES = 2522, STR_SHORTCUT_SHOW_MAP = 2523, STR_SHORTCUT_SCREENSHOT = 2524, - STR_INDIVIDUAL_KEYS_BASE = 2525, - STR_GOLF_HOLE_A = 3049, - STR_GOLF_HOLE_B = 3050, - STR_GOLF_HOLE_C = 3051, - STR_GOLF_HOLE_D = 3052, - STR_GOLF_HOLE_E = 3053, + STR_CHEAT_TIP_5K_MONEY = 2681, - STR_TOP_SECTION = 3069, - STR_SLOPE_TO_LEVEL = 3070, + STR_CHEAT_TIP_LARGE_TRAM_GUESTS = 2684, - STR_NOT_ALLOWED_TO_MODIFY_STATION = 3092, - - // Cheats - STR_CHEAT_TITLE = 5217, - STR_CHEAT_TITLE_FINANCIAL = 5345, - STR_CHEAT_TITLE_GUEST = 5346, - STR_CHEAT_TITLE_RIDE = 5347, - STR_CHEAT_TITLE_PARK = 5348, - - // Money - STR_CHEAT_5K_MONEY = 2760, - STR_CHEAT_CLEAR_LOAN = 5302, - - // Guests - STR_CHEAT_LARGE_TRAM_GUESTS = 2765, - STR_CHEAT_EXPLODE = 5285, - STR_CHEAT_REMOVE_ALL_GUESTS = 5359, - STR_CHEAT_GUEST_HAPPINESS = 5352, - STR_CHEAT_GUEST_ENERGY = 5353, - STR_CHEAT_GUEST_HUNGER = 5354, - STR_CHEAT_GUEST_THIRST = 5355, - STR_CHEAT_GUEST_NAUSEA = 5356, - STR_CHEAT_GUEST_NAUSEA_TOLERANCE = 5357, - STR_CHEAT_GUEST_BATHROOM = 5358, - STR_CHEAT_GIVE_ALL_GUESTS = 5361, - STR_CHEAT_GUEST_PREFERRED_INTENSITY = 5362, - STR_CHEAT_MORE_THAN_1 = 5363, - STR_CHEAT_LESS_THAN_15 = 5364, - STR_CHEAT_IGNORE_INTENSITY = 5506, - - // Misc. - STR_CHEAT_FREEZE_CLIMATE = 2767, - STR_CHEAT_UNFREEZE_CLIMATE = 2768, - STR_CHEAT_OPEN_PARK = 2769, - STR_CHEAT_CLOSE_PARK = 2770, - STR_CHEAT_ZERO_CLEARANCE = 2759, - STR_CHEAT_FORCE_SUN = 2757, - STR_CHEAT_FORCE_THUNDER = 2758, STR_CHEAT_CLEAR_GRASS = 2752, STR_CHEAT_MOWED_GRASS = 2753, STR_CHEAT_WATER_PLANTS = 2754, STR_CHEAT_FIX_VANDALISM = 2755, STR_CHEAT_REMOVE_LITTER = 2756, + STR_CHEAT_FORCE_SUN = 2757, + STR_CHEAT_FORCE_THUNDER = 2758, + STR_CHEAT_ZERO_CLEARANCE = 2759, + STR_CHEAT_5K_MONEY = 2760, + STR_CHEAT_LARGE_TRAM_GUESTS = 2765, STR_CHEAT_WIN_SCENARIO = 2766, - STR_CHEAT_UNLOCK_PRICES = 5157, - STR_CHEAT_BUILD_IN_PAUSE_MODE = 5303, - STR_CHEAT_PARK_PARAMETERS = 5369, - - // Rides - STR_CHEAT_RENEW_RIDES = 5123, - STR_CHEAT_MAKE_DESTRUCTABLE = 5125, - STR_CHEAT_FIX_ALL_RIDES = 5132, - STR_CHEAT_410_HILL_LIFT = 5137, - STR_CHEAT_DISABLE_BRAKES_FAILURE = 5140, - STR_CHEAT_DISABLE_BREAKDOWNS = 5141, - - // Cheat tips - STR_CHEAT_TIP_5K_MONEY = 2681, - STR_CHEAT_TIP_CLEAR_LOAN = 5301, - STR_CHEAT_TIP_LARGE_TRAM_GUESTS = 2684, - STR_CHEAT_TIP_EXPLODE = 5286, - STR_CHEAT_TIP_REMOVE_ALL_GUESTS = 5360, - STR_CHEAT_TIP_PARK_PARAMETERS = 5370, - - // Cheat tab tips - STR_FINANCIAL_CHEATS_TIP = 5178, - STR_GUEST_CHEATS_TIP = 5179, - STR_PARK_CHEATS_TIP = 5180, - STR_RIDE_CHEATS_TIP = 5181, + STR_CHEAT_FREEZE_CLIMATE = 2767, + STR_CHEAT_UNFREEZE_CLIMATE = 2768, + STR_CHEAT_OPEN_PARK = 2769, + STR_CHEAT_CLOSE_PARK = 2770, STR_SHORTCUT_ENTRY_FORMAT = 2781, STR_SHIFT_PLUS = 2782, @@ -1571,7 +1515,7 @@ enum { STR_JUNGLE_DRUMS_STYLE = STR_MUSIC_STYLE_START + 5, STR_EGYPTIAN_STYLE = STR_MUSIC_STYLE_START + 6, STR_TOYLAND_STYLE = STR_MUSIC_STYLE_START + 7, - // STR_??? = STR_MUSIC_STYLE_START + 8, + // STR_??? = STR_MUSIC_STYLE_START + 8, // Circus show; never displayed as a string STR_SPACE_STYLE = STR_MUSIC_STYLE_START + 9, STR_HORROR_STYLE = STR_MUSIC_STYLE_START + 10, STR_TECHNO_STYLE = STR_MUSIC_STYLE_START + 11, @@ -1602,6 +1546,12 @@ enum { STR_THIS_RIDE_CANNOT_BE_MODIFIED = 3046, STR_LOCAL_AUTHORITY_FORBIDS_DEMOLITION_OR_MODIFICATIONS_TO_THIS_RIDE = 3047, + STR_GOLF_HOLE_A = 3049, + STR_GOLF_HOLE_B = 3050, + STR_GOLF_HOLE_C = 3051, + STR_GOLF_HOLE_D = 3052, + STR_GOLF_HOLE_E = 3053, + STR_WHITE = 3055, STR_TRANSLUCENT = 3056, STR_CONSTRUCTION_MARKER = 3057, @@ -1614,11 +1564,8 @@ enum { STR_RIDE_CONSTRUCTION_STANDARD_RC_TRACK_TIP = 3062, STR_RIDE_CONSTRUCTION_WATER_CHANNEL_TIP = 3063, - STR_BEGINNER_PARKS = 3064, - STR_CHALLENGING_PARKS = STR_BEGINNER_PARKS + 1, - STR_EXPERT_PARKS = STR_BEGINNER_PARKS + 2, - STR_REAL_PARKS = STR_BEGINNER_PARKS + 3, - STR_OTHER_PARKS = STR_BEGINNER_PARKS + 4, + STR_TOP_SECTION = 3069, + STR_SLOPE_TO_LEVEL = 3070, STR_SAME_PRICE_THROUGHOUT_PARK = 3071, STR_SAME_PRICE_THROUGHOUT_PARK_TIP = 3072, @@ -1643,12 +1590,23 @@ enum { STR_SPACE_ENTRANCE = 3089, STR_SELECT_STYLE_OF_ENTRANCE_EXIT_STATION_TIP = 3090, + + STR_YOU_ARE_NOT_ALLOWED_TO_REMOVE_THIS_SECTION = 3091, + STR_SELECT_LIFT_HILL_CHAIN_SPEED_TIP = 3097, STR_SELECT_COLOUR = 3099, STR_SELECT_SECONDARY_COLOUR = 3100, STR_SELECT_TERNARY_COLOUR = 3101, + STR_BEGINNER_PARKS = 3064, + STR_CHALLENGING_PARKS = STR_BEGINNER_PARKS + 1, + STR_EXPERT_PARKS = STR_BEGINNER_PARKS + 2, + STR_REAL_PARKS = STR_BEGINNER_PARKS + 3, + STR_OTHER_PARKS = STR_BEGINNER_PARKS + 4, + + STR_NOT_ALLOWED_TO_MODIFY_STATION = 3092, + STR_LIST_RIDES_TIP = 3104, STR_LIST_SHOPS_AND_STALLS_TIP = 3105, STR_LIST_KIOSKS_AND_FACILITIES_TIP = 3106, @@ -1685,6 +1643,8 @@ enum { STR_SELECT_NEARBY_SCENERY = 3137, STR_RESET_SELECTION = 3138, + STR_MULTICIRCUIT_NOT_POSSIBLE_WITH_CABLE_LIFT_HILL = 3141, + STR_SHOW_PEOPLE_ON_MAP_TIP = 3143, STR_SHOW_RIDES_STALLS_ON_MAP_TIP = 3144, @@ -1807,7 +1767,6 @@ enum { STR_CHANGE_NAME_OF_SCENARIO_TIP = 3296, STR_CHANGE_DETAIL_NOTES_ABOUT_PARK_SCENARIO_TIP = 3297, - STR_NO_DETAILS_YET = 3317, STR_SELECT_WHICH_GROUP_THIS_SCENARIO_APPEARS_IN = 3318, @@ -1832,10 +1791,15 @@ enum { STR_ROLLER_COASTER_DESIGNER = 3344, STR_TRACK_DESIGNS_MANAGER = 3345, + STR_CANT_SAVE_TRACK_DESIGN = 3346, + STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY = 3347, STR_TRACK_MANAGE_RENAME = 3348, STR_TRACK_MANAGE_DELETE = 3349, STR_CANT_RENAME_TRACK_DESIGN = 3352, + STR_NEW_NAME_CONTAINS_INVALID_CHARACTERS = 3353, + STR_ANOTHER_FILE_EXISTS_WITH_NAME_OR_FILE_IS_WRITE_PROTECTED = 3354, + STR_FILE_IS_WRITE_PROTECTED_OR_LOCKED = 3355, STR_ARE_YOU_SURE_YOU_WANT_TO_PERMANENTLY_DELETE_TRACK = 3357, STR_CANT_DELETE_TRACK_DESIGN = 3358, @@ -1860,19 +1824,6 @@ enum { STR_SAVE_TRACK_SCENERY_UNABLE_TO_SELECT_ADDITIONAL_ITEM_OF_SCENERY = 3389, STR_SAVE_TRACK_SCENERY_TOO_MANY_ITEMS_SELECTED = 3390, - STR_OBJECTIVE_2_NONE = 2397, - STR_OBJECTIVE_2_NUMBER_OF_GUESTS_AT_A_GIVEN_DATE = STR_OBJECTIVE_2_NONE + 1, - STR_OBJECTIVE_2_PARK_VALUE_AT_A_GIVEN_DATE = STR_OBJECTIVE_2_NONE + 2, - STR_OBJECTIVE_2_HAVE_FUN = STR_OBJECTIVE_2_NONE + 3, - STR_OBJECTIVE_2_BUILD_THE_BEST_RIDE_YOU_CAN = STR_OBJECTIVE_2_NONE + 4, - STR_OBJECTIVE_2_BUILD_10_ROLLER_COASTERS = STR_OBJECTIVE_2_NONE + 5, - STR_OBJECTIVE_2_NUMBER_OF_GUESTS_IN_PARK = STR_OBJECTIVE_2_NONE + 6, - STR_OBJECTIVE_2_MONTHLY_INCOME_FROM_RIDE_TICKETS = STR_OBJECTIVE_2_NONE + 7, - STR_OBJECTIVE_2_BUILD_10_ROLLER_COASTERS_OF_A_GIVEN_LENGTH = STR_OBJECTIVE_2_NONE + 8, - STR_OBJECTIVE_2_FINISH_BUILDING_5_ROLLER_COASTERS = STR_OBJECTIVE_2_NONE + 9, - STR_OBJECTIVE_2_REPAY_LOAN_AND_ACHIEVE_A_GIVEN_PARK_VALUE = STR_OBJECTIVE_2_NONE + 10, - STR_OBJECTIVE_2_MONTHLY_PROFIT_FROM_FOOD_MERCHANDISE = STR_OBJECTIVE_2_NONE + 11, - STR_CLEAR_SCENERY_TIP = 3437, STR_CLEAR_SCENERY = 3439, @@ -1890,6 +1841,13 @@ enum { STR_FINANCES_BUTTON_ON_TOOLBAR = 5120, STR_RESEARCH_BUTTON_ON_TOOLBAR = 5121, STR_SELECT_BY_TRACK_TYPE = 5122, + + STR_CHEAT_RENEW_RIDES = 5123, + STR_CHEAT_MAKE_DESTRUCTABLE = 5125, + STR_CHEAT_FIX_ALL_RIDES = 5132, + STR_CHEAT_410_HILL_LIFT = 5137, + STR_CHEAT_DISABLE_BRAKES_FAILURE = 5140, + STR_CHEAT_DISABLE_BREAKDOWNS = 5141, STR_CHEATS_BUTTON_ON_TOOLBAR = 5147, STR_GAME_SPEED_TIP = 5148, STR_CHEATS_TIP = 5149, @@ -1900,6 +1858,8 @@ enum { STR_TEST_UNFINISHED_TRACKS = 5155, STR_TEST_UNFINISHED_TRACKS_TIP = 5156, + STR_CHEAT_UNLOCK_PRICES = 5157, + STR_TWITCH_NAME = 5164, STR_TWITCH_PEEP_FOLLOWERS = 5165, STR_TWITCH_PEEP_FOLLOWERS_TIP = 5166, @@ -1916,6 +1876,14 @@ enum { STR_FULLSCREEN_MODE = 5177, + // Cheat tab tips + STR_FINANCIAL_CHEATS_TIP = 5178, + STR_GUEST_CHEATS_TIP = 5179, + STR_PARK_CHEATS_TIP = 5180, + STR_RIDE_CHEATS_TIP = 5181, + + STR_CHEAT_TITLE = 5217, + STR_GIANT_SCREENSHOT = 5260, STR_OPTIONS_DISPLAY_TIP = 5266, @@ -1927,6 +1895,13 @@ enum { STR_CHEAT_SANDBOX_MODE = 5278, STR_CHEAT_SANDBOX_MODE_DISABLE = 5279, STR_CHEAT_SANDBOX_MODE_TIP = 5280, + STR_CHEAT_TIP_EXPLODE = 5286, + + STR_CHEAT_EXPLODE = 5285, + + STR_CHEAT_TIP_CLEAR_LOAN = 5301, + STR_CHEAT_CLEAR_LOAN = 5302, + STR_CHEAT_BUILD_IN_PAUSE_MODE = 5303, STR_TITLE_SEQUENCE = 5304, STR_TITLE_SEQUENCE_RCT1 = 5305, @@ -1939,10 +1914,10 @@ enum { STR_DEBUG_TIP = 5311, STR_DEBUG_DROPDOWN_CONSOLE = 5312, STR_DEBUG_DROPDOWN_TILE_INSPECTOR = 5313, - STR_DEBUG_DROPDOWN_OBJECT_SELECTION = 5371, STR_TILE_INSPECTOR_TITLE = 5314, STR_TILE_INSPECTOR_TERRAIN_START = 5315, + STR_TILE_INSPECTOR_TERRAIN_EDGE_START = 5331, STR_TILE_INSPECTOR_ENTRANCE_START = 5335, STR_TILE_INSPECTOR_ELEMENT_TYPE = 5338, @@ -1955,12 +1930,35 @@ enum { STR_CHANGELOG_TITLE = 5344, + STR_CHEAT_TITLE_FINANCIAL = 5345, + STR_CHEAT_TITLE_GUEST = 5346, + STR_CHEAT_TITLE_RIDE = 5347, + STR_CHEAT_TITLE_PARK = 5348, + STR_MAX = 5350, STR_MIN = 5351, + + STR_CHEAT_GUEST_HAPPINESS = 5352, + STR_CHEAT_GUEST_ENERGY = 5353, + STR_CHEAT_GUEST_HUNGER = 5354, + STR_CHEAT_GUEST_THIRST = 5355, + STR_CHEAT_GUEST_NAUSEA = 5356, + STR_CHEAT_GUEST_NAUSEA_TOLERANCE = 5357, + STR_CHEAT_GUEST_BATHROOM = 5358, + STR_CHEAT_REMOVE_ALL_GUESTS = 5359, + STR_CHEAT_TIP_REMOVE_ALL_GUESTS = 5360, + STR_CHEAT_GIVE_ALL_GUESTS = 5361, + STR_CHEAT_GUEST_PREFERRED_INTENSITY = 5362, + STR_CHEAT_MORE_THAN_1 = 5363, + STR_CHEAT_LESS_THAN_15 = 5364, STR_CHEAT_STAFF_SPEED = 5365, STR_NORMAL = 5366, STR_FAST = 5367, STR_CHEAT_RESET_CRASH_STATUS = 5368, + STR_CHEAT_PARK_PARAMETERS = 5369, + STR_CHEAT_TIP_PARK_PARAMETERS = 5370, + + STR_DEBUG_DROPDOWN_OBJECT_SELECTION = 5371, STR_INVERT_RIGHT_MOUSE_DRAG = 5372, @@ -1969,6 +1967,7 @@ enum { STR_UP = 5375, STR_DOWN = 5376, + STR_EDIT_TITLE_SEQUENCES_BUTTON = 5436, STR_MININISE_FULL_SCREEN_ON_FOCUS_LOSS = 5440, @@ -1993,6 +1992,8 @@ enum { STR_DISABLE_CLEARANCE_CHECKS = 5456, STR_DISABLE_SUPPORT_LIMITS = 5457, + STR_ROTATE_CLOCKWISE = 5458, + STR_ROTATE_ANTI_CLOCKWISE = 5459, STR_SHORTCUT_ROTATE_VIEW_ANTICLOCKWISE = 5460, STR_CHEAT_SET_GUESTS_PARAMETERS = 5461, @@ -2050,11 +2051,13 @@ enum { STR_START_SERVER = 5501, STR_MULTIPLAYER = 5502, STR_ENTER_HOSTNAME_OR_IP_ADDRESS = 5503, - STR_SHOW_MULTIPLAYER_STATUS_TIP = 5504, STR_UNABLE_TO_CONNECT_TO_SERVER = 5505, + STR_CHEAT_IGNORE_INTENSITY = 5506, + STR_HANDYMEN_MOW_BY_DEFAULT = 5507, + STR_ALLOW_LOADING_WITH_INCORRECT_CHECKSUM = 5508, STR_ALLOW_LOADING_WITH_INCORRECT_CHECKSUM_TIP = 5509, diff --git a/src/ride/ride.c b/src/ride/ride.c index 4645bd30a4..43a432f84e 100644 --- a/src/ride/ride.c +++ b/src/ride/ride.c @@ -3586,13 +3586,13 @@ void game_command_set_ride_setting(int *eax, int *ebx, int *ecx, int *edx, int * if (setting == 0){ if (ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN){ - RCT2_GLOBAL(0x141E9AC, uint16) = 1796; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_HAS_BROKEN_DOWN_AND_REQUIRES_FIXING; *ebx = MONEY32_UNDEFINED; return; } if (ride->status != RIDE_STATUS_CLOSED){ - RCT2_GLOBAL(0x141E9AC, uint16) = 1006; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_MUST_BE_CLOSED_FIRST; *ebx = MONEY32_UNDEFINED; return; } @@ -3601,7 +3601,7 @@ void game_command_set_ride_setting(int *eax, int *ebx, int *ecx, int *edx, int * if (setting == 9 && ride->lifecycle_flags & RIDE_LIFECYCLE_CABLE_LIFT && new_value > 1){ - RCT2_GLOBAL(0x141E9AC, uint16) = 3141; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_MULTICIRCUIT_NOT_POSSIBLE_WITH_CABLE_LIFT_HILL; *ebx = MONEY32_UNDEFINED; return; } @@ -3708,17 +3708,17 @@ int ride_mode_check_valid_station_numbers(rct_ride *ride) case RIDE_MODE_POWERED_LAUNCH: case RIDE_MODE_LIM_POWERED_LAUNCH: if (no_stations <= 1) return 1; - RCT2_GLOBAL(0x141E9AC, uint16) = 1015; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_UNABLE_TO_OPERATE_WITH_MORE_THAN_ONE_STATION_IN_THIS_MODE; return 0; case RIDE_MODE_SHUTTLE: if (no_stations >= 2) return 1; - RCT2_GLOBAL(0x141E9AC, uint16) = 1016; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_UNABLE_TO_OPERATE_WITH_LESS_THAN_TWO_STATIONS_IN_THIS_MODE; return 0; } if (ride->type == RIDE_TYPE_GO_KARTS || ride->type == RIDE_TYPE_MINI_GOLF){ if (no_stations <= 1) return 1; - RCT2_GLOBAL(0x141E9AC, uint16) = 1015; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_UNABLE_TO_OPERATE_WITH_MORE_THAN_ONE_STATION_IN_THIS_MODE; return 0; } @@ -3787,12 +3787,12 @@ int ride_check_for_entrance_exit(int rideIndex) } if (entrance == 0){ - RCT2_GLOBAL(0x141E9AC, uint16) = 1146; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_ENTRANCE_NOT_YET_BUILT; return 0; } if (exit == 0){ - RCT2_GLOBAL(0x141E9AC, uint16) = 1147; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_EXIT_NOT_YET_BUILT; return 0; } @@ -6315,7 +6315,7 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio } if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 2214; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED; return MONEY32_UNDEFINED; } @@ -6339,13 +6339,13 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio return MONEY32_UNDEFINED; } - if (RCT2_GLOBAL(0x00F1AD60, uint8) & (1 << 2)){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1031; + if (RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & (1 << 2)){ + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_RIDE_CANT_BUILD_THIS_UNDERWATER; return MONEY32_UNDEFINED; } if (z > 1952){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 878; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_TOO_HIGH; return MONEY32_UNDEFINED; } @@ -6353,12 +6353,12 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio else{ rct_ride* ride = GET_RIDE(rideIndex); if (ride->status != RIDE_STATUS_CLOSED){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1006; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_MUST_BE_CLOSED_FIRST; return MONEY32_UNDEFINED; } if (ride->lifecycle_flags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 3092; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_NOT_ALLOWED_TO_MODIFY_STATION; return MONEY32_UNDEFINED; } @@ -6372,7 +6372,7 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio if (is_exit){ if (ride->exits[station_num] != 0xFFFF){ if (flags & (1 << 6)){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 0; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = 0; return MONEY32_UNDEFINED; } @@ -6384,7 +6384,7 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio else{ if (ride->entrances[station_num] != 0xFFFF){ if (flags & (1 << 6)){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 0; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = 0; return MONEY32_UNDEFINED; } @@ -6433,13 +6433,13 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio return MONEY32_UNDEFINED; } - if (RCT2_GLOBAL(0x00F1AD60, uint8) & (1 << 2)){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1031; + if (RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & ELEMENT_IS_UNDERWATER){ + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_RIDE_CANT_BUILD_THIS_UNDERWATER; return MONEY32_UNDEFINED; } if (z / 8 > 244){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 878; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_TOO_HIGH; return MONEY32_UNDEFINED; } @@ -6501,13 +6501,13 @@ money32 remove_ride_entrance_or_exit(sint16 x, sint16 y, uint8 rideIndex, uint8 if (!(flags & (1 << 6))){ if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 2214; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED; return MONEY32_UNDEFINED; } } if (ride->status != RIDE_STATUS_CLOSED){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1006; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_MUST_BE_CLOSED_FIRST; return MONEY32_UNDEFINED; } diff --git a/src/ride/track.c b/src/ride/track.c index d0d55b0fd0..da08a9d92e 100644 --- a/src/ride/track.c +++ b/src/ride/track.c @@ -2256,7 +2256,7 @@ int track_rename(const char *text) case '*': case '?': // Invalid characters - RCT2_GLOBAL(0x141E9AC, uint16) = 3353; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_NEW_NAME_CONTAINS_INVALID_CHARACTERS; return 0; } txt_chr++; @@ -2272,7 +2272,7 @@ int track_rename(const char *text) subsitute_path(old_path, RCT2_ADDRESS(RCT2_ADDRESS_TRACKS_PATH, char), &RCT2_ADDRESS(RCT2_ADDRESS_TRACK_LIST, char)[128 * w->track_list.var_482]); if (!platform_file_move(old_path, new_path)) { - RCT2_GLOBAL(0x141E9AC, uint16) = 3354; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_ANOTHER_FILE_EXISTS_WITH_NAME_OR_FILE_IS_WRITE_PROTECTED; return 0; } @@ -2301,7 +2301,7 @@ int track_delete() subsitute_path(path, RCT2_ADDRESS(RCT2_ADDRESS_TRACKS_PATH, char), &RCT2_ADDRESS(RCT2_ADDRESS_TRACK_LIST, char)[128 * w->track_list.var_482]); if (!platform_file_delete(path)) { - RCT2_GLOBAL(0x141E9AC, uint16) = 3355; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_FILE_IS_WRITE_PROTECTED_OR_LOCKED; return 0; } @@ -2431,7 +2431,7 @@ int copy_scenery_to_track(uint8** track_pointer){ y /= 32; if (x > 127 || y > 127 || x < -126 || y < -126){ - window_error_open(3346, 3347); + window_error_open(3346, STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY); return 0; } @@ -2443,7 +2443,7 @@ int copy_scenery_to_track(uint8** track_pointer){ z /= 8; if (z > 127 || z < -126){ - window_error_open(3346, 3347); + window_error_open(3346, STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY); return 0; } @@ -2487,7 +2487,7 @@ int maze_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* track_ } if (map_found == 0){ - RCT2_GLOBAL(0x00141E9AC, uint16) = 3347; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY; return 0; } @@ -2516,7 +2516,7 @@ int maze_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* track_ maze++; if (maze >= RCT2_ADDRESS(0x009DA151, rct_maze_element)){ - RCT2_GLOBAL(0x00141E9AC, uint16) = 3347; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY; return 0; } } while (!map_element_is_last_for_tile(map_element++)); @@ -2529,7 +2529,7 @@ int maze_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* track_ uint16 location = ride->entrances[0]; if (location == 0xFFFF){ - RCT2_GLOBAL(0x00141E9AC, uint16) = 3347; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY; return 0; } @@ -2560,7 +2560,7 @@ int maze_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* track_ location = ride->exits[0]; if (location == 0xFFFF){ - RCT2_GLOBAL(0x00141E9AC, uint16) = 3347; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY; return 0; } @@ -2628,7 +2628,7 @@ int tracked_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* tra track_begin_end trackBeginEnd; if (sub_6CAF80(rideIndex, &trackElement) == 0){ - RCT2_GLOBAL(0x00141E9AC, uint16) = 3347; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY; return 0; } @@ -2649,7 +2649,7 @@ int tracked_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* tra RCT2_GLOBAL(0x00F4414D, uint8) = direction; if (sub_6C683D(&trackElement.x, &trackElement.y, &z, direction, track_type, 0, &trackElement.element, 0)){ - RCT2_GLOBAL(0x00141E9AC, uint16) = 3347; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY; return 0; } @@ -2818,7 +2818,7 @@ int tracked_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* tra z /= 8; if (z > 127 || z < -126){ - RCT2_GLOBAL(0x00141E9AC, uint16) = 3347; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY; return 0; } @@ -2973,22 +2973,22 @@ int save_track_design(uint8 rideIndex){ rct_ride* ride = GET_RIDE(rideIndex); if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)){ - window_error_open(3346, RCT2_GLOBAL(0x141E9AC, rct_string_id)); + window_error_open(STR_CANT_SAVE_TRACK_DESIGN, RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id)); return 0; } if (ride->ratings.excitement == 0xFFFF){ - window_error_open(3346, RCT2_GLOBAL(0x141E9AC, rct_string_id)); + window_error_open(STR_CANT_SAVE_TRACK_DESIGN, RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id)); return 0; } if (!ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_HAS_TRACK)) { - window_error_open(3346, RCT2_GLOBAL(0x141E9AC, rct_string_id)); + window_error_open(STR_CANT_SAVE_TRACK_DESIGN, RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id)); return 0; } if (!ride_to_td6(rideIndex)){ - window_error_open(3346, RCT2_GLOBAL(0x141E9AC, rct_string_id)); + window_error_open(STR_CANT_SAVE_TRACK_DESIGN, RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id)); return 0; } @@ -3187,7 +3187,7 @@ void game_command_place_track_design(int* eax, int* ebx, int* ecx, int* edx, int if (!(flags & GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED)){ if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED; *ebx = MONEY32_UNDEFINED; return; } @@ -3244,10 +3244,10 @@ void game_command_place_track_design(int* eax, int* ebx, int* ecx, int* edx, int if (cost == MONEY32_UNDEFINED || !(flags & GAME_COMMAND_FLAG_APPLY)){ - rct_string_id error_reason = RCT2_GLOBAL(0x00141E9AC, rct_string_id); + rct_string_id error_reason = RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id); game_do_command(0, GAME_COMMAND_FLAG_APPLY, 0, rideIndex, GAME_COMMAND_DEMOLISH_RIDE, 0, 0); *ebx = cost; - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = error_reason; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = error_reason; RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_RIDE_CONSTRUCTION * 4; RCT2_GLOBAL(0x00F44121, money32) = cost; return; @@ -3490,7 +3490,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in RCT2_GLOBAL(0x00F441D5, uint32) = properties_1; RCT2_GLOBAL(0x00F441D9, uint32) = properties_2; RCT2_GLOBAL(0x00F441DD, uint32) = properties_3; - RCT2_GLOBAL(0x00F441D4, uint8) = 0; + RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) = 0; uint64 enabledTrackPieces = 0; enabledTrackPieces |= rideEntry->enabledTrackPiecesB & RCT2_ADDRESS(0x01357644, uint32)[ride->type]; @@ -3670,16 +3670,16 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in return MONEY32_UNDEFINED; } - bh = RCT2_GLOBAL(0x00F1AD60, uint8) & 3; - if (RCT2_GLOBAL(0x00F441D4, uint8) != 0 && (RCT2_GLOBAL(0x00F441D4, uint8) & bh) == 0) { + bh = RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & 3; + if (RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) != 0 && (RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) & bh) == 0) { RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CANT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_GROUND; return MONEY32_UNDEFINED; } - RCT2_GLOBAL(0x00F441D4, uint8) = bh; + RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) = bh; if (rideTypeFlags & RIDE_TYPE_FLAG_FLAT_RIDE) { if (RCT2_ADDRESS(0x0099443C, uint16)[type] & 0x200) { - if (RCT2_GLOBAL(0x00F441D4, uint8) & 2) { + if (RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND) { RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; return MONEY32_UNDEFINED; } @@ -3687,7 +3687,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in } else { if (RCT2_ADDRESS(0x0099423C, uint16)[type] & 0x200) { - if (RCT2_GLOBAL(0x00F441D4, uint8) & 2) { + if (RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND) { RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; return MONEY32_UNDEFINED; } @@ -3696,7 +3696,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in if (rideTypeFlags & RIDE_TYPE_FLAG_FLAT_RIDE) { if (RCT2_ADDRESS(0x0099443C, uint16)[type] & 1) { - if (!(RCT2_GLOBAL(0x00F1AD60, uint8) & 4)) { + if (!(RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & ELEMENT_IS_UNDERWATER)) { RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_UNDERWATER; return MONEY32_UNDEFINED; } @@ -3704,14 +3704,14 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in } else { if (RCT2_ADDRESS(0x0099423C, uint16)[type] & 1) { - if (RCT2_GLOBAL(0x00F1AD60, uint8) & 4) { + if (RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & ELEMENT_IS_UNDERWATER) { RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_UNDERWATER; return MONEY32_UNDEFINED; } } } - if (RCT2_GLOBAL(0x00F1AD60, uint8) & 4) { + if (RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & ELEMENT_IS_UNDERWATER) { RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_RIDE_CANT_BUILD_THIS_UNDERWATER; return MONEY32_UNDEFINED; } @@ -3978,7 +3978,7 @@ money32 track_remove(uint8 type, uint8 sequence, sint16 originX, sint16 originY, } if (!(flags & (1 << 3)) && RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 2214; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED; return MONEY32_UNDEFINED; } @@ -4019,7 +4019,7 @@ money32 track_remove(uint8 type, uint8 sequence, sint16 originX, sint16 originY, } if (mapElement->flags & (1 << 6)){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 3091; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_YOU_ARE_NOT_ALLOWED_TO_REMOVE_THIS_SECTION; return MONEY32_UNDEFINED; } diff --git a/src/ride/track.h b/src/ride/track.h index 622aca98b3..219fd974d5 100644 --- a/src/ride/track.h +++ b/src/ride/track.h @@ -484,6 +484,10 @@ enum { TRACK_ELEM_LEFT_LARGE_HALF_LOOP_DOWN }; +enum { + TRACK_ELEMENT_LOCATION_IS_UNDERGROUND = 2, +}; + typedef struct { rct_xy_element last; rct_xy_element current; diff --git a/src/windows/editor_object_selection.c b/src/windows/editor_object_selection.c index 054b3918a2..c0bea4d0ee 100644 --- a/src/windows/editor_object_selection.c +++ b/src/windows/editor_object_selection.c @@ -986,7 +986,7 @@ static void window_editor_object_selection_scroll_mousedown(rct_window *w, int s STR_UNABLE_TO_SELECT_THIS_OBJECT : STR_UNABLE_TO_DE_SELECT_THIS_OBJECT; - window_error_open(error_title, RCT2_GLOBAL(0x141E9AC, uint16)); + window_error_open(error_title, RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16)); return; } @@ -1664,7 +1664,7 @@ void reset_required_object_flags(){ * object. */ void set_object_selection_error(uint8 is_master_object, rct_string_id error_msg){ - RCT2_GLOBAL(0x141E9AC, rct_string_id) = error_msg; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = error_msg; if (!is_master_object){ reset_selected_object_count_and_size(); } diff --git a/src/windows/editor_objective_options.c b/src/windows/editor_objective_options.c index 480ba6b44d..fd67695778 100644 --- a/src/windows/editor_objective_options.c +++ b/src/windows/editor_objective_options.c @@ -888,7 +888,7 @@ static void window_editor_objective_options_main_paint(rct_window *w, rct_drawpi // Objective value x = w->x + w->widgets[WIDX_OBJECTIVE].left + 1; y = w->y + w->widgets[WIDX_OBJECTIVE].top; - stringId = STR_OBJECTIVE_2_NONE + RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_TYPE, uint8); + stringId = STR_OBJECTIVE_DROPDOWN_NONE + RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_TYPE, uint8); gfx_draw_string_left(dpi, 1193, &stringId, 0, x, y); if (w->widgets[WIDX_OBJECTIVE_ARG_1].type != WWT_EMPTY) { diff --git a/src/windows/ride_construction.c b/src/windows/ride_construction.c index ff66d9fbef..78f7379f6f 100644 --- a/src/windows/ride_construction.c +++ b/src/windows/ride_construction.c @@ -1579,7 +1579,7 @@ static void window_ride_construction_construct(rct_window *w) sound_play_panned(SOUND_PLACE_ITEM, 0x8001, x, y, z); - if (RCT2_GLOBAL(0x00F441D4, uint8) & 2) { + if (RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND) { viewport_set_visibility(1); } @@ -2382,7 +2382,7 @@ money32 sub_6CA162(int rideIndex, int trackType, int trackDirection, int edxRS16 RCT2_GLOBAL(0x00F440C9, uint16) = z; RCT2_GLOBAL(0x00F440CB, uint8) = trackDirection; _currentTrackSelectionFlags |= 2; - viewport_set_visibility(RCT2_GLOBAL(0x00F441D4, uint8) & 2 ? 1 : 3); + viewport_set_visibility(RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND ? 1 : 3); if (_currentTrackSlopeEnd != 0) viewport_set_visibility(2); @@ -2401,7 +2401,7 @@ money32 sub_6CA162(int rideIndex, int trackType, int trackDirection, int edxRS16 RCT2_GLOBAL(0x00F440C9, uint16) = z; RCT2_GLOBAL(0x00F440CB, uint8) = trackDirection; _currentTrackSelectionFlags |= 2; - viewport_set_visibility(RCT2_GLOBAL(0x00F441D4, uint8) & 2 ? 1 : 3); + viewport_set_visibility(RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND ? 1 : 3); if (_currentTrackSlopeEnd != 0) viewport_set_visibility(2); diff --git a/src/windows/top_toolbar.c b/src/windows/top_toolbar.c index ea22803649..43a9e9ba8c 100644 --- a/src/windows/top_toolbar.c +++ b/src/windows/top_toolbar.c @@ -1471,7 +1471,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w ebx |= GAME_COMMAND_FLAG_APPLY; } - RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = 1161; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = STR_CANT_POSITION_THIS_HERE; int cost = game_do_command(cur_grid_x, ebx, cur_grid_y, parameter_2, GAME_COMMAND_PLACE_SCENERY, RCT2_GLOBAL(RCT2_ADDRESS_SCENERY_ROTATION, uint8) | (parameter_3 & 0xFFFF0000), RCT2_GLOBAL(RCT2_ADDRESS_SCENERY_Z_COORDINATE, sint16)); @@ -1485,8 +1485,8 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w break; } - if (RCT2_GLOBAL(0x00141E9AC, rct_string_id) == 827 || - RCT2_GLOBAL(0x00141E9AC, rct_string_id) == 1032){ + if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == STR_NOT_ENOUGH_CASH_REQUIRES || + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == STR_CAN_ONLY_BUILD_THIS_ON_WATER){ break; } @@ -1509,7 +1509,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w ebx &= 0xFF00; ebx |= 0x81; - RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = 1161; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = STR_CANT_POSITION_THIS_HERE; int cost = game_do_command(grid_x, ebx, grid_y, parameter_2, GAME_COMMAND_PLACE_PATH, parameter_3, 0); @@ -1546,8 +1546,8 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w return; } - if (RCT2_GLOBAL(0x00141E9AC, rct_string_id) == 827 || - RCT2_GLOBAL(0x00141E9AC, rct_string_id) == 1032){ + if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == STR_NOT_ENOUGH_CASH_REQUIRES || + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == STR_CAN_ONLY_BUILD_THIS_ON_WATER){ break; } @@ -1569,7 +1569,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w for (; bl != 0; bl--){ RCT2_GLOBAL(0x009A8C29, uint8) |= 1; - RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = 1161; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = STR_CANT_POSITION_THIS_HERE; int ebx = (parameter_1 & 0xFF00) | 1; @@ -1584,8 +1584,8 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w return; } - if (RCT2_GLOBAL(0x00141E9AC, rct_string_id) == 827 || - RCT2_GLOBAL(0x00141E9AC, rct_string_id) == 1032){ + if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == STR_NOT_ENOUGH_CASH_REQUIRES || + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == STR_CAN_ONLY_BUILD_THIS_ON_WATER){ break; } @@ -1598,7 +1598,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w case 4: { // Banners - RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = 1161; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = STR_CANT_POSITION_THIS_HERE; // The return value will be banner id but the input is colour (param 3) int banner_id = parameter_3; @@ -2110,9 +2110,11 @@ money32 try_place_ghost_scenery(rct_xy16 map_tile, uint32 parameter_1, uint32 pa RCT2_GLOBAL(RCT2_ADDRESS_GHOST_SCENERY_Z, uint8) = mapElement->base_height; RCT2_GLOBAL(RCT2_ADDRESS_SCENERY_MAP_ELEMENT_TYPE, uint8) = mapElement->type; if (RCT2_GLOBAL(0x00F64F14, uint8) & (1 << 1)){ + //Set underground on viewport_set_visibility(4); } else{ + //Set underground off viewport_set_visibility(5); } @@ -2189,9 +2191,11 @@ money32 try_place_ghost_scenery(rct_xy16 map_tile, uint32 parameter_1, uint32 pa RCT2_GLOBAL(RCT2_ADDRESS_GHOST_SCENERY_Z, uint8) = mapElement->base_height; if (RCT2_GLOBAL(0x00F64F14, uint8) & (1 << 1)){ + //Set underground on viewport_set_visibility(4); } else{ + //Set underground off viewport_set_visibility(5); } diff --git a/src/world/footpath.c b/src/world/footpath.c index eab90654f9..8f8b762e9c 100644 --- a/src/world/footpath.c +++ b/src/world/footpath.c @@ -167,8 +167,8 @@ static money32 footpath_element_insert(int type, int x, int y, int z, int slope, if (!gCheatsDisableClearanceChecks && !map_can_construct_with_clear_at(x, y, z, zHigh, (void*)0x006A6733, bl)) return MONEY32_UNDEFINED; - RCT2_GLOBAL(0x00F3EFA4, uint8) = RCT2_GLOBAL(0x00F1AD60, uint8); - if (!gCheatsDisableClearanceChecks && (RCT2_GLOBAL(0x00F1AD60, uint8) & 4)) { + RCT2_GLOBAL(0x00F3EFA4, uint8) = RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8); + if (!gCheatsDisableClearanceChecks && (RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & ELEMENT_IS_UNDERWATER)) { RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CANT_BUILD_THIS_UNDERWATER; return MONEY32_UNDEFINED; } diff --git a/src/world/map.c b/src/world/map.c index 1665ecc167..75bb3795b2 100644 --- a/src/world/map.c +++ b/src/world/map.c @@ -2380,7 +2380,7 @@ void game_command_place_scenery(int* eax, int* ebx, int* ecx, int* edx, int* esi RCT2_GLOBAL(0x00F64F24, uint16) = y; RCT2_GLOBAL(0x00F64F1E, uint32) = (uint32)(ebx - 1); //0x006E0D6E uses [F64F1E+4] to read ebx value if(gCheatsDisableClearanceChecks || map_can_construct_with_clear_at(x, y, zLow, zHigh, (void*)0x006E0D6E, bl)){ - RCT2_GLOBAL(0x00F64F14, uint8) = RCT2_GLOBAL(0x00F1AD60, uint8) & 0x3; + RCT2_GLOBAL(0x00F64F14, uint8) = RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & 0x3; if(*ebx & GAME_COMMAND_FLAG_APPLY){ int flags = (bl & 0xf); rct_map_element* new_map_element = map_element_insert(x / 32, y / 32, zLow, flags); @@ -2484,7 +2484,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi, } if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 2214; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED; *ebx = MONEY32_UNDEFINED; return; } @@ -2536,14 +2536,14 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi, water_height *= 16; if (position.z < water_height){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1180; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CANT_BUILD_THIS_UNDERWATER; *ebx = MONEY32_UNDEFINED; return; } } if (position.z / 8 < map_element->base_height){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1033; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; *ebx = MONEY32_UNDEFINED; return; } @@ -2553,7 +2553,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi, bp += 2; if (map_element->properties.surface.slope & (1 << new_edge)){ if (position.z / 8 < bp){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1033; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; *ebx = MONEY32_UNDEFINED; return; } @@ -2566,7 +2566,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi, if (map_element->properties.surface.slope & (1 << new_edge)){ bp += 2; if (position.z / 8 < bp){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1033; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; *ebx = MONEY32_UNDEFINED; return; } @@ -2579,7 +2579,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi, new_edge = (edge + 3) & 3; if (map_element->properties.surface.slope & (1 << new_edge)){ if (position.z / 8 < bp){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1033; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; *ebx = MONEY32_UNDEFINED; return; } @@ -2592,7 +2592,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi, if (map_element->properties.surface.slope & (1 << new_edge)){ bp += 2; if (position.z / 8 < bp){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1033; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND; *ebx = MONEY32_UNDEFINED; return; } @@ -2632,7 +2632,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi, RCT2_GLOBAL(0x00141F722, uint8) = position.z / 8; if (bp & 0xC0){ if (fence->wall.flags & WALL_SCENERY_FLAG3){ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 3133; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = 3133; *ebx = MONEY32_UNDEFINED; return; } @@ -2846,8 +2846,8 @@ void game_command_place_large_scenery(int* eax, int* ebx, int* ecx, int* edx, in RCT2_GLOBAL(0x00F43894, sint16) = y2; RCT2_GLOBAL(0x00F43896, uint32) = (uint32)(ebx - 3); // this is how ebx flags var is passed to 0x006B8D88 if(gCheatsDisableClearanceChecks || map_can_construct_with_clear_at(x2, y2, zLow, zHigh, (void*)0x006B8D88, bl)){ - if(!(RCT2_GLOBAL(0x00F1AD60, uint8) & 4) && !(RCT2_GLOBAL(0x00F1AD60, uint8) & 2)){ - int b = RCT2_GLOBAL(0x00F1AD60, uint8) & 0x3; + if(!(RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & ELEMENT_IS_UNDERWATER) && !(RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & 2)){ + int b = RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & 0x3; if (!gCheatsDisableClearanceChecks) { if (RCT2_GLOBAL(0x00F64F14, uint8) && !(RCT2_GLOBAL(0x00F64F14, uint8) & b)){ RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_CANT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_GROUND; @@ -3121,7 +3121,7 @@ int sub_68B044() if (RCT2_GLOBAL(0x00140E9A4, rct_map_element*) <= RCT2_ADDRESS(RCT2_ADDRESS_MAP_ELEMENTS_END, rct_map_element)) return 1; else{ - RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 894; + RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = 894; return 0; } } @@ -3189,7 +3189,7 @@ int map_can_construct_with_clear_at(int x, int y, int zLow, int zHigh, void *cle { //return (RCT2_CALLPROC_X(0x0068B932, x, bl, y, (zHigh << 8) | zLow, 0, 0, (int)clearFunc) & 0x100) == 0; RCT2_GLOBAL(0x00F1AD40, void*) = clearFunc; - RCT2_GLOBAL(0x00F1AD60, uint8) = 1; + RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) = 1; if (x >= RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE_UNITS, sint16) || y >= RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE_UNITS, sint16) || x < 32 || y < 32) { RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_OFF_EDGE_OF_MAP; return false; @@ -3206,7 +3206,7 @@ int map_can_construct_with_clear_at(int x, int y, int zLow, int zHigh, void *cle } int water_height = ((map_element->properties.surface.terrain & MAP_ELEMENT_WATER_HEIGHT_MASK) * 2); if (water_height && water_height > zLow && map_element->base_height < zHigh) { - RCT2_GLOBAL(0x00F1AD60, uint8) |= 4; + RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) |= 4; if (water_height < zHigh) { goto loc_68BAE6; } @@ -3224,8 +3224,8 @@ int map_can_construct_with_clear_at(int x, int y, int zLow, int zHigh, void *cle if ((bl & 0xF0) != 0xF0) { if (map_element->base_height >= zHigh) { // loc_68BA81 - RCT2_GLOBAL(0x00F1AD60, uint8) |= 2; - RCT2_GLOBAL(0x00F1AD60, uint8) &= 0xFE; + RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) |= 2; + RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) &= 0xFE; } else { int al = map_element->base_height; int ah = al; diff --git a/src/world/map.h b/src/world/map.h index 3f71c14227..5f26f71ed7 100644 --- a/src/world/map.h +++ b/src/world/map.h @@ -203,6 +203,10 @@ enum { ENTRANCE_TYPE_PARK_ENTRANCE }; +enum { + ELEMENT_IS_UNDERWATER = 4, +}; + #define MAP_ELEMENT_QUADRANT_MASK 0xC0 #define MAP_ELEMENT_TYPE_MASK 0x3C #define MAP_ELEMENT_DIRECTION_MASK 0x03