diff --git a/src/interface/console.c b/src/interface/console.c index 4c6529ef03..029a44ad9e 100644 --- a/src/interface/console.c +++ b/src/interface/console.c @@ -14,6 +14,7 @@ #include "../input.h" #include "../network/twitch.h" #include "../object.h" +#include "../world/banner.h" #include "../world/scenery.h" #include "../management/research.h" #include "console.h" @@ -840,6 +841,12 @@ static int cc_reset_user_strings(const utf8 **argv, int argc) return 0; } +static int cc_fix_banner_count(const utf8 **argv, int argc) +{ + fix_banner_count(); + return 0; +} + static int cc_open(const utf8 **argv, int argc) { if (argc > 0) { bool title = (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_TITLE_DEMO) != 0; @@ -930,7 +937,8 @@ console_command console_command_table[] = { "load_object " }, { "object_count", cc_object_count, "Shows the number of objects of each type in the scenario.", "object_count" }, { "twitch", cc_twitch, "Twitch API" }, - { "reset_user_strings", cc_reset_user_strings, "Resets all user-defined strings, to fix incorrectly occurring 'Chosen name in use already' errors.", "reset_user_strings" } + { "reset_user_strings", cc_reset_user_strings, "Resets all user-defined strings, to fix incorrectly occurring 'Chosen name in use already' errors.", "reset_user_strings" }, + { "fix_banner_count", cc_fix_banner_count, "Fixes incorrectly appearing 'Too many banners' error by marking every banner entry without a map element as null..", "fix_banner_count" } }; static int cc_windows(const utf8 **argv, int argc) { diff --git a/src/world/banner.c b/src/world/banner.c index 61a9a61d63..64b1bbeaeb 100644 --- a/src/world/banner.c +++ b/src/world/banner.c @@ -163,3 +163,12 @@ int banner_get_closest_ride_index(int x, int y, int z) return rideIndex; } + +void fix_banner_count() +{ + for (int banner_index = 0; banner_index < MAX_BANNERS; banner_index++){ + rct_map_element *map_element = banner_get_map_element(banner_index); + if(map_element==NULL) + gBanners[banner_index].type = BANNER_NULL; + } +} diff --git a/src/world/banner.h b/src/world/banner.h index e38176d029..131fc1d9c4 100644 --- a/src/world/banner.h +++ b/src/world/banner.h @@ -49,5 +49,6 @@ void banner_init(); int create_new_banner(uint8 flags); rct_map_element *banner_get_map_element(int bannerIndex); int banner_get_closest_ride_index(int x, int y, int z); +void fix_banner_count(); #endif