1
0
mirror of https://github.com/jummy0/sb2-decomp synced 2025-03-15 04:24:48 +01:00
This commit is contained in:
HMVocaloid 2024-06-14 13:20:14 -04:00
parent 752c942b44
commit 5eb6bc0af4
5 changed files with 185 additions and 0 deletions

Binary file not shown.

175
decor.cpp
View File

@ -5557,9 +5557,184 @@ BOOL CDecor::IsGoutte(POINT pos, BOOL bAlways)
BOOL CDecor::IsScie(POINT pos)
{
pos.x += 30;
return pos.x % 64 >= 4 && pos.x % 64 <= 60 && pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 378;
}
BOOL CDecor::IsSwitch(POINT pos, POINT celSwitch)
{
pos.x += 30;
if (pos.x % 64 < 4 || pos.x % 64 > 60)
{
return FALSE;
}
if (pos.x < 0 || pos.x >= 6400 || pos.y < 0 || pos.y >= 6400)
{
return FALSE;
}
celSwitch.x = pos.x / 64;
celSwitch.y = pos.y / 64;
return m_decor[pos.x / 64, pos.y / 64]->icon == 384 || m_decor[pos.x / 64, pos.y / 64]->icon == 385;
}
BOOL CDecor::IsEcraseur(POINT pos)
{
if (m_time / 3 % 10 > 2)
{
return FALSE;
}
pos.x += 30;
return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 317;
}
BOOL CDecor::IsBlitz(POINT pos, BOOL bAlways)
{
pos.x += 30;
if (pos.x < 0 || pos.x >= 6400 || pos.y < 0 || pos.y >= 6400)
{
return FALSE;
}
POINT tinyPoint;
tinyPoint.x = pos.x / 64;
tinyPoint.y = pos.y / 64;
return m_decor[tinyPoint.x, tinyPoint.y]->icon == 305 && (bAlways || BlitzActif(tinyPoint.x, tinyPoint.y));
}
BOOL CDecor::IsRessort(POINT pos)
{
pos.x += 30;
pos.y += 60;
return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 211;
}
BOOL CDecor::IsTemp(POINT pos)
{
pos.x += 30;
pos.y += 60;
return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 324;
}
BOOL CDecor::IsBridge(POINT pos, POINT celBridge)
{
pos.x += 30;
pos.y += 60;
if (pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 364)
{
celBridge.x = pos.x / 64;
celBridge.y = pos.y / 64;
return TRUE;
}
pos.y -= 60;
if (pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 364)
{
celBridge.x = pos.x / 64;
celBridge.y = pos.y / 64;
return TRUE;
}
return FALSE;
}
int CDecor::IsDoor(POINT pos, POINT celPorte)
{
int num;
if (m_blupiDir == 1)
{
num = -60;
}
else
{
num = 60;
}
pos.x += 30;
for (int i = 0; i < 2; i++)
{
if (pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon >= 334 && m_decor[pos.x / 64, pos.y / 64]->icon <= 336)
{
celPorte.x = pos.x / 64;
celPorte.y = pos.y / 64;
return m_decor[pos.x / 64, pos.y / 64]->icon;
}
pos.x += num;
}
return -1;
}
int CDecor::IsTeleporte(POINT pos)
{
if (pos.x % 64 > 6)
{
return -1;
}
pos.x += 30;
pos.y -= 60;
if (pos.x < 0 || pos.x >= 6400 || pos.y < 0 || pos.y >= 6400)
{
return -1;
}
if (m_decor[pos.x / 64, pos.y / 64]->icon >= 330 && m_decor[pos.x / 64, pos.y / 64]->icon <= 333)
{
return m_decor[pos.x / 64, pos.y / 64]->icon;
}
return -1;
}
BOOL CDecor::SearchTeleporte(POINT pos, POINT newpos)
{
int num = IsTeleporte(pos);
if (num == -1)
{
return FALSE;
}
for (int i = 0; i < 100; i++)
{
for (int j = 0; j < 100; j++)
{
if (num == m_decor[i, j]->icon)
{
newpos.x = i * 64;
newpos.y = j * 64 + 60;
if (newpos.x < pos.x - 40 || newpos.x > pos.x + 40 || newpos.y < pos.y - 40 || newpos.y > pos.y + 40)
{
return TRUE;
}
}
}
}
return FALSE;
}
BOOL CDecor::IsNormalJump(POINT pos)
{
pos.x += 32;
pos.y -= 32;
if (m_blupiDir == 1)
{
pos.x -= 15;
}
else
{
pos.x += 15;
}
for (int i = 0; i < 2; i++)
{
int num = pos.x / 64;
int num2 = pos.y / 64;
if (num2 < 0)
{
return FALSE;
}
int icon = m_decor[num, num2]->icon;
if (!IsPassIcon(icon))
{
return FALSE;
}
pos.y -= 64;
}
return TRUE;
}
BOOL CDecor::SearchDoor(int n, POINT cel, POINT blupi)
{
for (int i = 0; i < 100; i++)

10
decor.h
View File

@ -573,6 +573,16 @@ public:
BOOL IsGoutte(POINT pos, BOOL bAlways);
BOOL IsScie(POINT pos);
BOOL IsSwitch(POINT pos, POINT celSwitch);
BOOL IsEcraseur(POINT pos);
BOOL IsBlitz(POINT pos, BOOL bAlways);
BOOL IsRessort(POINT pos);
BOOL IsTemp(POINT pos);
BOOL IsBridge(POINT pos, POINT celBridge);
int IsDoor(POINT pos, POINT celPorte);
int IsTeleporte(POINT pos);
BOOL SearchTeleporte(POINT pos, POINT newpos);
BOOL IsNormalJump(POINT pos);
BOOL IsSurfWater(POINT pos);
void BlupiStep();
BOOL DecorDetect(RECT rect);
BOOL DecorDetect(RECT rect, BOOL bCaisse);