mirror of https://github.com/OpenRCT2/OpenRCT2.git
Integrate viewport ref counters
This commit is contained in:
parent
d0950af9df
commit
b5211a41de
|
@ -39,6 +39,9 @@
|
||||||
|
|
||||||
//#define DEBUG_SHOW_DIRTY_BOX
|
//#define DEBUG_SHOW_DIRTY_BOX
|
||||||
uint32 gCurrentViewportFlags = 0;
|
uint32 gCurrentViewportFlags = 0;
|
||||||
|
uint8 gShowGridLinesRefCount;
|
||||||
|
uint8 gShowLandRightsRefCount;
|
||||||
|
uint8 gShowConstuctionRightsRefCount;
|
||||||
|
|
||||||
rct_viewport g_viewport_list[MAX_VIEWPORT_COUNT];
|
rct_viewport g_viewport_list[MAX_VIEWPORT_COUNT];
|
||||||
rct_viewport *g_music_tracking_viewport;
|
rct_viewport *g_music_tracking_viewport;
|
||||||
|
@ -857,7 +860,7 @@ rct_xy16 viewport_coord_to_map_coord(int x, int y, int z)
|
||||||
*/
|
*/
|
||||||
void show_gridlines()
|
void show_gridlines()
|
||||||
{
|
{
|
||||||
if (RCT2_GLOBAL(0x009E32B0, uint8) == 0) {
|
if (gShowGridLinesRefCount == 0) {
|
||||||
rct_window *mainWindow = window_get_main();
|
rct_window *mainWindow = window_get_main();
|
||||||
if (mainWindow != NULL) {
|
if (mainWindow != NULL) {
|
||||||
if (!(mainWindow->viewport->flags & VIEWPORT_FLAG_GRIDLINES)) {
|
if (!(mainWindow->viewport->flags & VIEWPORT_FLAG_GRIDLINES)) {
|
||||||
|
@ -866,7 +869,7 @@ void show_gridlines()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RCT2_GLOBAL(0x009E32B0, uint8)++;
|
gShowGridLinesRefCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -875,8 +878,8 @@ void show_gridlines()
|
||||||
*/
|
*/
|
||||||
void hide_gridlines()
|
void hide_gridlines()
|
||||||
{
|
{
|
||||||
RCT2_GLOBAL(0x009E32B0, uint8)--;
|
gShowGridLinesRefCount--;
|
||||||
if (RCT2_GLOBAL(0x009E32B0, uint8) == 0) {
|
if (gShowGridLinesRefCount == 0) {
|
||||||
rct_window *mainWindow = window_get_main();
|
rct_window *mainWindow = window_get_main();
|
||||||
if (mainWindow != NULL) {
|
if (mainWindow != NULL) {
|
||||||
if (!gConfigGeneral.always_show_gridlines) {
|
if (!gConfigGeneral.always_show_gridlines) {
|
||||||
|
@ -893,7 +896,7 @@ void hide_gridlines()
|
||||||
*/
|
*/
|
||||||
void show_land_rights()
|
void show_land_rights()
|
||||||
{
|
{
|
||||||
if (RCT2_GLOBAL(0x009E32B2, uint8) == 0) {
|
if (gShowLandRightsRefCount == 0) {
|
||||||
rct_window *mainWindow = window_get_main();
|
rct_window *mainWindow = window_get_main();
|
||||||
if (mainWindow != NULL) {
|
if (mainWindow != NULL) {
|
||||||
if (!(mainWindow->viewport->flags & VIEWPORT_FLAG_LAND_OWNERSHIP)) {
|
if (!(mainWindow->viewport->flags & VIEWPORT_FLAG_LAND_OWNERSHIP)) {
|
||||||
|
@ -902,7 +905,7 @@ void show_land_rights()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RCT2_GLOBAL(0x009E32B2, uint8)++;
|
gShowLandRightsRefCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -911,8 +914,8 @@ void show_land_rights()
|
||||||
*/
|
*/
|
||||||
void hide_land_rights()
|
void hide_land_rights()
|
||||||
{
|
{
|
||||||
RCT2_GLOBAL(0x009E32B2, uint8)--;
|
gShowLandRightsRefCount--;
|
||||||
if (RCT2_GLOBAL(0x009E32B2, uint8) == 0) {
|
if (gShowLandRightsRefCount == 0) {
|
||||||
rct_window *mainWindow = window_get_main();
|
rct_window *mainWindow = window_get_main();
|
||||||
if (mainWindow != NULL) {
|
if (mainWindow != NULL) {
|
||||||
if (mainWindow->viewport->flags & VIEWPORT_FLAG_LAND_OWNERSHIP) {
|
if (mainWindow->viewport->flags & VIEWPORT_FLAG_LAND_OWNERSHIP) {
|
||||||
|
@ -929,7 +932,7 @@ void hide_land_rights()
|
||||||
*/
|
*/
|
||||||
void show_construction_rights()
|
void show_construction_rights()
|
||||||
{
|
{
|
||||||
if (RCT2_GLOBAL(0x009E32B3, uint8) == 0) {
|
if (gShowConstuctionRightsRefCount == 0) {
|
||||||
rct_window *mainWindow = window_get_main();
|
rct_window *mainWindow = window_get_main();
|
||||||
if (mainWindow != NULL) {
|
if (mainWindow != NULL) {
|
||||||
if (!(mainWindow->viewport->flags & VIEWPORT_FLAG_CONSTRUCTION_RIGHTS)) {
|
if (!(mainWindow->viewport->flags & VIEWPORT_FLAG_CONSTRUCTION_RIGHTS)) {
|
||||||
|
@ -938,7 +941,7 @@ void show_construction_rights()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RCT2_GLOBAL(0x009E32B3, uint8)++;
|
gShowConstuctionRightsRefCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -947,8 +950,8 @@ void show_construction_rights()
|
||||||
*/
|
*/
|
||||||
void hide_construction_rights()
|
void hide_construction_rights()
|
||||||
{
|
{
|
||||||
RCT2_GLOBAL(0x009E32B3, uint8)--;
|
gShowConstuctionRightsRefCount--;
|
||||||
if (RCT2_GLOBAL(0x009E32B3, uint8) == 0) {
|
if (gShowConstuctionRightsRefCount == 0) {
|
||||||
rct_window *mainWindow = window_get_main();
|
rct_window *mainWindow = window_get_main();
|
||||||
if (mainWindow != NULL) {
|
if (mainWindow != NULL) {
|
||||||
if (mainWindow->viewport->flags & VIEWPORT_FLAG_CONSTRUCTION_RIGHTS) {
|
if (mainWindow->viewport->flags & VIEWPORT_FLAG_CONSTRUCTION_RIGHTS) {
|
||||||
|
|
|
@ -90,6 +90,14 @@ typedef struct viewport_interaction_info {
|
||||||
|
|
||||||
extern uint32 gCurrentViewportFlags;
|
extern uint32 gCurrentViewportFlags;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A reference counter for whether something is forcing the grid lines to show. When the counter
|
||||||
|
* is decremented to 0, the grid lines are hidden.
|
||||||
|
*/
|
||||||
|
extern uint8 gShowGridLinesRefCount;
|
||||||
|
extern uint8 gShowLandRightsRefCount;
|
||||||
|
extern uint8 gShowConstuctionRightsRefCount;
|
||||||
|
|
||||||
// rct2: 0x014234BC
|
// rct2: 0x014234BC
|
||||||
extern rct_viewport g_viewport_list[MAX_VIEWPORT_COUNT];
|
extern rct_viewport g_viewport_list[MAX_VIEWPORT_COUNT];
|
||||||
extern rct_viewport *g_music_tracking_viewport;
|
extern rct_viewport *g_music_tracking_viewport;
|
||||||
|
|
|
@ -77,9 +77,9 @@ void window_editor_main_open()
|
||||||
window->viewport->flags |= 0x0400;
|
window->viewport->flags |= 0x0400;
|
||||||
|
|
||||||
gCurrentRotation = 0;
|
gCurrentRotation = 0;
|
||||||
RCT2_GLOBAL(0x009E32B0, uint8) = 0;
|
gShowGridLinesRefCount = 0;
|
||||||
RCT2_GLOBAL(0x009E32B2, uint8) = 0;
|
gShowLandRightsRefCount = 0;
|
||||||
RCT2_GLOBAL(0x009E32B3, uint8) = 0;
|
gShowConstuctionRightsRefCount = 0;
|
||||||
gFootpathSelectedType = 0;
|
gFootpathSelectedType = 0;
|
||||||
|
|
||||||
window_top_toolbar_open();
|
window_top_toolbar_open();
|
||||||
|
|
|
@ -80,9 +80,9 @@ void window_main_open()
|
||||||
viewport_create(window, window->x, window->y, window->width, window->height, 0,0x0FFF,0x0FFF, 0, 0x1, -1);
|
viewport_create(window, window->x, window->y, window->width, window->height, 0,0x0FFF,0x0FFF, 0, 0x1, -1);
|
||||||
window->viewport->flags |= VIEWPORT_FLAG_SOUND_ON;
|
window->viewport->flags |= VIEWPORT_FLAG_SOUND_ON;
|
||||||
gCurrentRotation = 0;
|
gCurrentRotation = 0;
|
||||||
RCT2_GLOBAL(0x009E32B0, uint8) = 0;
|
gShowGridLinesRefCount = 0;
|
||||||
RCT2_GLOBAL(0x009E32B2, uint8) = 0;
|
gShowLandRightsRefCount = 0;
|
||||||
RCT2_GLOBAL(0x009E32B3, uint8) = 0;
|
gShowConstuctionRightsRefCount = 0;
|
||||||
gFootpathSelectedType = 0;
|
gFootpathSelectedType = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue