+ // ------------------------------------------------------------------------
+ // determine next fading area for changed viewport definitions
+ // ------------------------------------------------------------------------
+
+ // start with current playfield area (default fading area)
+ FADE_SX = REAL_SX;
+ FADE_SY = REAL_SY;
+ FADE_SXSIZE = FULL_SXSIZE;
+ FADE_SYSIZE = FULL_SYSIZE;
+
+ // add new playfield area if position or size has changed
+ if (new_real_sx != REAL_SX || new_real_sy != REAL_SY ||
+ new_full_sxsize != FULL_SXSIZE || new_full_sysize != FULL_SYSIZE)
+ {
+ JoinRectangles(&FADE_SX, &FADE_SY, &FADE_SXSIZE, &FADE_SYSIZE,
+ new_real_sx, new_real_sy, new_full_sxsize,new_full_sysize);
+ }
+
+ // add current and new door 1 area if position or size has changed
+ if (new_dx != DX || new_dy != DY ||
+ new_dxsize != DXSIZE || new_dysize != DYSIZE)
+ {
+ JoinRectangles(&FADE_SX, &FADE_SY, &FADE_SXSIZE, &FADE_SYSIZE,
+ DX, DY, DXSIZE, DYSIZE);
+ JoinRectangles(&FADE_SX, &FADE_SY, &FADE_SXSIZE, &FADE_SYSIZE,
+ new_dx, new_dy, new_dxsize, new_dysize);
+ }
+
+ // add current and new door 2 area if position or size has changed
+ if (new_dx != VX || new_dy != VY ||
+ new_dxsize != VXSIZE || new_dysize != VYSIZE)
+ {
+ JoinRectangles(&FADE_SX, &FADE_SY, &FADE_SXSIZE, &FADE_SYSIZE,
+ VX, VY, VXSIZE, VYSIZE);
+ JoinRectangles(&FADE_SX, &FADE_SY, &FADE_SXSIZE, &FADE_SYSIZE,
+ new_vx, new_vy, new_vxsize, new_vysize);
+ }
+
+ // ------------------------------------------------------------------------
+ // handle changed tile size
+ // ------------------------------------------------------------------------
+