Clean-up Fade.cpp

This commit is contained in:
Clownacy 2019-11-15 20:24:53 +00:00
parent b3843d596c
commit 80e217edf3
2 changed files with 79 additions and 129 deletions

View file

@ -23,18 +23,18 @@ struct FADE
static FADE gFade; static FADE gFade;
static unsigned long mask_color; static unsigned long mask_color;
void InitFade() void InitFade(void)
{ {
memset(&gFade, 0, sizeof(FADE)); memset(&gFade, 0, sizeof(FADE));
mask_color = GetCortBoxColor(RGB(0, 0, 0x20)); mask_color = GetCortBoxColor(RGB(0, 0, 0x20));
} }
void SetFadeMask() void SetFadeMask(void)
{ {
gFade.bMask = TRUE; gFade.bMask = TRUE;
} }
void ClearFade() void ClearFade(void)
{ {
gFade.bMask = FALSE; gFade.bMask = FALSE;
gFade.mode = 0; gFade.mode = 0;
@ -42,14 +42,17 @@ void ClearFade()
void StartFadeOut(signed char dir) void StartFadeOut(signed char dir)
{ {
int x;
int y;
gFade.mode = 2; gFade.mode = 2;
gFade.count = 0; gFade.count = 0;
gFade.dir = dir; gFade.dir = dir;
gFade.bMask = FALSE; gFade.bMask = FALSE;
for (int y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ {
for (int x = 0; x < FADE_WIDTH; x++) for (x = 0; x < FADE_WIDTH; ++x)
{ {
gFade.ani_no[y][x] = 0; gFade.ani_no[y][x] = 0;
gFade.flag[y][x] = FALSE; gFade.flag[y][x] = FALSE;
@ -67,19 +70,19 @@ void StartFadeIn(signed char dir)
gFade.dir = dir; gFade.dir = dir;
gFade.bMask = TRUE; gFade.bMask = TRUE;
for (y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ {
for (x = 0; x < FADE_WIDTH; x++) for (x = 0; x < FADE_WIDTH; ++x)
{ {
gFade.ani_no[y][x] = 15; gFade.ani_no[y][x] = 15;
gFade.flag[y][x] = FALSE; gFade.flag[y][x] = FALSE;
} }
} }
x = x; // x is assigned to itself. Thanks, Pixel. (Most likely, the original code wasn't written the exact same way) x = x; // This probably doesn't match the original source code, but it produces the same assembly
} }
void ProcFade() void ProcFade(void)
{ {
int x; int x;
int y; int y;
@ -90,93 +93,65 @@ void ProcFade()
switch (gFade.dir) switch (gFade.dir)
{ {
case 0: case 0:
for (y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ for (x = 0; x < FADE_WIDTH; ++x)
for (x = 0; x < FADE_WIDTH; x++)
{
if ((FADE_WIDTH - 1) - gFade.count == x) if ((FADE_WIDTH - 1) - gFade.count == x)
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
}
break; break;
case 2: case 2:
for (y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ for (x = 0; x < FADE_WIDTH; ++x)
for (x = 0; x < FADE_WIDTH; x++)
{
if (gFade.count == x) if (gFade.count == x)
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
}
break; break;
case 1: case 1:
for (y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ for (x = 0; x < FADE_WIDTH; ++x)
for (x = 0; x < FADE_WIDTH; x++)
{
if ((FADE_HEIGHT - 1) - gFade.count == y) if ((FADE_HEIGHT - 1) - gFade.count == y)
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
}
break; break;
case 3: case 3:
for (y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ for (x = 0; x < FADE_WIDTH; ++x)
for (x = 0; x < FADE_WIDTH; x++)
{
if (gFade.count == y) if (gFade.count == y)
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
}
break; break;
case 4: case 4:
for (y = 0; y < (FADE_HEIGHT / 2); y++) for (y = 0; y < (FADE_HEIGHT / 2); ++y)
{ for (x = 0; x < (FADE_WIDTH / 2); ++x)
for (x = 0; x < (FADE_WIDTH / 2); x++)
{
if (gFade.count == x + y) if (gFade.count == x + y)
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
} for (y = 0; y < (FADE_HEIGHT / 2); ++y)
for (y = 0; y < (FADE_HEIGHT / 2); y++) for (x = (FADE_WIDTH / 2); x < FADE_WIDTH; ++x)
{
for (x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
{
if (gFade.count == y + ((FADE_WIDTH - 1) - x)) if (gFade.count == y + ((FADE_WIDTH - 1) - x))
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
} for (y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; ++y)
for (y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++) for (x = 0; x < (FADE_WIDTH / 2); ++x)
{
for (x = 0; x < (FADE_WIDTH / 2); x++)
{
if (gFade.count == x + ((FADE_HEIGHT - 1) - y)) if (gFade.count == x + ((FADE_HEIGHT - 1) - y))
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
} for (y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; ++y)
for (y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++) for (x = (FADE_WIDTH / 2); x < FADE_WIDTH; ++x)
{
for (x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
{
if (gFade.count == ((FADE_WIDTH - 1) - x) + ((FADE_HEIGHT - 1) - y)) if (gFade.count == ((FADE_WIDTH - 1) - x) + ((FADE_HEIGHT - 1) - y))
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
}
break; break;
} }
for (y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ for (x = 0; x < FADE_WIDTH; ++x)
for (x = 0; x < FADE_WIDTH; x++)
{
if (gFade.ani_no[y][x] < 15 && gFade.flag[y][x]) if (gFade.ani_no[y][x] < 15 && gFade.flag[y][x])
++gFade.ani_no[y][x]; ++gFade.ani_no[y][x];
}
}
if (++gFade.count > ((FADE_WIDTH > FADE_HEIGHT) ? FADE_WIDTH : FADE_HEIGHT) + 16) if (++gFade.count > ((FADE_WIDTH > FADE_HEIGHT) ? FADE_WIDTH : FADE_HEIGHT) + 16)
{ {
@ -192,93 +167,65 @@ void ProcFade()
switch (gFade.dir) switch (gFade.dir)
{ {
case 0: case 0:
for (y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ for (x = 0; x < FADE_WIDTH; ++x)
for (x = 0; x < FADE_WIDTH; x++)
{
if ((FADE_WIDTH - 1) - gFade.count == x) if ((FADE_WIDTH - 1) - gFade.count == x)
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
}
break; break;
case 2: case 2:
for (y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ for (x = 0; x < FADE_WIDTH; ++x)
for (x = 0; x < FADE_WIDTH; x++)
{
if (gFade.count == x) if (gFade.count == x)
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
}
break; break;
case 1: case 1:
for (y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ for (x = 0; x < FADE_WIDTH; ++x)
for (x = 0; x < FADE_WIDTH; x++)
{
if ((FADE_HEIGHT - 1) - gFade.count == y) if ((FADE_HEIGHT - 1) - gFade.count == y)
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
}
break; break;
case 3: case 3:
for (y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ for (x = 0; x < FADE_WIDTH; ++x)
for (x = 0; x < FADE_WIDTH; x++)
{
if (gFade.count == y) if (gFade.count == y)
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
}
break; break;
case 4: case 4:
for (y = 0; y < (FADE_HEIGHT / 2); y++) for (y = 0; y < (FADE_HEIGHT / 2); ++y)
{ for (x = 0; x < (FADE_WIDTH / 2); ++x)
for (x = 0; x < (FADE_WIDTH / 2); x++)
{
if ((FADE_WIDTH - 1) - gFade.count == x + y) if ((FADE_WIDTH - 1) - gFade.count == x + y)
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
} for (y = 0; y < (FADE_HEIGHT / 2); ++y)
for (y = 0; y < (FADE_HEIGHT / 2); y++) for (x = (FADE_WIDTH / 2); x < FADE_WIDTH; ++x)
{
for (x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
{
if ((FADE_WIDTH - 1) - gFade.count == y + ((FADE_WIDTH - 1) - x)) if ((FADE_WIDTH - 1) - gFade.count == y + ((FADE_WIDTH - 1) - x))
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
} for (y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; ++y)
for (y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++) for (x = 0; x < (FADE_WIDTH / 2); ++x)
{
for (x = 0; x < (FADE_WIDTH / 2); x++)
{
if ((FADE_WIDTH - 1) - gFade.count == x + ((FADE_HEIGHT - 1) - y)) if ((FADE_WIDTH - 1) - gFade.count == x + ((FADE_HEIGHT - 1) - y))
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
} for (y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; ++y)
for (y = (FADE_HEIGHT / 2); y < FADE_HEIGHT; y++) for (x = (FADE_WIDTH / 2); x < FADE_WIDTH; ++x)
{
for (x = (FADE_WIDTH / 2); x < FADE_WIDTH; x++)
{
if ((FADE_WIDTH - 1) - gFade.count == ((FADE_WIDTH - 1) - x) + ((FADE_HEIGHT - 1) - y)) if ((FADE_WIDTH - 1) - gFade.count == ((FADE_WIDTH - 1) - x) + ((FADE_HEIGHT - 1) - y))
gFade.flag[y][x] = TRUE; gFade.flag[y][x] = TRUE;
}
}
break; break;
} }
for (y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ for (x = 0; x < FADE_WIDTH; ++x)
for (x = 0; x < FADE_WIDTH; x++)
{
if (gFade.ani_no[y][x] > 0 && gFade.flag[y][x]) if (gFade.ani_no[y][x] > 0 && gFade.flag[y][x])
--gFade.ani_no[y][x]; --gFade.ani_no[y][x];
}
}
if (++gFade.count > ((FADE_WIDTH > FADE_HEIGHT) ? FADE_WIDTH : FADE_HEIGHT) + 16) if (++gFade.count > ((FADE_WIDTH > FADE_HEIGHT) ? FADE_WIDTH : FADE_HEIGHT) + 16)
gFade.mode = 0; gFade.mode = 0;
@ -287,8 +234,11 @@ void ProcFade()
} }
} }
void PutFade() void PutFade(void)
{ {
int x;
int y;
RECT rect; RECT rect;
rect.top = 0; rect.top = 0;
rect.bottom = 16; rect.bottom = 16;
@ -302,18 +252,18 @@ void PutFade()
if (gFade.mode == 0) if (gFade.mode == 0)
return; return;
for (int y = 0; y < FADE_HEIGHT; y++) for (y = 0; y < FADE_HEIGHT; ++y)
{ {
for (int x = 0; x < FADE_WIDTH; x++) for (x = 0; x < FADE_WIDTH; ++x)
{ {
rect.left = 16 * gFade.ani_no[y][x]; rect.left = gFade.ani_no[y][x] * 16;
rect.right = rect.left + 16; rect.right = rect.left + 16;
PutBitmap3(&grcGame, 16 * x, 16 * y, &rect, SURFACE_ID_FADE); PutBitmap3(&grcGame, x * 16, y * 16, &rect, SURFACE_ID_FADE);
} }
} }
} }
BOOL GetFadeActive() BOOL GetFadeActive(void)
{ {
if (gFade.mode == 0) if (gFade.mode == 0)
return FALSE; return FALSE;

View file

@ -2,11 +2,11 @@
#include "WindowsWrapper.h" #include "WindowsWrapper.h"
void InitFade(); void InitFade(void);
void SetFadeMask(); void SetFadeMask(void);
void ClearFade(); void ClearFade(void);
void StartFadeOut(signed char dir); void StartFadeOut(signed char dir);
void StartFadeIn(signed char dir); void StartFadeIn(signed char dir);
void ProcFade(); void ProcFade(void);
void PutFade(); void PutFade(void);
BOOL GetFadeActive(); BOOL GetFadeActive(void);