1
0
mirror of https://github.com/jummy0/sb2-decomp synced 2025-03-15 04:24:48 +01:00
This commit is contained in:
jummy 2024-06-18 20:25:14 -05:00
parent 916f251353
commit 31eea28ac9

690
decor.cpp
View File

@ -340,7 +340,6 @@ void CDecor::PlayPrepare(BOOL bTest)
m_scrollAdd.x = 0;
m_scrollAdd.y = 0;
m_blupiPosHelico.x = -1;
m_blupiMotorSound = 0;
m_nbLinkCaisse = 0;
m_bHelicopterFlying = FALSE;
m_bHelicopterStationary = FALSE;
@ -471,15 +470,16 @@ BOOL CDecor::BlitzActif(int celx, int cely)
return num % 2 == 0 && num < 50;
}
/*
void CDecor::Build(RECT rect)
{
POINT posDecor = DecorNextAction();
POINT pos;
pos.x = posDecor.x * 2 / 3;
pos.y = posDecor.y * 2 / 3;
pos.x = posDecor.x * 2 / 3 % LXIMAGE;
pos.y = posDecor.y * 2;
int num = 1;
POINT tinyPoint;
tinyPoint.x = m_drawBounds.left;
tinyPoint.x = 0;
RECT clipRect;
rect.left = pos.x % LXIMAGE;
rect.right = LXIMAGE;
@ -489,20 +489,20 @@ void CDecor::Build(RECT rect)
for (int i = 0; i < 3; i++)
{
tinyPoint.y = m_drawBounds.top;
rect.top = pos.y % LYIMAGE;
rect.bottom = LYIMAGE;
tinyPoint.y = 0;
for (int j = 0; j < 2; j++)
{
m_pPixmap->DrawPart(3, tinyPoint, rect);
tinyPoint.y += (rect.bottom - rect.top) - num;
rect.top = 0;
rect.top = pos.y / 3 % LYIMAGE;
rect.left = pos.x;
rect.right = LXIMAGE;
rect.bottom = LYIMAGE;
m_pPixmap->DrawPart(-1, 3, tinyPoint, rect, 1, 0);
tinyPoint.y += LYIMAGE - rect.top;
}
tinyPoint.x += (rect.right - rect.left) - num;
rect.left = 0;
rect.right = LXIMAGE;
if (tinyPoint.x > m_drawBounds.right)
tinyPoint.x += LXIMAGE - pos.x;
pos.x = 0;
}
if (tinyPoint.x > LXIMAGE)
{
break;
}
@ -513,12 +513,672 @@ void CDecor::Build(RECT rect)
{
if (i >= 0 && i < 100 && j >= 0 && j < 100)
{
int num2 = m_bigDecor[i, j].icon;
int num2 = m_bigDecor[i][j].icon;
}
}
}
}
}
*/
// i have gone completely insane
void CDecor::Build(RECT rect)
{
short *pShort1;
short short2;
int mobType;
POINT dest;
RECT rect_00;
POINT pos;
RECT clip;
RECT clip_00;
RECT *pRV4;
int int5;
int int6;
int int7;
int *pint8;
int uint9;
BOOL BV10;
int int11;
int int12;
int uint13;
int int14;
int uint15;
int uint16;
int int17;
int int18;
int int19;
int int20;
MoveObject *pMob;
int int22;
LONG LV23;
LONG LV24;
int int25;
int L_48;
int L_40;
int L_3c;
int *L_38;
int L_34;
RECT rect_3;
RECT rect_2;
RECT rect_1;
rect_2 = m_pPixmap->GetClipping();
rect_1 = rect_2;
clip.top = rect.top;
clip.left = rect.left;
clip.right = rect.right;
clip.bottom = rect.bottom;
m_pPixmap->SetClipping(clip);
pRV4 = &rect;
DecorNextAction((POINT *)pRV4);
rect_3.right = 0;
rect_3.left = 2;
rect_2.left = pRV4->left;
rect_2.top = pRV4->top;
int20 = rect_2.top * 2;
int12 = rect_2.left * 2 / 3 % LXIMAGE;
do {
int17 = 0;
rect.left = 2;
int22 = int20 / 3 % LYIMAGE;
do {
dest.y = int17;
dest.x = rect_3.right;
rect_00.top = int22;
rect_00.left = int12;
rect_00.right = LXIMAGE;
rect_00.bottom = LYIMAGE;
m_pPixmap->DrawPart(-1, 3, dest, rect_00, 1, 0);
int11 = LYIMAGE - int22;
int22 = 0;
int17 += int11;
rect.left--;
} while (rect.left != 0);
int22 = LXIMAGE - int12;
int12 = 0;
rect_3.right += int22;
rect_3.left--;
} while (rect_3.left != 0);
int22 = rect_2.left % DIMOBJX;
rect_3.right = -DIMOBJX - int22;
int12 = (int)(rect_2.left + (uint13 & 0x3f)) >> 6;
int20 = int12 - 1;
rect.left = 0;
if (int20 < int12 + 13) {
// int3 = -(_posDecor.y % 64 + 64 - 2);
uint13 = rect_2.top >> 0x1f;
int5 = -(rect_2.top % DIMOBJY + DIMOBJY - 2);
int6 = (int)(rect_2.top + (uint13 & 0x3f)) >> 6;
rect.left = (int12 + 13) - int20;
int17 = int6 + -1;
int20 = int20 * 100 + 10008;
int11 = int5;
int19 = int17;
do {
for (; int19 < int6 + 9; int19 = int19 + 1) {
if (10007 < int20 && int20 < 20008 && -1 < int19 && int19 < 100) {
int7 = 9;
int14 = (int)*(short *)((int)(m_decor + -1) + (int19 + int20) * 2 + 184);
if (int14 != -1) {
if (int14 == 203) {
int7 = 1;
int14 = table_marine[m_time / 3 % 11];
}
int18 = int11;
if ((65 < int14) && (int14 < 69)) {
int18 = int11 + -13;
}
if ((86 < int14) && (int14 < 90)) {
int18 += -2;
}
pos.y = int18;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(int7, int14, pos);
}
}
int11 = int11 + 64;
}
rect_3.right += 64;
int20 += 100;
rect.left--;
int11 = int5;
int19 = int17;
} while (rect.left != 0);
}
int22 = -int22;
int20 = int12 + 12;
if (int12 < int20) {
uint13 = rect_2.top >> 0x1f;
int5 = -(((rect_2.top ^ uint13) - uint13 & 0x3f ^ uint13) - uint13);
int6 = (int)(rect_2.top + (uint13 & 0x3f)) >> 6;
rect.left = int20 - int12;
int17 = int12 * 100 + 8;
int11 = int5;
int19 = int6;
rect_3.right = int22;
do {
for (; int19 < int6 + 9; int19++) {
if ((((7 < int17) && (int17 < 10008)) && (-1 < int19)) &&
(((int19 < 100 &&
(short2 = *(short *)((int)(m_decor + -1) + (int19 + int17) * 2 + 184),
short2 != -1)) && ((int14 = (int)short2, int14 == 0x180 || (int14 == 0x181)))))) {
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(CHOBJECT, int14, pos);
}
int11 = int11 + 0x40;
}
rect_3.right += 0x40;
int17 += 100;
rect.left += -1;
int11 = int5;
int19 = int6;
} while (rect.left != 0);
}
if (m_phase == WM_PHASE_BUILD) {
L_38 = &m_D43C;
rect.left = 3;
pint8 = &m_D42C;
do {
int17 = 2;
if (0 < rect.left) {
int17 = rect.left + 10;
}
int11 = 4;
if (*L_38 == 2) {
int11 = 0;
}
int5 = pint8[-1] - rect_2.left;
int19 = *pint8 - rect_2.top;
pos.y = int19;
pos.x = int5;
m_pPixmap->QuickIcon(int17, int11, pos);
if (m_buildOfficialMissions != 0) {
pos.y = int19 + -0x14;
pos.x = (int)pint8 + int5 + (-54294 - (int)this);
m_pPixmap->QuickIcon(4, rect.left + 0x78, pos);
}
rect.left += -1;
L_38 = L_38 + -1;
pint8 = pint8 + -2;
} while (-1 < rect.left);
}
if (m_bMulti && m_phase != WM_PHASE_BUILD) {
rect.left = 0;
L_40 = 0;
pint8 = &m_D488;
L_38 = &m_D45C;
do {
int17 = pint8[-4];
if ((int17 != -1) && (((int17 < 0x114 || (0x11c < int17)) && (*pint8 != 4)))) {
int17 = L_38[-1] - rect_2.left;
int11 = *L_38 - rect_2.top;
if (*pint8 == 1) {
uint13 = m_time / 2;
uint15 = (int)uint13 >> 0x1f;
pos.y = int11 + -2;
pos.x = int17;
m_pPixmap->QuickIcon(CHELEMENT,
(&DAT_00435568)[((uint13 ^ uint15) - uint15 & 0xf ^ uint15) - uint15],
pos);
pos.y = int11;
pos.x = int17;
m_pPixmap->QuickIcon(CHELEMENT, (&DAT_004356a8)[(m_time / 2) % 5],
pos);
}
if (*pint8 == 2) {
pos.y = int11;
pos.x = int17;
m_pPixmap->QuickIcon(CHELEMENT, (&table_magicloop)[(m_time / 2) % 5],
pos);
}
if (*pint8 == 3) {
int19 = 0;
do {
pos.y = int11 + -0x22;
pos.x = int17 + -0x22;
m_pPixmap->QuickIcon(CHEXPLO,
(rect.left + int19 + m_time) % 6 + 0x30, pos);
int19 += 1;
} while (int19 < 3);
}
int19 = pint8[4];
int5 = (int)*(short *)(m_pNetwork->m_players[0].name + L_40 + -2);
if ((int19 == 2) && (0 < int5)) {
int19 = int5 + 10;
}
pos.y = int11;
pos.x = int17;
m_pPixmap->QuickIcon(int19, pint8[-4], pos);
pos.y = int11 + -0x14;
pos.x = int17 + 10;
m_pPixmap->QuickIcon(4, int5 + 0x78, pos);
}
rect.left += 1;
pint8 = pint8 + 1;
L_40 += 0x20;
L_38 = L_38 + 2;
} while (L_40 < 0x80);
}
if ((m_phase == WM_PHASE_BUILD) || (m_blupiSec = 0, m_blupiFront != 0))
goto LAB_00404781;
int11 = (m_blupiPos).x - rect_2.left;
int17 = (m_blupiPos).y - rect_2.top;
if (m_blupiShield == 0) {
if (m_blupiPower != 0) {
m_blupiSec = 2;
if ((m_blupiTimeShield < 26) &&
(uint13 = m_time >> 0x1f,
1 < (int)(((m_time ^ uint13) - uint13 & 3 ^ uint13) - uint13))) goto LAB_004052d0;
pos.y = int17;
pos.x = int11;
m_pPixmap->QuickIcon(CHELEMENT, (&table_magicloop)[(m_time / 2) % 5], pos
);
int25 = m_blupiIcon;
goto LAB_00404771;
}
if (m_blupiCloud) {
m_blupiSec = 3;
if ((25 < m_blupiTimeShield) ||
(uint13 = m_time >> 0x1f,
(int)(((m_time ^ uint13) - uint13 & 3 ^ uint13) - uint13) < 2)) {
int19 = 0;
do {
pos.y = int17 + -0x22;
pos.x = int11 + -0x22;
m_pPixmap->QuickIcon(CHEXPLO, (int19 + m_time) % 6 + 0x30, pos);
int19 += 1;
} while (int19 < 3);
}
LAB_00404768:
int25 = m_blupiIcon;
goto LAB_00404771;
}
if (m_blupiHide == 0) goto LAB_00404768;
m_blupiSec = 4;
if ((m_blupiTimeShield < 26) &&
(uint13 = m_time >> 0x1f,
1 < (int)(((m_time ^ uint13) - uint13 & 3 ^ uint13) - uint13))) goto LAB_004052d0;
m_pPixmap->DrawIcon(0xe, 1, 0xf5, (POINT)0x0, 0, 1);
int25 = m_blupiIcon;
BV10 = 0;
int5 = 1;
LV24 = 0;
LV23 = 0;
int19 = GetBlupiChannel_1();
pos.y = LV24;
pos.x = LV23;
m_pPixmap->DrawIcon(0xe, int19, (int)int25, pos, int5, BV10);
m_pPixmap->DrawIcon(0xe, 1, 0xed, (POINT)0x0, 0, 1);
int25 = (Icon4)0x0;
int19 = 0xe;
}
else {
m_blupiSec = 1;
if ((m_blupiTimeShield < 0x1a) &&
(uint13 = m_time >> 0x1f,
1 < (int)(((m_time ^ uint13) - uint13 & 3 ^ uint13) - uint13))) {
LAB_004052d0:
int25 = m_blupiIcon;
}
else {
uint13 = m_time / 2;
uint15 = (int)uint13 >> 0x1f;
pos.y = int17 + -2;
pos.x = int11;
m_pPixmap->QuickIcon(CHELEMENT,
(&DAT_00435568)[((uint13 ^ uint15) - uint15 & 0xf ^ uint15) - uint15],
pos);
pos.y = int17;
pos.x = int11;
m_pPixmap->QuickIcon(CHELEMENT, (&DAT_004356a8)[(m_time / 2) % 5], pos);
int25 = m_blupiIcon;
}
LAB_00404771:
int19 = GetBlupiChannel_1();
}
pos.y = int17;
pos.x = int11;
m_pPixmap->QuickIcon(int19, (int)int25, pos);
LAB_00404781:
pMob = m_moveObject + 199;
rect.left = MAXMOVEOBJECT;
do {
mobType = pMob->type;
if (((((((mobType != TYPE_empty) &&
(int17 = (pMob->posCurrent).x, (int)(rect_2.left - 64U) <= int17)) &&
(int11 = (pMob->posCurrent).y, (int)(rect_2.top - 64U) <= int11)) &&
((int17 <= (int)(rect_2.left + LXIMAGE) && (int11 <= (int)(rect_2.top + LYIMAGE)))))
&& (((short)mobType < 8 || (11 < (short)mobType)))) &&
(((short)mobType < 90 || (95 < (short)mobType)))) &&
((((short)mobType < 98 || (100 < (short)mobType)) &&
((((mobType != TYPE_TENTACULE && (mobType != TYPE_ASCENSEUR)) && (mobType != TYPE_ASCENSUERs)) &&
(mobType != TYPE_ASCENSEURsi)))))) {
int17 -= rect_2.left;
int11 -= rect_2.top;
if (((mobType == TYPE_BULLDOZER) || (mobType == TYPE_BLUPIHELICO)) || (mobType == TYPE_BLUPITANK)) {
int17 += 2;
int11 += 6;
}
if (mobType == TYPE_CREATURE) {
int11 += 6;
}
pos.y = int11;
pos.x = int17;
m_pPixmap->QuickIcon((int)pMob->channel, (int)pMob->icon, pos);
if (((m_bDrawSecret != 0) || (m_phase != WM_PHASE_PLAY)) &&
((pMob->type == TYPE_CAISSE &&
(((short2 = pMob->icon, short2 != obj_woodencase0 && (short2 != obj_woodencase1)) &&
(short2 != obj_woodencase2)))))) {
pos.y = int11;
pos.x = int17;
m_pPixmap->QuickIcon(CHOBJECT, 0xd6, pos);
}
}
pMob = pMob + -1;
rect.left += -1;
} while (rect.left != 0);
if (int12 < int20) {
uint13 = rect_2.top >> 0x1f;
int5 = -(((rect_2.top ^ uint13) - uint13 & 0x3f ^ uint13) - uint13);
int6 = (int)(rect_2.top + (uint13 & 0x3f)) >> 6;
rect.left = int12 * 7;
L_34 = int20 - int12;
int17 = int12 * 100 + 8;
int11 = int5;
int19 = int6;
rect_3.right = int22;
do {
for (; int19 < int6 + 9; int19 = int19 + 1) {
if (((7 < int17) && (int17 < 10008)) &&
((-1 < int19 &&
((int19 < 100 &&
(short2 = *(short *)((int)(m_decor + -1) + (int19 + int17) * 2 + 0xb8),
short2 != -1)))))) {
int14 = (int)short2;
if (((106 < int14) && (int14 < 110)) || (int7 = int11, int14 == 0x9d)) {
int7 = int11 + -7;
}
if (int14 == 211) {
uint13 = m_time / 2 + rect.left;
uint15 = (int)uint13 >> 0x1f;
int14 = table_ressort[((uint13 ^ uint15) - uint15 & 7 ^ uint15) - uint15];
}
if (((int14 == 214) && (m_bDrawSecret == 0)) && (m_phase == WM_PHASE_PLAY)) {
int14 = -1;
}
if (int14 == 364) {
int7 += -2;
}
if ((((int14 != obj_lava) && (int14 != 0x5b)) &&
((int14 != obj_watersurface && ((int14 != obj_lightning && (int14 != obj_crusher)))
))) && ((int14 != obj_crusher6 &&
((((((int14 != 0x175 && (int14 != 0x194)) && (int14 != 0x19a)) &&
((int14 != 0x17a && (int14 != 0x180)))) && (int14 != 0x181)) &&
((int14 < obj_wind_left || (0x89 < int14)))))))) {
pos.y = int7;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(CHOBJECT, int14, pos);
}
}
int11 = int11 + 64;
}
rect_3.right += 64;
int17 += 100;
rect.left += 7;
L_34 += -1;
int11 = int5;
int19 = int6;
} while (L_34 != 0);
}
pMob = m_moveObject;
rect.left = 200;
do {
mobType = pMob->type;
if ((((mobType == TYPE_ASCENSEUR) || (mobType == TYPE_ASCENSUERs)) || (mobType == TYPE_ASCENSEURsi))
&& (((int17 = (pMob->posCurrent).x, (int)(rect_2.left - 64U) <= int17 &&
(int11 = (pMob->posCurrent).y, (int)(rect_2.top - 0x40U) <= int11)) &&
((int17 <= (int)(rect_2.left + LXIMAGE) && (int11 <= (int)(rect_2.top + LYIMAGE))))
))) {
pos.y = int11 - rect_2.top;
pos.x = int17 - rect_2.left;
m_pPixmap->QuickIcon((int)pMob->channel, (int)pMob->icon, pos);
}
uint13 = rect_2.top;
if ((m_phase == WM_PHASE_BUILD) &&
((((mobType = pMob->type, mobType == TYPE_ASCENSEUR || (mobType == TYPE_ASCENSUERs)) ||
(((mobType == TYPE_ASCENSEURsi ||
(((mobType == TYPE_BOMBEMOVE || (mobType == TYPE_BULLDOZER)) || (mobType == TYPE_POISSON)))) ||
(((mobType == TYPE_OISEAU || (mobType == TYPE_GUEPE)) || (mobType == TYPE_CREATURE)))))) ||
((mobType == TYPE_BLUPIHELICO || (mobType == TYPE_BLUPITANK)))))) {
int11 = (pMob->posEnd).x;
int17 = rect_2.left - 64;
if ((int17 <= int11) &&
(((int19 = (pMob->posEnd).y, (int)(rect_2.top - 0x40U) <= int19 &&
(int11 <= (int)(rect_2.left + LXIMAGE))) && (int19 <= (int)(rect_2.top + LYIMAGE)))
)) {
pos.y = int19 - rect_2.top;
pos.x = int11 - rect_2.left;
m_pPixmap->QuickIcon(1, 0x1f, pos);
}
int11 = (pMob->posStart).x;
if (((int17 <= int11) && (int17 = (pMob->posStart).y, (int)(uint13 - 0x40) <= int17))
&& ((int11 <= (int)(rect_2.left + LXIMAGE) && (int17 <= (int)(uint13 + LYIMAGE))))) {
pos.y = int17 - uint13;
pos.x = int11 - rect_2.left;
m_pPixmap->QuickIcon(1, 0x1e, pos);
}
}
pMob = pMob + 1;
rect.left += -1;
} while (rect.left != 0);
if (int12 < int20) {
uint15 = rect_2.top >> 0x1f;
uint13 = rect_2.top ^ uint15;
int17 = (int)(rect_2.top + (uint15 & 0x3f)) >> 6;
L_48 = int12 * 0xd;
L_3c = int12 * 100 + 8;
rect_3.right = int22;
do {
if (int17 < int17 + 9) {
rect.left = int17 * 7;
L_38 = (int *)int17;
rect_3.bottom = -((uint13 - uint15 & 0x3f ^ uint15) - uint15);
do {
if (((7 < L_3c) && (L_3c < 10008)) && ((-1 < rect.left && (rect.left < 700)))) {
pShort1 = (short *)((int)(m_decor + -1) + ((int)L_38 + L_3c) * 2 + 0xb8);
if (*pShort1 != -1) {
int22 = (int)*pShort1;
if (int22 == obj_lava) {
uint9 = m_time / 3 + L_48 + rect.left;
uint16 = (int)uint9 >> 0x1f;
int22 = (&table_decor_lave)[((uint9 ^ uint16) - uint16 & 7 ^ uint16) - uint16];
pos.y = rect_3.bottom;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(CHOBJECT, int22, pos);
}
if (int22 == 0x175) {
int22 = m_time;
if (m_blupiFocus == 0) {
uint9 = int22 / 2 + L_48 + rect.left;
uint16 = (int)uint9 >> 0x1f;
int22 = (&table_decor_piege2)[((uint9 ^ uint16) - uint16 & 3 ^ uint16) - uint16];
}
else {
uint9 = ((int)(int22 + (int22 >> 0x1f & 3U)) >> 2) + L_48 + rect.left;
uint16 = (int)uint9 >> 0x1f;
int22 = (&table_decor_piege1)
[((uint9 ^ uint16) - uint16 & 0xf ^ uint16) - uint16];
}
pos.y = rect_3.bottom;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if ((int22 == 404) || (int11 = rect_3.bottom, int22 == 410)) {
int22 = *(int *)(&table_decor_goutte +
((m_time / 2 + L_48 + rect.left) % 0x30) * 4);
int11 = rect_3.bottom + -9;
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
if ((int22 < 404) || (407 < int22)) {
*pShort1 = 410;
}
else {
*pShort1 = 404;
}
}
if (int22 == obj_crusher) {
int22 = table_decor_ecraseur[(m_time / 3) % 10];
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if (int22 == 0x17a) {
int22 = table_decor_scie[(m_time + L_48 + rect.left) % 6];
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if (int22 == obj_crusher6) {
int22 = m_time + (m_time >> 0x1f & 3U);
int22 = table_decor_temp[(int)(CONCAT44(int22 >> 0x1f, int22 >> 2) % 0x14)];
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if (int22 == obj_watersurface) {
uint9 = m_time / 3 + L_48 + rect.left;
uint16 = (int)uint9 >> 0x1f;
int22 = (&table_decor_eau1)[((uint9 ^ uint16) - uint16 & 3 ^ uint16) - uint16];
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if (int22 == 0x5b) {
uint9 = m_time / 3 + L_48 + rect.left;
uint16 = (int)uint9 >> 0x1f;
int22 = (&table_decor_eau2)[((uint9 ^ uint16) - uint16 & 3 ^ uint16) - uint16];
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if ((int22 == obj_lightning) &&
(BV10 = BlitzActif(this, int12, (int)L_38), BV10 != 0)) {
int22 = *(int *)(&table_decor_lightning +
((m_time + L_48 + rect.left) % 0x32) * 4);
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if (int22 == obj_wind_left) {
uint9 = m_time >> 0x1f;
int22 = (&table_decor_ventg)[((m_time ^ uint9) - uint9 & 3 ^ uint9) - uint9];
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if (int22 == obj_wind_right) {
uint9 = m_time >> 0x1f;
int22 = (&table_decor_ventd)[((m_time ^ uint9) - uint9 & 3 ^ uint9) - uint9];
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if (int22 == obj_wind_up) {
uint9 = m_time >> 0x1f;
int22 = (&table_decor_venth)[((m_time ^ uint9) - uint9 & 3 ^ uint9) - uint9];
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if (int22 == obj_wind_down) {
uint9 = m_time >> 0x1f;
int22 = (&table_decor_ventb)[((m_time ^ uint9) - uint9 & 3 ^ uint9) - uint9];
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if (int22 == obj_fan_left) {
int22 = (&table_decor_ventillog)[(m_time / 2) % 3];
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if (int22 == obj_fan_right) {
int22 = (&table_decor_ventillod)[(m_time / 2) % 3];
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if (int22 == obj_fan_up) {
int22 = (&table_decor_ventilloh)[(m_time / 2) % 3];
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1, int22, pos);
}
if (int22 == obj_fan_down) {
pos.y = int11;
pos.x = rect_3.right;
m_pPixmap->QuickIcon(1,
(&table_decor_ventillob)[(m_time / 2) % 3], pos);
}
}
}
rect_3.bottom += 64;
L_38 = (int *)((int)L_38 + 1);
rect.left += 7;
} while ((int)L_38 < int17 + 9);
}
rect_3.right += 64;
int12 += 1;
L_3c += 100;
L_48 += 13;
} while (int12 < int20);
}
uint13 = rect_2.left;
pMob = m_moveObject;
rect.left = 200;
do {
mobType = pMob->type;
if (((((mobType != TYPE_empty) && (int20 = (pMob->posCurrent).x, (int)(uint13 - 64) <= int20)
) && (int12 = (pMob->posCurrent).y, (int)(rect_2.top - 0x40U) <= int12)) &&
((int20 <= (int)(uint13 + LXIMAGE) && (int12 <= (int)(rect_2.top + LYIMAGE))))) &&
(((((7 < (short)mobType && ((short)mobType < 0xc)) ||
((0x59 < (short)mobType && ((short)mobType < 0x60)))) ||
((0x61 < (short)mobType && ((short)mobType < 0x65)))) || (mobType == TYPE_TENTACULE)))) {
pos.y = int12 - rect_2.top;
pos.x = int20 - uint13;
m_pPixmap->QuickIcon((int)pMob->channel, (int)pMob->icon, pos);
}
pMob = pMob + 1;
rect.left += -1;
} while (rect.left != 0);
if ((m_blupiFront != 0) && (m_phase != WM_PHASE_BUILD)) {
int22 = (m_blupiPos).y - rect_2.top;
int20 = (m_blupiPos).x - uint13;
int25 = m_blupiIcon;
int12 = GetBlupiChannel_1();
pos.y = int22;
pos.x = int20;
m_pPixmap->QuickIcon(int12, (int)int25, pos);
}
DrawInfo();
VoyageDraw();
clip_00.top = rect_1.top;
clip_00.left = rect_1.left;
clip_00.right = rect_1.right;
clip_00.bottom = rect_1.bottom;
CPixmap::SetClipping(m_pPixmap, clip_00);
int20 = m_time + 1;
m_time = int20;
if (32767 < int20) {
m_time = 0;
}
return;
}
void CDecor::DrawInfo()