From cfd83eca1dd59e378aa00d4afe0db12300eb55e7 Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Wed, 31 Dec 2014 18:13:58 +0000 Subject: [PATCH 1/2] Fix rain gloom. Mistake in viewport_paint caused no change in gloom --- src/interface/viewport.c | 2 +- src/world/climate.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/interface/viewport.c b/src/interface/viewport.c index 20d19debc7..c48e796b27 100644 --- a/src/interface/viewport.c +++ b/src/interface/viewport.c @@ -1055,7 +1055,7 @@ void viewport_paint(rct_viewport* viewport, rct_drawpixelinfo* dpi, int left, in //RCT2_CALLPROC_EBPSAFE(0x688485); //Big function call int weather_colour = RCT2_ADDRESS(0x98195C, uint32)[RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_WEATHER_GLOOM, uint8)]; - if ((weather_colour != -1) && (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & 0x4000) && (RCT2_GLOBAL(0x9DEA6F, uint8) & 1)){ + if ((weather_colour != -1) && (!(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & 0x4000)) && (!(RCT2_GLOBAL(0x9DEA6F, uint8) & 1))){ dpi2 = RCT2_GLOBAL(0x140E9A8, rct_drawpixelinfo*); gfx_fill_rect(dpi2, dpi2->x, dpi2->y, dpi2->width + dpi2->x - 1, dpi2->height + dpi2->y - 1, weather_colour); } diff --git a/src/world/climate.c b/src/world/climate.c index 54e3a295a1..b6a66723ee 100644 --- a/src/world/climate.c +++ b/src/world/climate.c @@ -199,6 +199,9 @@ void climate_force_weather(uint8 weather){ RCT2_GLOBAL(RCT2_ADDRESS_CLIMATE_UPDATE_TIMER, sint16) = 1920; climate_update(); + + // Incase of change in gloom level force a complete redraw + gfx_invalidate_screen(); } /** From 8b86ded534b76c37c535845b8faeaff07cd66e67 Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Wed, 31 Dec 2014 18:42:03 +0000 Subject: [PATCH 2/2] Fix gloom at increased zoom levels. --- src/drawing/rect.c | 2 +- src/interface/viewport.c | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/drawing/rect.c b/src/drawing/rect.c index c23f881b56..ac4558dcf1 100644 --- a/src/drawing/rect.c +++ b/src/drawing/rect.c @@ -114,7 +114,7 @@ void gfx_fill_rect(rct_drawpixelinfo *dpi, int left, int top, int right, int bot // Fill the rectangle with the colours from the colour table for (int i = 0; i < height>>dpi->zoom_level; ++i) { uint8* next_dest_pointer = dest_pointer + (dpi->width >> dpi->zoom_level) + dpi->pitch; - for (int j = 0; j < width; ++j) { + for (int j = 0; j < width>>dpi->zoom_level; ++j) { *dest_pointer = g1_element.offset[*dest_pointer]; dest_pointer++; } diff --git a/src/interface/viewport.c b/src/interface/viewport.c index c48e796b27..039f314461 100644 --- a/src/interface/viewport.c +++ b/src/interface/viewport.c @@ -1056,7 +1056,6 @@ void viewport_paint(rct_viewport* viewport, rct_drawpixelinfo* dpi, int left, in int weather_colour = RCT2_ADDRESS(0x98195C, uint32)[RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_WEATHER_GLOOM, uint8)]; if ((weather_colour != -1) && (!(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & 0x4000)) && (!(RCT2_GLOBAL(0x9DEA6F, uint8) & 1))){ - dpi2 = RCT2_GLOBAL(0x140E9A8, rct_drawpixelinfo*); gfx_fill_rect(dpi2, dpi2->x, dpi2->y, dpi2->width + dpi2->x - 1, dpi2->height + dpi2->y - 1, weather_colour); } RCT2_CALLPROC_EBPSAFE(0x6860C3); //string related