mirror of
https://github.com/jummy0/sb2-decomp
synced 2025-03-14 20:23:30 +01:00
can you believe it? gaming
This commit is contained in:
parent
ce33104782
commit
ae16984db4
@ -123,36 +123,36 @@ int CDecor::IsWorld(POINT pos)
|
||||
{
|
||||
pos.x += 30;
|
||||
pos.y += 30;
|
||||
if (pos.x < 0 || pos.x >= 6400 || pos.y < 0 || pos.y >= 6400)
|
||||
if (pos.x < 0 || pos.x >= DIMOBJX * MAXCELX || pos.y < 0 || pos.y >= DIMOBJY * MAXCELY)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
int icon = m_decor[pos.x / DIMOBJX][pos.y / DIMOBJY].icon;
|
||||
if (icon >= 158 && icon <= 165)
|
||||
if (icon >= Object::World_1 && icon <= Object::World_8)
|
||||
{
|
||||
return icon - 158 + 1;
|
||||
return icon - Object::World_1 + 1;
|
||||
}
|
||||
if (icon >= 166 && icon <= 173)
|
||||
if (icon >= Object::WorldDone_1 && icon <= Object::WorldDone_8)
|
||||
{
|
||||
return icon - 166 + 1;
|
||||
return icon - Object::WorldDone_1 + 1;
|
||||
}
|
||||
if (icon == 309 || icon == 310)
|
||||
if (icon == Object::World_9 || icon == Object::WorldDone_9)
|
||||
{
|
||||
return 9;
|
||||
}
|
||||
if (icon >= 411 && icon <= 415)
|
||||
if (icon >= Object::World_10 && icon <= Object::World_14)
|
||||
{
|
||||
return icon - 411 + 10;
|
||||
return icon - Object::World_10 + 10;
|
||||
}
|
||||
if (icon >= 416 && icon <= 420)
|
||||
if (icon >= Object::WorldDone_10 && icon <= Object::WorldDone_14)
|
||||
{
|
||||
return icon - 416 + 10;
|
||||
return icon - Object::WorldDone_10 + 10;
|
||||
}
|
||||
if (icon >= 174 && icon <= 181)
|
||||
if (icon >= Object::Level_1 && icon <= Object::Level_8)
|
||||
{
|
||||
return icon - 174 + 1;
|
||||
return icon - Object::Level_1 + 1;
|
||||
}
|
||||
if (icon == 184)
|
||||
if (icon == Object::WorldBack)
|
||||
{
|
||||
return 199;
|
||||
}
|
||||
|
522
src/decblupi.cpp
522
src/decblupi.cpp
@ -3,7 +3,7 @@
|
||||
|
||||
#include "misc.h"
|
||||
#include "decor.h"
|
||||
#include "misc.h"
|
||||
#include "text.h" // debug
|
||||
//#include "resource.h"
|
||||
#include "dectables.h"
|
||||
|
||||
@ -36,107 +36,170 @@ void CDecor::GetBlupiInfo(BOOL* bHelico, BOOL* bJeep, BOOL* bSkate, BOOL* bNage)
|
||||
*bNage = m_blupiNage | m_blupiSurf;
|
||||
}
|
||||
|
||||
// set blupi's current graphics icon according to his state
|
||||
// from ghidra
|
||||
void CDecor::BlupiSearchIcon()
|
||||
|
||||
{
|
||||
int num = 0;
|
||||
int num2 = 2;
|
||||
int num3 = m_blupiAction;
|
||||
if (m_blupiVent && m_blupiHelico && m_blupiOver)
|
||||
int phase;
|
||||
int action = m_blupiAction;
|
||||
int icon = 2;
|
||||
|
||||
if (m_blupiVent && !m_blupiHelico && !m_blupiOver)
|
||||
{
|
||||
if (num3 == 1)
|
||||
{
|
||||
num3 = 8;
|
||||
}
|
||||
if (num3 == 2)
|
||||
{
|
||||
num3 = 14;
|
||||
}
|
||||
if (action == 0x1) action = 0x8;
|
||||
if (action == 0x2) action = 0xe;
|
||||
}
|
||||
|
||||
if (m_blupiHelico)
|
||||
{
|
||||
if (num3 == 1)
|
||||
{
|
||||
num3 = 15;
|
||||
}
|
||||
if (num3 == 2)
|
||||
{
|
||||
num3 = 16;
|
||||
}
|
||||
if (num3 == 3)
|
||||
{
|
||||
num3 = 17;
|
||||
}
|
||||
if (num3 == 10)
|
||||
{
|
||||
num3 = 15;
|
||||
}
|
||||
if (num3 == 9)
|
||||
{
|
||||
num3 = 15;
|
||||
}
|
||||
if (action == 0x1) action = 0xf;
|
||||
if (action == 0x2) action = 0x10;
|
||||
if (action == 0x3) action = 0x11;
|
||||
if (action == 0xa) action = 0xf;
|
||||
if (action == 0x9) action = 0xf;
|
||||
}
|
||||
|
||||
if (m_blupiOver)
|
||||
{
|
||||
if (num3 == 1)
|
||||
{
|
||||
num3 = 67;
|
||||
}
|
||||
if (num3 == 2)
|
||||
{
|
||||
num3 = 68;
|
||||
}
|
||||
if (num3 == 3)
|
||||
{
|
||||
num3 = 69;
|
||||
}
|
||||
if (num3 == 10)
|
||||
{
|
||||
num3 = 67;
|
||||
}
|
||||
if (num3 == 9)
|
||||
{
|
||||
num3 = 67;
|
||||
}
|
||||
if (action == 0x1) action = 0x43;
|
||||
if (action == 0x2) action = 0x44;
|
||||
if (action == 0x3) action = 0x45;
|
||||
if (action == 0xa) action = 0x43;
|
||||
if (action == 0x9) action = 0x43;
|
||||
}
|
||||
|
||||
if (m_blupiJeep)
|
||||
{
|
||||
if (num3 == 1)
|
||||
{
|
||||
num3 = 25;
|
||||
}
|
||||
if (num3 == 2)
|
||||
{
|
||||
num3 = 26;
|
||||
}
|
||||
if (num3 == 10)
|
||||
{
|
||||
num3 = 26;
|
||||
}
|
||||
if (num3 == 3)
|
||||
{
|
||||
num3 = 27;
|
||||
}
|
||||
if (action == 0x1) action = 0x19;
|
||||
if (action == 0x2) action = 0x1a;
|
||||
if (action == 0xa) action = 0x1a;
|
||||
if (action == 0x3) action = 0x1b;
|
||||
}
|
||||
|
||||
if (m_blupiTank)
|
||||
{
|
||||
if (num3 == 1)
|
||||
if (action == 0x1) action = 0x32;
|
||||
if (action == 0x2) action = 0x33;
|
||||
if (action == 0xa) action = 0x33;
|
||||
if (action == 0x3) action = 0x34;
|
||||
}
|
||||
|
||||
if (m_blupiSkate)
|
||||
{
|
||||
if (action == 0x1) action = 0x25;
|
||||
if (action == 0x2) action = 0x26;
|
||||
if (action == 0xa) action = 0x26;
|
||||
if (action == 0x3) action = 0x27;
|
||||
if (action == 0x3b) action = 0x27;
|
||||
if (action == 0x4) action = 0x28;
|
||||
if (action == 0x5) action = 0x29;
|
||||
}
|
||||
|
||||
if (m_blupiNage)
|
||||
{
|
||||
if (action == 0x1) action = 0x12;
|
||||
if (action == 0x2) action = 0x13;
|
||||
if (action == 0x3) action = 0x14;
|
||||
if ((m_blupiVitesse).x == 0)
|
||||
{
|
||||
num3 = 50;
|
||||
}
|
||||
if (num3 == 2)
|
||||
{
|
||||
num3 = 51;
|
||||
}
|
||||
if (num3 == 10)
|
||||
{
|
||||
num3 = 51;
|
||||
}
|
||||
if (num3 == 3)
|
||||
{
|
||||
num3 = 52;
|
||||
if (action == 0x12) action = 0x15;
|
||||
if (action == 0x13) action = 0x16;
|
||||
}
|
||||
}
|
||||
// more...?
|
||||
|
||||
if (m_blupiSurf)
|
||||
{
|
||||
if (action == 0x1) action = 0x15;
|
||||
if (action == 0x2) action = 0x16;
|
||||
if (action == 0x3) action = 0x17;
|
||||
}
|
||||
|
||||
if (m_blupiSuspend)
|
||||
{
|
||||
if (action == 0x1) action = 0x1f;
|
||||
if (action == 0x2) action = 0x20;
|
||||
if (action == 0x3) action = 0x21;
|
||||
if (action == 0x4) action = 0x22;
|
||||
}
|
||||
|
||||
if (m_blupiBalloon) action = 0x42;
|
||||
|
||||
if (m_blupiEcrase)
|
||||
{
|
||||
if (action == 0x1) action = 0x48;
|
||||
if (action == 0x2) action = 0x49;
|
||||
if (action == 0x3) action = 0x49;
|
||||
}
|
||||
|
||||
if ((action == 0x1) &&
|
||||
((((((phase = m_blupiPhase % 330, phase == 0x7d || (phase == 0x81)) || (phase == 0x87)) || (((phase == 0x8b || (phase == 0xd7)) || ((phase == 0xdb || ((phase == 0xe1 || (phase == 0xe5)))))))) ||
|
||||
((phase == 0xeb || (((phase == 0xef || (phase == 0xf5)) || (phase == 0xf9)))))) || (((phase == 0xff || (phase == 0x103)) || ((phase == 0x109 || (phase == 0x10d))))))))
|
||||
{
|
||||
PlaySound(SOUND_PATIENT, m_blupiPos, FALSE);
|
||||
}
|
||||
if ((action == 0x1f) && (((phase = m_blupiPhase % 328, phase == 0x76 || (phase == 0xe6)) || (phase == 0x116))))
|
||||
{
|
||||
PlaySound(SOUND_SINGE, m_blupiPos, FALSE);
|
||||
}
|
||||
if ((((action == 0x15) || (action == 0x16)) && (m_blupiPhase % 0xc == 0)) && (m_blupiSurf))
|
||||
{
|
||||
MoveObjectTiplouf(m_blupiPos);
|
||||
}
|
||||
for (int i = 0; table_blupi[i] != 0; i += table_blupi[i + 1] + 3)
|
||||
{
|
||||
if (action == table_blupi[i])
|
||||
{
|
||||
if ((table_blupi[i + 2] == 0 || m_blupiPhase <= table_blupi[i + 2]) && table_blupi[i + 1] != 0)
|
||||
{
|
||||
icon = table_blupi[i + 3 + m_blupiPhase % table_blupi[i + 1]];
|
||||
}
|
||||
else
|
||||
{
|
||||
icon = table_blupi[i + 3 + table_blupi[i + 2]];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((action == 0xb || action == 0x4b || action == 0x4c || action == 0x36 || action == 0x39) && icon < 0x10a)
|
||||
{
|
||||
m_blupiChannel = 10;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_blupiChannel = 2;
|
||||
}
|
||||
if (m_blupiDir == DIR_LEFT || (m_blupiDir == DIR_RIGHT && m_blupiInvert))
|
||||
{
|
||||
if (m_blupiChannel == 2)
|
||||
{
|
||||
if (action == 0x1f)
|
||||
{
|
||||
if (icon == 0x90)
|
||||
{
|
||||
icon = 0x9e;
|
||||
}
|
||||
if (icon == 0x8f)
|
||||
{
|
||||
icon = 0x91;
|
||||
}
|
||||
if (icon == 0x97)
|
||||
{
|
||||
icon = 0x92;
|
||||
}
|
||||
}
|
||||
if ((-1 < icon) && (icon < 0x14f))
|
||||
{
|
||||
icon = table_mirror[icon];
|
||||
}
|
||||
}
|
||||
if (true && m_blupiChannel == 10 && 0xa7 < icon && icon < 0xac)
|
||||
{
|
||||
icon = (icon + 4);
|
||||
}
|
||||
}
|
||||
m_blupiIcon = icon;
|
||||
m_blupiPhase = m_blupiPhase + 1;
|
||||
}
|
||||
|
||||
BOOL CDecor::BlupiIsGround()
|
||||
@ -310,76 +373,22 @@ BOOL CDecor::BlupiBloque(POINT pos, int dir)
|
||||
return DecorDetect(rect);
|
||||
}
|
||||
|
||||
// rewritten. wip
|
||||
/*
|
||||
void CDecor::BlupiStep()
|
||||
{
|
||||
RECT blupiRect, rect;
|
||||
BOOL flag;
|
||||
POINT point;
|
||||
int num;
|
||||
BlupiAdjust();
|
||||
POINT adjustPos = m_blupiPos + m_blupiVector;
|
||||
if (m_blupiVector.x != 0 || m_blupiVector.y != 0)
|
||||
{
|
||||
blupiRect = BlupiRect(m_blupiPos);
|
||||
rect.top = m_blupiPos.y + 11;
|
||||
rect.left = m_blupiPos.x;
|
||||
rect.right =
|
||||
rect.bottom = m_blupiPos.x + 58;
|
||||
TestPath(rect, m_blupiPos, &adjustPos);
|
||||
}
|
||||
m_blupiVent = FALSE;
|
||||
if (m_blupiTransport == -1)
|
||||
{
|
||||
if (!m_blupiJeep && !m_blupiTank && !m_blupiSkate && m_blupiFocus)
|
||||
{
|
||||
int object = m_decor[(adjustPos.x + 32) / 64][(adjustPos.y + 32) / 64].icon;
|
||||
if (object == 110) adjustPos.x -= 9; // left wind
|
||||
if (object == 114) adjustPos.x += 9; // right
|
||||
if (object == 118) adjustPos.y -= 9; // up
|
||||
if (object == 122) adjustPos.y += 9; // down
|
||||
if (object >= 110 && object <= 125)
|
||||
{
|
||||
m_blupiVent = TRUE;
|
||||
rect.top = m_blupiPos.y + 11;
|
||||
rect.left = m_blupiPos.x + 12;
|
||||
rect.right = m_blupiPos.x + 48;
|
||||
rect.bottom = m_blupiPos.y + 58;
|
||||
TestPath(rect, m_blupiPos, &adjustPos);
|
||||
}
|
||||
if (object >= 110 && object <= 125)
|
||||
{
|
||||
m_blupiVent = TRUE;
|
||||
rect.left = m_blupiPos.x + 12;
|
||||
rect.right = m_blupiPos.x + 60 - 12;
|
||||
rect.top = m_blupiPos.y + 11;
|
||||
rect.bottom = m_blupiPos.y + 60 - 2;
|
||||
TestPath(rect, m_blupiPos, &adjustPos);
|
||||
}
|
||||
}
|
||||
m_blupiVent = FALSE;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// handle Blupi's movement and current state.
|
||||
// currently derived from winphone code
|
||||
/**/
|
||||
void CDecor::BlupiStep()
|
||||
{
|
||||
BOOL bNear;
|
||||
BOOL bStopJumpH = FALSE;
|
||||
int icon;
|
||||
POINT tinyPoint;
|
||||
POINT tinyPoint2 = m_blupiPos; // = m_blupiPos ?
|
||||
BlupiAdjust();
|
||||
//m_blupiLastPos = m_blupiPos;
|
||||
POINT end = m_blupiPos;
|
||||
BOOL flag = m_blupiAir;
|
||||
int lastBlupiAction = m_blupiAction;
|
||||
BOOL flag2 = FALSE;
|
||||
BOOL flag3 = FALSE;
|
||||
BOOL bLastBlupiAir = m_blupiAir;
|
||||
BOOL bAirStart = FALSE;
|
||||
BOOL bIsOpen = FALSE;
|
||||
BOOL bIsOpen2 = FALSE;
|
||||
int num;
|
||||
end.x += m_blupiVector.x;
|
||||
end.y += m_blupiVector.y;
|
||||
RECT rect;
|
||||
@ -391,7 +400,6 @@ void CDecor::BlupiStep()
|
||||
TestPath(rect, m_blupiPos, &end);
|
||||
}
|
||||
m_blupiVent = FALSE;
|
||||
int num;
|
||||
if (m_blupiTransport == -1 && !m_blupiJeep && !m_blupiTank && !m_blupiSkate
|
||||
&& m_blupiFocus)
|
||||
{
|
||||
@ -428,11 +436,11 @@ void CDecor::BlupiStep()
|
||||
rect = BlupiRect(end);
|
||||
rect.top = end.y + DIMBLUPIY - 2;
|
||||
rect.bottom = end.y + DIMBLUPIY - 1;
|
||||
flag = !DecorDetect(rect);
|
||||
bAirStart = !DecorDetect(rect);
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = FALSE;
|
||||
bAirStart = FALSE;
|
||||
}
|
||||
rect = BlupiRect(end);
|
||||
rect.top = end.y + 10;
|
||||
@ -446,7 +454,7 @@ void CDecor::BlupiStep()
|
||||
!m_blupiSurf &&
|
||||
!m_blupiSuspend &&
|
||||
m_blupiFocus &&
|
||||
DecorDetect(rect))
|
||||
bAirStart)
|
||||
{
|
||||
if (m_blupiFocus)
|
||||
{
|
||||
@ -455,7 +463,7 @@ void CDecor::BlupiStep()
|
||||
}
|
||||
m_blupiVitesse.y = 1;
|
||||
m_blupiAir = TRUE;
|
||||
flag = TRUE;
|
||||
bLastBlupiAir = TRUE;
|
||||
}
|
||||
if (!m_blupiNage &&
|
||||
!m_blupiSurf &&
|
||||
@ -495,10 +503,10 @@ void CDecor::BlupiStep()
|
||||
m_blupiVitesse.y = (m_blupiPower ? -16 : -10);
|
||||
}
|
||||
m_blupiAir = TRUE;
|
||||
flag = TRUE;
|
||||
bLastBlupiAir = TRUE;
|
||||
PlaySound(SOUND_RESSORT, end);
|
||||
}
|
||||
if (m_keyPress & KEY_LEFT &&
|
||||
if (m_keyPress & KEY_JUMP &&
|
||||
!IsBlupiMotorVehicle() &&
|
||||
!m_blupiBalloon &&
|
||||
!m_blupiEcrase &&
|
||||
@ -521,23 +529,28 @@ void CDecor::BlupiStep()
|
||||
if (m_blupiSkate)
|
||||
{
|
||||
PlaySound(SOUND_JUMP1, end);
|
||||
m_blupiVitesse.y = (m_blupiPower ? -17 : -13);
|
||||
m_blupiVitesse.y = (m_blupiPower ? -22 : -16);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_keyPress & KEY_UP)
|
||||
{
|
||||
PlaySound(SOUND_JUMP2, end);
|
||||
m_blupiVitesse.y = (m_blupiPower ? -26 : -16);
|
||||
m_blupiVitesse.y = (m_blupiPower ? -26 : -22);
|
||||
}
|
||||
else if (m_keyPress & KEY_DOWN)
|
||||
{
|
||||
PlaySound(SOUND_JUMP0, end);
|
||||
m_blupiVitesse.y = (m_blupiPower ? -16 : -12);
|
||||
}
|
||||
else
|
||||
{
|
||||
PlaySound(SOUND_JUMP1, end);
|
||||
m_blupiVitesse.y = (m_blupiPower ? -16 : -12);
|
||||
m_blupiVitesse.y = (m_blupiPower ? -22 : -16);
|
||||
}
|
||||
}
|
||||
m_blupiAir = TRUE;
|
||||
flag = TRUE;
|
||||
bLastBlupiAir = TRUE;
|
||||
}
|
||||
}
|
||||
if (m_blupiAir)
|
||||
@ -598,7 +611,7 @@ void CDecor::BlupiStep()
|
||||
if (m_blupiVitesse.y >= 0 && icon != -1)
|
||||
{
|
||||
m_blupiTransport = icon;
|
||||
flag = FALSE;
|
||||
bAirStart = FALSE;
|
||||
PlaySound(SOUND_JUMPEND, end);
|
||||
end.y = m_moveObject[num].posCurrent.y - DIMOBJY + BLUPIOFFY;
|
||||
if (m_blupiFocus)
|
||||
@ -739,7 +752,7 @@ void CDecor::BlupiStep()
|
||||
m_blupiPhase = 0;
|
||||
m_blupiVitesse.y = -12;
|
||||
m_blupiAir = TRUE;
|
||||
bStopJumpH = TRUE;
|
||||
bLastBlupiAir = TRUE;
|
||||
}
|
||||
case ACTION_SUCETTE:
|
||||
if (m_blupiPhase == 32)
|
||||
@ -794,7 +807,8 @@ void CDecor::BlupiStep()
|
||||
m_blupiPhase = 0;
|
||||
}
|
||||
|
||||
if ( !(m_keyPress & KEY_JUMP) &&
|
||||
if (m_keyPress & KEY_DOWN &&
|
||||
!(m_keyPress & KEY_JUMP) &&
|
||||
IsBlupiStanding() &&
|
||||
m_blupiAction != ACTION_DOWN &&
|
||||
m_blupiAction != ACTION_STOPPOP &&
|
||||
@ -884,7 +898,26 @@ void CDecor::BlupiStep()
|
||||
m_blupiAction != ACTION_POP &&
|
||||
m_blupiFocus)
|
||||
{
|
||||
StopBlupi();
|
||||
if (m_keyPress & KEY_LEFT && !(m_lastKeyPress & (KEY_LEFT | KEY_RIGHT)) && !m_blupiAir && m_keyPress & (KEY_UP | KEY_DOWN))
|
||||
{
|
||||
m_blupiAction = 1;
|
||||
m_blupiPhase = 0;
|
||||
}
|
||||
if (!(m_keyPress & (KEY_LEFT | KEY_RIGHT)) && m_lastKeyPress & KEY_LEFT && m_keyPress & (KEY_UP | KEY_DOWN))
|
||||
{
|
||||
m_blupiAction = 1;
|
||||
m_blupiPhase = 0;
|
||||
}
|
||||
if (m_keyPress & KEY_RIGHT && !(m_lastKeyPress & (KEY_LEFT | KEY_RIGHT)) && !m_blupiAir && m_keyPress & (KEY_UP | KEY_DOWN))
|
||||
{
|
||||
m_blupiAction = 1;
|
||||
m_blupiPhase = 0;
|
||||
}
|
||||
if (!(m_keyPress & (KEY_LEFT | KEY_RIGHT)) && m_lastKeyPress & KEY_RIGHT && m_keyPress & (KEY_UP | KEY_DOWN))
|
||||
{
|
||||
m_blupiAction = 1;
|
||||
m_blupiPhase = 0;
|
||||
}
|
||||
}
|
||||
int num3;
|
||||
int num4;
|
||||
@ -944,9 +977,9 @@ void CDecor::BlupiStep()
|
||||
else
|
||||
{
|
||||
num3 = m_blupiPhase;
|
||||
if (m_blupiPhase > 3 || m_blupiAir)
|
||||
if (num3 > 3 || m_blupiAir)
|
||||
{
|
||||
m_blupiPhase = 3;
|
||||
num3 = 3;
|
||||
}
|
||||
num4 = table_vitesse_march[num3];
|
||||
if (m_blupiPower)
|
||||
@ -954,7 +987,7 @@ void CDecor::BlupiStep()
|
||||
num4 *= 3;
|
||||
num4 /= 2;
|
||||
}
|
||||
end.x += num4;
|
||||
end.x -= num4;
|
||||
}
|
||||
}
|
||||
if (m_blupiDir == DIR_RIGHT && m_blupiAction == ACTION_POP)
|
||||
@ -1213,7 +1246,7 @@ void CDecor::BlupiStep()
|
||||
m_blupiTimeFire == 0 &&
|
||||
m_blupiAction != ACTION_TURN &&
|
||||
m_blupiAction != ACTION_HELICOGLU &&
|
||||
flag)
|
||||
bAirStart)
|
||||
{
|
||||
if (m_blupiBullet == 0)
|
||||
{
|
||||
@ -1226,10 +1259,10 @@ void CDecor::BlupiStep()
|
||||
m_blupiFocus = FALSE;
|
||||
}
|
||||
}
|
||||
////m_blupiMotorHigh = flag4;
|
||||
////m_blupiMotorHigh = bCanUseLift;
|
||||
if (m_blupiAction != ACTION_TURN && m_blupiAction != ACTION_HELICOGLU)
|
||||
{
|
||||
if (bStopJumpH)
|
||||
if (bAirStart)
|
||||
{
|
||||
m_blupiAction = ACTION_MARCH;
|
||||
}
|
||||
@ -1294,20 +1327,20 @@ void CDecor::BlupiStep()
|
||||
|
||||
MoveObjectPollution();
|
||||
|
||||
if ( !flag2 && m_blupiTransport == -1)
|
||||
if ( m_keyPress & KEY_DOWN && !bAirStart && m_blupiTransport == -1)
|
||||
{
|
||||
|
||||
rect.left = m_blupiPos.x + 20;
|
||||
rect.right = m_blupiPos.x + 22;
|
||||
rect.top = m_blupiPos.y + 60 - 2;
|
||||
rect.bottom = m_blupiPos.y + 60;
|
||||
flag2 = !DecorDetect(rect);
|
||||
bIsOpen = !DecorDetect(rect);
|
||||
rect.left = m_blupiPos.x + 60 - 22;
|
||||
rect.right = m_blupiPos.x + 60 - 20;
|
||||
rect.top = m_blupiPos.y + 60 - 2;
|
||||
rect.bottom = m_blupiPos.y + 60;
|
||||
flag3 = !DecorDetect(rect);
|
||||
if (!flag2 && !flag3)
|
||||
bIsOpen2 = !DecorDetect(rect);
|
||||
if (!bIsOpen && !bIsOpen2)
|
||||
{
|
||||
tinyPoint.x = m_blupiPos.x;
|
||||
tinyPoint.y = m_blupiPos.y - BLUPIFLOOR;
|
||||
@ -1323,10 +1356,10 @@ void CDecor::BlupiStep()
|
||||
}
|
||||
if (m_blupiOver && (m_blupiFocus || m_blupiAction == 58))
|
||||
{
|
||||
////m_blupiMotorHigh = flag4;
|
||||
////m_blupiMotorHigh = bCanUseLift;
|
||||
if (m_blupiAction != ACTION_TURN)
|
||||
{
|
||||
if (flag)
|
||||
if (bAirStart)
|
||||
{
|
||||
m_blupiAction = ACTION_MARCH;
|
||||
}
|
||||
@ -1342,13 +1375,13 @@ void CDecor::BlupiStep()
|
||||
rect = BlupiRect(end);
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60 + OVERHEIGHT - 1;
|
||||
bool flag7 = !DecorDetect(rect);
|
||||
bIsOpen = !DecorDetect(rect);
|
||||
num = MoveAscenseurDetect(m_blupiPos, OVERHEIGHT);
|
||||
if (num != -1)
|
||||
{
|
||||
flag7 = FALSE;
|
||||
bIsOpen = FALSE;
|
||||
}
|
||||
if (m_keyPress & KEY_JUMP && !flag7)
|
||||
if (m_keyPress & (KEY_JUMP | KEY_UP) && !bIsOpen)
|
||||
{
|
||||
if (m_blupiVitesse.y == 0 && num != -1)
|
||||
{
|
||||
@ -1370,8 +1403,8 @@ void CDecor::BlupiStep()
|
||||
{
|
||||
m_blupiVitesse.y += 1;
|
||||
}
|
||||
end.y += (int)m_blupiVitesse.y;
|
||||
if (m_keyPress & KEY_LEFT && flag)
|
||||
end.y += m_blupiVitesse.y;
|
||||
if (m_keyPress & KEY_LEFT && bAirStart)
|
||||
{
|
||||
if (m_blupiVitesse.x > -12)
|
||||
{
|
||||
@ -1384,7 +1417,7 @@ void CDecor::BlupiStep()
|
||||
m_blupiVitesse.x = 0;
|
||||
}
|
||||
}
|
||||
else if (m_keyPress & KEY_RIGHT && flag)
|
||||
else if (m_keyPress & KEY_RIGHT && bAirStart)
|
||||
{
|
||||
if (m_blupiVitesse.x < 12)
|
||||
{
|
||||
@ -1412,20 +1445,20 @@ void CDecor::BlupiStep()
|
||||
|
||||
MoveObjectPollution();
|
||||
|
||||
if ( !flag && m_blupiTransport == -1)
|
||||
if ( !bAirStart && m_blupiTransport == -1)
|
||||
{
|
||||
|
||||
rect.left = m_blupiPos.x + 20;
|
||||
rect.right = m_blupiPos.x + 22;
|
||||
rect.top = m_blupiPos.y + 60 - 2;
|
||||
rect.bottom = m_blupiPos.y + 60;
|
||||
flag2 = !DecorDetect(rect);
|
||||
bIsOpen = !DecorDetect(rect);
|
||||
rect.left = m_blupiPos.x + 60 - 22;
|
||||
rect.right = m_blupiPos.x + 60 - 20;
|
||||
rect.top = m_blupiPos.y + 60 - 2;
|
||||
rect.bottom = m_blupiPos.y + 60;
|
||||
flag3 = !DecorDetect(rect);
|
||||
if (!flag2 && !flag3)
|
||||
bIsOpen2 = !DecorDetect(rect);
|
||||
if (!bIsOpen && !bIsOpen2)
|
||||
{
|
||||
tinyPoint.x = m_blupiPos.x;
|
||||
tinyPoint.y = m_blupiPos.y - BLUPIFLOOR;
|
||||
@ -1441,7 +1474,7 @@ void CDecor::BlupiStep()
|
||||
}
|
||||
if (m_blupiBalloon && m_blupiFocus)
|
||||
{
|
||||
if (m_keyPress & KEY_JUMP)
|
||||
if (m_keyPress & (KEY_JUMP | KEY_UP))
|
||||
{
|
||||
if (m_blupiVitesse.y > -5 && m_time % 6 == 0)
|
||||
{
|
||||
@ -1509,7 +1542,7 @@ void CDecor::BlupiStep()
|
||||
}
|
||||
if (m_blupiEcrase && m_blupiFocus)
|
||||
{
|
||||
if (flag)
|
||||
if (bAirStart)
|
||||
{
|
||||
if (m_blupiVitesse.y < 2)
|
||||
{
|
||||
@ -1521,7 +1554,7 @@ void CDecor::BlupiStep()
|
||||
m_blupiVitesse.y = 0;
|
||||
}
|
||||
end.y += (int)m_blupiVitesse.y;
|
||||
if (flag)
|
||||
if (bAirStart)
|
||||
{
|
||||
num3 = 7;
|
||||
}
|
||||
@ -1575,7 +1608,7 @@ void CDecor::BlupiStep()
|
||||
}
|
||||
}
|
||||
}
|
||||
if (m_blupiVitesse.x == 0 && !flag)
|
||||
if (m_blupiVitesse.x == 0 && !bAirStart)
|
||||
{
|
||||
StopBlupi();
|
||||
}
|
||||
@ -1592,11 +1625,11 @@ void CDecor::BlupiStep()
|
||||
rect.right -= 40;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60 - 1;
|
||||
bool flag8 = !DecorDetect(rect);
|
||||
bIsOpen = !DecorDetect(rect);
|
||||
rect.left += 40;
|
||||
rect.right += 40;
|
||||
bool flag9 = !DecorDetect(rect);
|
||||
if (flag)
|
||||
bIsOpen2 = !DecorDetect(rect);
|
||||
if (bAirStart)
|
||||
{
|
||||
if (m_blupiVitesse.y < 50)
|
||||
{
|
||||
@ -1622,12 +1655,12 @@ void CDecor::BlupiStep()
|
||||
if (m_blupiVitesse.y >= 0 && num != -1)
|
||||
{
|
||||
m_blupiTransport = num;
|
||||
flag2 = FALSE;
|
||||
bAirStart = FALSE;
|
||||
PlaySound(3, end);
|
||||
end.y = m_moveObject[num].posCurrent.y - 64 + BLUPIOFFY;
|
||||
}
|
||||
}
|
||||
if (flag8 && !flag9)
|
||||
if (bIsOpen && !bIsOpen2)
|
||||
{
|
||||
int num13 = -20;
|
||||
if (m_blupiVitesse.x > num13)
|
||||
@ -1635,7 +1668,7 @@ void CDecor::BlupiStep()
|
||||
m_blupiVitesse.x -= 1;
|
||||
}
|
||||
}
|
||||
else if (!flag8 && flag9)
|
||||
else if (!bIsOpen && bIsOpen2)
|
||||
{
|
||||
int num14 = 20;
|
||||
if (m_blupiVitesse.x < num14)
|
||||
@ -1682,7 +1715,7 @@ void CDecor::BlupiStep()
|
||||
}
|
||||
end.x += (int)m_blupiVitesse.x;
|
||||
MoveObjectPollution();
|
||||
if ( !flag && m_blupiTransport == -1)
|
||||
if ( !bLastBlupiAir && m_blupiTransport == -1)
|
||||
{
|
||||
tinyPoint.x = m_blupiPos.x;
|
||||
tinyPoint.y = m_blupiPos.y - BLUPIFLOOR;
|
||||
@ -1701,7 +1734,7 @@ void CDecor::BlupiStep()
|
||||
{
|
||||
StopBlupi();
|
||||
}
|
||||
if ((m_keyPress & KEY_FIRE) != 0 && m_blupiTimeFire == 0 && m_blupiAction != ACTION_TURN)
|
||||
if (m_keyPress & KEY_FIRE && m_blupiTimeFire == 0 && m_blupiAction != ACTION_TURN)
|
||||
{
|
||||
if (m_blupiBullet == 0)
|
||||
{
|
||||
@ -1738,7 +1771,7 @@ void CDecor::BlupiStep()
|
||||
StopBlupi();
|
||||
}
|
||||
//m_blupiMotorHigh = (m_blupiAction != 1);
|
||||
if (flag)
|
||||
if (bAirStart)
|
||||
{
|
||||
if (m_blupiVitesse.y < 50)
|
||||
{
|
||||
@ -1764,7 +1797,7 @@ void CDecor::BlupiStep()
|
||||
if (m_blupiVitesse.y >= 0 && num != -1)
|
||||
{
|
||||
m_blupiTransport = num;
|
||||
flag = FALSE;
|
||||
bAirStart = FALSE;
|
||||
PlaySound(3, end);
|
||||
end.y = m_moveObject[num].posCurrent.y - 64 + BLUPIOFFY;
|
||||
}
|
||||
@ -1808,7 +1841,7 @@ void CDecor::BlupiStep()
|
||||
}
|
||||
end.x += (int)m_blupiVitesse.x;
|
||||
MoveObjectPollution();
|
||||
if ( !flag && m_blupiTransport == -1)
|
||||
if ( m_keyPress & KEY_DOWN && !bAirStart && m_blupiTransport == -1)
|
||||
{
|
||||
|
||||
tinyPoint.x = m_blupiPos.x;
|
||||
@ -1866,7 +1899,7 @@ void CDecor::BlupiStep()
|
||||
m_blupiVitesse.x = 0;
|
||||
}
|
||||
end.x += (int)m_blupiVitesse.x;
|
||||
if ( !flag && !m_blupiAir && m_blupiTransport == -1 && m_blupiVitesse.x < 8)
|
||||
if ( m_keyPress & KEY_DOWN && !bAirStart && !m_blupiAir && m_blupiTransport == -1 && m_blupiVitesse.x < 8)
|
||||
{
|
||||
|
||||
m_blupiSkate = FALSE;
|
||||
@ -1908,17 +1941,19 @@ void CDecor::BlupiStep()
|
||||
{
|
||||
if (m_blupiTransport == -1)
|
||||
{
|
||||
if ((m_keyPress & KEY_JUMP) != 0)
|
||||
if (m_keyPress & (KEY_JUMP | KEY_UP))
|
||||
{
|
||||
if (m_blupiVitesse.y > -5)
|
||||
{
|
||||
m_blupiVitesse.y -= 1;
|
||||
}
|
||||
}
|
||||
else if (m_blupiVitesse.y < 5)
|
||||
else if (m_keyPress & KEY_DOWN)
|
||||
{
|
||||
m_blupiVitesse.y += 1;
|
||||
|
||||
if (m_blupiVitesse.y < 5)
|
||||
{
|
||||
m_blupiVitesse.y += 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2025,7 +2060,7 @@ void CDecor::BlupiStep()
|
||||
{
|
||||
if (m_blupiTransport == -1)
|
||||
{
|
||||
if (m_keyPress & KEY_JUMP)
|
||||
if (m_keyPress & (KEY_JUMP | KEY_UP))
|
||||
{
|
||||
if (m_blupiVitesse.y > -5)
|
||||
{
|
||||
@ -2151,7 +2186,16 @@ void CDecor::BlupiStep()
|
||||
PlaySound(35, end);
|
||||
}
|
||||
}
|
||||
if ( !m_blupiHelico && !m_blupiOver && !m_blupiBalloon && !m_blupiEcrase && !m_blupiTank && !m_blupiJeep && !m_blupiSkate /*&& !flag4*/ && m_blupiTransport == -1 && m_blupiFocus)
|
||||
if ( !m_blupiHelico &&
|
||||
!m_blupiOver &&
|
||||
!m_blupiBalloon &&
|
||||
!m_blupiEcrase &&
|
||||
!m_blupiTank &&
|
||||
!m_blupiJeep &&
|
||||
!m_blupiSkate &&
|
||||
!bAirStart &&
|
||||
m_blupiTransport == -1 &&
|
||||
m_blupiFocus)
|
||||
{
|
||||
if (m_blupiDynamite > 0)
|
||||
{
|
||||
@ -2160,13 +2204,13 @@ void CDecor::BlupiStep()
|
||||
rect.right = end.x + 20;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60;
|
||||
flag2 = !DecorDetect(rect);
|
||||
bIsOpen = !DecorDetect(rect);
|
||||
rect.left = end.x + 60 - 20;
|
||||
rect.right = end.x + 60 - 18;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60;
|
||||
flag3 = !DecorDetect(rect);
|
||||
if (!flag2 && !flag3 && ObjectStart(end, 56, 0) != -1)
|
||||
bIsOpen2 = !DecorDetect(rect);
|
||||
if (!bIsOpen && !bIsOpen2 && ObjectStart(end, 56, 0) != -1)
|
||||
{
|
||||
m_blupiAction = 87;
|
||||
m_blupiPhase = 0;
|
||||
@ -2184,14 +2228,14 @@ void CDecor::BlupiStep()
|
||||
rect.right = end.x + 20;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60;
|
||||
flag2 = !DecorDetect(rect);
|
||||
bIsOpen = !DecorDetect(rect);
|
||||
rect.left = end.x + 60 - 20;
|
||||
rect.right = end.x + 60 - 18;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60;
|
||||
flag3 = !DecorDetect(rect);
|
||||
bIsOpen2 = !DecorDetect(rect);
|
||||
num = MoveChargeDetect(end);
|
||||
if (num == -1 && !flag2 && !flag3 && ObjectStart(end, 200, 0) != -1)
|
||||
if (num == -1 && !bIsOpen && !bIsOpen2 && ObjectStart(end, 200, 0) != -1)
|
||||
{
|
||||
m_blupiAction = 46;
|
||||
m_blupiPhase = 0;
|
||||
@ -2211,7 +2255,7 @@ void CDecor::BlupiStep()
|
||||
rect = BlupiRect(m_blupiPos);
|
||||
tinyPoint4 = end;
|
||||
TestPath(rect, m_blupiPos, &end);
|
||||
if (flag && m_blupiPos.x == end.x && m_blupiPos.x != tinyPoint4.x)
|
||||
if (bLastBlupiAir && m_blupiPos.x == end.x && m_blupiPos.x != tinyPoint4.x)
|
||||
{
|
||||
end.y = tinyPoint4.y;
|
||||
TestPath(rect, m_blupiPos, &end);
|
||||
@ -2245,7 +2289,7 @@ void CDecor::BlupiStep()
|
||||
{
|
||||
if (m_blupiTransport != -1)
|
||||
{
|
||||
AscenseurVertigo(m_blupiTransport, &flag2, &flag3);
|
||||
AscenseurVertigo(m_blupiTransport, &bIsOpen, &bIsOpen2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2253,14 +2297,14 @@ void CDecor::BlupiStep()
|
||||
rect.right = end.x + 26;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60;
|
||||
flag2 = !DecorDetect(rect);
|
||||
bIsOpen = !DecorDetect(rect);
|
||||
rect.left = end.x + 60 - 26;
|
||||
rect.right = end.x + 60 - 24;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60;
|
||||
flag3 = !DecorDetect(rect);
|
||||
bIsOpen2 = !DecorDetect(rect);
|
||||
}
|
||||
if (m_blupiDir == DIR_LEFT && flag2 && !flag3)
|
||||
if (m_blupiDir == DIR_LEFT && bIsOpen && !bIsOpen2)
|
||||
{
|
||||
if (m_blupiHelico || m_blupiOver || AscenseurShift(m_blupiTransport))
|
||||
{
|
||||
@ -2274,7 +2318,7 @@ void CDecor::BlupiStep()
|
||||
m_blupiPhase = 0;
|
||||
}
|
||||
}
|
||||
if (m_blupiDir == DIR_RIGHT && !flag2 && flag3)
|
||||
if (m_blupiDir == DIR_RIGHT && !bIsOpen && bIsOpen2)
|
||||
{
|
||||
if (m_blupiHelico || m_blupiOver || AscenseurShift(m_blupiTransport))
|
||||
{
|
||||
@ -2288,7 +2332,7 @@ void CDecor::BlupiStep()
|
||||
m_blupiPhase = 0;
|
||||
}
|
||||
}
|
||||
if (m_blupiAction != ACTION_VERTIGO && m_blupiAction != ACTION_ADVANCE && m_blupiAction != ACTION_RECEDE && (flag2 || flag3))
|
||||
if (m_blupiAction != ACTION_VERTIGO && m_blupiAction != ACTION_ADVANCE && m_blupiAction != ACTION_RECEDE && (bIsOpen || bIsOpen2))
|
||||
{
|
||||
if (!m_blupiHelico && !m_blupiOver)
|
||||
{
|
||||
@ -2302,7 +2346,7 @@ void CDecor::BlupiStep()
|
||||
{
|
||||
if (m_blupiTransport != -1)
|
||||
{
|
||||
AscenseurVertigo(m_blupiTransport, &flag2, &flag3);
|
||||
AscenseurVertigo(m_blupiTransport, &bIsOpen, &bIsOpen2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2310,19 +2354,19 @@ void CDecor::BlupiStep()
|
||||
rect.right = end.x + 18;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60;
|
||||
flag2 = !DecorDetect(rect);
|
||||
bIsOpen = !DecorDetect(rect);
|
||||
rect.left = end.x + 60 - 18;
|
||||
rect.right = end.x + 60 - 2;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60;
|
||||
flag3 = !DecorDetect(rect);
|
||||
bIsOpen2 = !DecorDetect(rect);
|
||||
}
|
||||
if (flag2 && !flag3)
|
||||
if (bIsOpen && !bIsOpen2)
|
||||
{
|
||||
m_blupiAction = 10;
|
||||
m_blupiPhase = 0;
|
||||
}
|
||||
if (flag3 && !flag2)
|
||||
if (!bIsOpen && bIsOpen2)
|
||||
{
|
||||
m_blupiAction = 10;
|
||||
m_blupiPhase = 0;
|
||||
@ -2332,7 +2376,7 @@ void CDecor::BlupiStep()
|
||||
{
|
||||
if (m_blupiTransport != -1)
|
||||
{
|
||||
AscenseurVertigo(m_blupiTransport, &flag2, &flag3);
|
||||
AscenseurVertigo(m_blupiTransport, &bIsOpen, &bIsOpen2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2340,19 +2384,19 @@ void CDecor::BlupiStep()
|
||||
rect.right = end.x + 18;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60;
|
||||
flag2 = !DecorDetect(rect);
|
||||
bIsOpen = !DecorDetect(rect);
|
||||
rect.left = end.x + 60 - 18;
|
||||
rect.right = end.x + 60 - 2;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60;
|
||||
flag3 = !DecorDetect(rect);
|
||||
bIsOpen2 = !DecorDetect(rect);
|
||||
}
|
||||
if (flag2 && !flag3)
|
||||
if (bIsOpen && !bIsOpen2)
|
||||
{
|
||||
m_blupiAction = 10;
|
||||
m_blupiPhase = 0;
|
||||
}
|
||||
if (flag3 && !flag2)
|
||||
if (!bIsOpen && bIsOpen2)
|
||||
{
|
||||
m_blupiAction = 10;
|
||||
m_blupiPhase = 0;
|
||||
@ -2362,7 +2406,7 @@ void CDecor::BlupiStep()
|
||||
{
|
||||
if (m_blupiTransport != -1)
|
||||
{
|
||||
AscenseurVertigo(m_blupiTransport, &flag2, &flag3);
|
||||
AscenseurVertigo(m_blupiTransport, &bIsOpen, &bIsOpen2);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2370,19 +2414,19 @@ void CDecor::BlupiStep()
|
||||
rect.right = end.x + 19;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60;
|
||||
flag2 = !DecorDetect(rect);
|
||||
bIsOpen = !DecorDetect(rect);
|
||||
rect.left = end.x + 60 - 19;
|
||||
rect.right = end.x + 60 - 12;
|
||||
rect.top = end.y + 60 - 2;
|
||||
rect.bottom = end.y + 60;
|
||||
flag3 = !DecorDetect(rect);
|
||||
bIsOpen2 = !DecorDetect(rect);
|
||||
}
|
||||
if (flag2 && !flag3)
|
||||
if (bIsOpen && !bIsOpen2)
|
||||
{
|
||||
m_blupiAction = 10;
|
||||
m_blupiPhase = 0;
|
||||
}
|
||||
if (flag3 && !flag2)
|
||||
if (!bIsOpen && bIsOpen2)
|
||||
{
|
||||
m_blupiAction = 10;
|
||||
m_blupiPhase = 0;
|
||||
@ -3147,7 +3191,7 @@ void CDecor::BlupiStep()
|
||||
m_blupiJumpAie = FALSE;
|
||||
m_blupiFocus = FALSE;
|
||||
m_blupiRestart = TRUE;
|
||||
if (flag)
|
||||
if (bAirStart)
|
||||
{
|
||||
m_blupiAir = TRUE;
|
||||
}
|
||||
@ -3188,7 +3232,7 @@ void CDecor::BlupiStep()
|
||||
m_blupiJumpAie = FALSE;
|
||||
m_blupiFocus = FALSE;
|
||||
m_blupiRestart = TRUE;
|
||||
if (flag)
|
||||
if (bAirStart)
|
||||
{
|
||||
m_blupiAir = TRUE;
|
||||
}
|
||||
@ -3667,8 +3711,9 @@ void CDecor::BlupiStep()
|
||||
m_term = m_mission / 10 * 10;
|
||||
}
|
||||
}
|
||||
if (m_blupiAction == 30 && m_blupiPhase == 30)
|
||||
if (m_blupiAction == ACTION_BYE && m_blupiPhase == 30)
|
||||
{
|
||||
;
|
||||
num = IsWorld(m_blupiPos);
|
||||
if (num != -1)
|
||||
{
|
||||
@ -3698,7 +3743,7 @@ void CDecor::BlupiStep()
|
||||
{
|
||||
StopSound(47);
|
||||
}
|
||||
if (m_blupiFocus && !m_blupiAir && (!m_blupiHelico || BlupiIsGround()) && (!m_blupiOver || BlupiIsGround()) && !m_blupiBalloon && !m_blupiEcrase && !m_blupiShield && !m_blupiHide && !flag2 && !flag3 && m_blupiTransport == -1 && !IsLave(m_blupiPos) && !IsPiege(m_blupiPos) && !IsGoutte(m_blupiPos, TRUE) && !IsScie(m_blupiPos) && !IsBridge(m_blupiPos, tinyPoint) && IsTeleporte(m_blupiPos) == -1 && !IsBlitz(m_blupiPos, TRUE) && !IsTemp(m_blupiPos) && !IsBalleTraj(m_blupiPos) && !IsMoveTraj(m_blupiPos))
|
||||
if (m_blupiFocus && !m_blupiAir && (!m_blupiHelico || BlupiIsGround()) && (!m_blupiOver || BlupiIsGround()) && !m_blupiBalloon && !m_blupiEcrase && !m_blupiShield && !m_blupiHide && !bIsOpen && !bIsOpen2 && m_blupiTransport == -1 && !IsLave(m_blupiPos) && !IsPiege(m_blupiPos) && !IsGoutte(m_blupiPos, TRUE) && !IsScie(m_blupiPos) && !IsBridge(m_blupiPos, tinyPoint) && IsTeleporte(m_blupiPos) == -1 && !IsBlitz(m_blupiPos, TRUE) && !IsTemp(m_blupiPos) && !IsBalleTraj(m_blupiPos) && !IsMoveTraj(m_blupiPos))
|
||||
{
|
||||
if (m_blupiFifoNb > 0)
|
||||
{
|
||||
@ -3762,6 +3807,15 @@ void CDecor::BlupiStep()
|
||||
VoyageStep();
|
||||
|
||||
m_lastKeyPress = m_keyPress;
|
||||
|
||||
// DEBUG v
|
||||
sprintf(m_notifText[0], "blupiAction %d", m_blupiAction);
|
||||
sprintf(m_notifText[1], "blupiPhase %d", m_blupiPhase);
|
||||
sprintf(m_notifText[2], "blupiPos { %d, %d }", m_blupiPos.x, m_blupiPos.y);
|
||||
sprintf(m_notifText[3], "blupiVitesse { %d, %d }", m_blupiVitesse.x, m_blupiVitesse.y);
|
||||
sprintf(m_notifText[4], "time %d", m_time);
|
||||
m_notifTime = 200;
|
||||
// DEBUG ^
|
||||
}
|
||||
|
||||
|
||||
|
121
src/decio.cpp
121
src/decio.cpp
@ -9,11 +9,11 @@ void CDecor::GetMissionPath(char* str, int user, int mission, BOOL bUser)
|
||||
{
|
||||
if (bUser != 0)
|
||||
{
|
||||
sprintf(str, "data\%.3d-%.3d.blp", user, mission);
|
||||
sprintf(str, "data\\%.3d-%.3d.blp", user, mission);
|
||||
AddUserPath(str);
|
||||
return;
|
||||
}
|
||||
sprintf(str, "data\world%.3d.blp", mission);
|
||||
sprintf(str, "data\\world%.3d.blp", mission);
|
||||
AddUserPath(str);
|
||||
return;
|
||||
}
|
||||
@ -113,71 +113,86 @@ BOOL CDecor::Read(int gamer, int mission, BOOL bUser)
|
||||
GetMissionPath(filename, gamer, mission, bUser);
|
||||
|
||||
file = fopen(filename, "rb");
|
||||
if (file == NULL) goto error;
|
||||
if (file == NULL) {
|
||||
OutputDebug("CDecor::Read error in fopen\n");
|
||||
OutputDebug(filename);
|
||||
goto error;
|
||||
}
|
||||
|
||||
pBuffer = (DescFile*)malloc(sizeof(DescFile));
|
||||
if (pBuffer == NULL) goto error;
|
||||
if (pBuffer == NULL) {
|
||||
OutputDebug("CDecor::Read error in malloc\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
nb = fread(pBuffer, sizeof(DescFile), 1, file);
|
||||
if (nb < 1) goto error;
|
||||
if (nb < 1) {
|
||||
OutputDebug("CDecor::Read error in fread\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
majRev = pBuffer->majRev;
|
||||
minRev = pBuffer->minRev;
|
||||
m_posDecor = pBuffer->posDecor;
|
||||
m_dimDecor = pBuffer->dimDecor;
|
||||
m_music = pBuffer->music;
|
||||
m_region = pBuffer->region;
|
||||
if (0 < majRev && minRev > 2)
|
||||
{
|
||||
strcpy(m_missionTitle,pBuffer->name);
|
||||
}
|
||||
startDir = m_blupiStartDir;
|
||||
blupiDir = pBuffer->blupiDir;
|
||||
startPos = m_blupiStartPos;
|
||||
blupiPos = pBuffer->blupiPos;
|
||||
majRev = pBuffer->majRev;
|
||||
minRev = pBuffer->minRev;
|
||||
m_posDecor = pBuffer->posDecor;
|
||||
m_dimDecor = pBuffer->dimDecor;
|
||||
m_music = pBuffer->music;
|
||||
m_region = pBuffer->region;
|
||||
if (majRev >= 1 && minRev >= 3)
|
||||
{
|
||||
strcpy(m_missionTitle,pBuffer->name);
|
||||
}
|
||||
startDir = m_blupiStartDir;
|
||||
blupiDir = pBuffer->blupiDir;
|
||||
startPos = m_blupiStartPos;
|
||||
blupiPos = pBuffer->blupiPos;
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
m_blupiStartPos[i] = pBuffer->blupiPos[i];
|
||||
}
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
m_blupiStartPos[i] = pBuffer->blupiPos[i];
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
m_blupiStartDir[i] = pBuffer->blupiDir[i];
|
||||
}
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
m_blupiStartDir[i] = pBuffer->blupiDir[i];
|
||||
}
|
||||
|
||||
nb = fread(m_decor, sizeof(Cellule), MAXCELX * MAXCELY / 4, file);
|
||||
if (nb < MAXCELX * MAXCELY / 4) goto error;
|
||||
nb = fread(m_decor, sizeof(Cellule), MAXCELX * MAXCELY, file);
|
||||
if (nb < MAXCELX * MAXCELY) goto error;
|
||||
|
||||
for (x = 0; x < MAXCELX / 2; x++)
|
||||
for (x = 0; x < MAXCELX / 2; x++)
|
||||
{
|
||||
for (y = 0; y < MAXCELY / 2; y++)
|
||||
{
|
||||
if (m_decor[x][y].icon >= 48 &&
|
||||
m_decor[x][y].icon <= 67)
|
||||
{
|
||||
for (y = 0; y < MAXCELY / 2; y++)
|
||||
{
|
||||
if (m_decor[x][y].icon >= 48 &&
|
||||
m_decor[x][y].icon <= 67)
|
||||
{
|
||||
m_decor[x][y].icon -= 128 - 17;
|
||||
}
|
||||
}
|
||||
m_decor[x][y].icon -= 128 - 17;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (majRev == 1 && minRev <= 1)
|
||||
{
|
||||
memset(m_moveObject, 0, sizeof(MoveObject));
|
||||
nb = fread(m_moveObject, sizeof(MoveObject), MAXMOVEOBJECT / 2, file);
|
||||
if (nb < MAXMOVEOBJECT / 2) goto error;
|
||||
}
|
||||
else
|
||||
{
|
||||
nb = fread(m_moveObject, sizeof(MoveObject), MAXMOVEOBJECT, file);
|
||||
if (nb < MAXMOVEOBJECT) goto error;
|
||||
}
|
||||
if (majRev == 1 && minRev >= 1)
|
||||
{
|
||||
nb = fread(m_bigDecor, sizeof(Cellule), MAXCELX * MAXCELY, file);
|
||||
if (nb < MAXCELX * MAXCELY) goto error;
|
||||
}
|
||||
|
||||
free(pBuffer);
|
||||
fclose(file);
|
||||
return TRUE;
|
||||
memset(m_moveObject, 0, sizeof(MoveObject) * MAXMOVEOBJECT);
|
||||
if (majRev == 1 && minRev >= 2)
|
||||
{
|
||||
nb = fread(m_moveObject, sizeof(MoveObject), MAXMOVEOBJECT, file);
|
||||
if (nb < MAXMOVEOBJECT) goto error;
|
||||
}
|
||||
else
|
||||
{
|
||||
nb = fread(m_moveObject, sizeof(MoveObject), MAXMOVEOBJECT / 2, file);
|
||||
if (nb < MAXMOVEOBJECT / 2) goto error;
|
||||
}
|
||||
|
||||
free(pBuffer);
|
||||
fclose(file);
|
||||
return TRUE;
|
||||
error:
|
||||
|
||||
if (pBuffer != NULL) free(pBuffer);
|
||||
if (file != NULL) fclose(file);
|
||||
|
||||
|
@ -2222,7 +2222,7 @@ void CDecor::MoveObjectSort()
|
||||
{
|
||||
if (m_moveObject[i].type != 0)
|
||||
{
|
||||
MoveObjectCopy(m_moveObject[num++], m_moveObject[i]);
|
||||
MoveObjectCopy(&m_moveObject[num++], &m_moveObject[i]);
|
||||
}
|
||||
}
|
||||
for (int i = num; i < MAXMOVEOBJECT; i++)
|
||||
@ -2241,9 +2241,9 @@ void CDecor::MoveObjectSort()
|
||||
{
|
||||
if (SortGetType(m_moveObject[i].type) > SortGetType(m_moveObject[i + 1].type))
|
||||
{
|
||||
MoveObjectCopy(src, m_moveObject[i]);
|
||||
MoveObjectCopy(m_moveObject[i], m_moveObject[i + 1]);
|
||||
MoveObjectCopy(m_moveObject[i + 1], src);
|
||||
MoveObjectCopy(&src, &m_moveObject[i]);
|
||||
MoveObjectCopy(&m_moveObject[i], &m_moveObject[i + 1]);
|
||||
MoveObjectCopy(&m_moveObject[i + 1], &src);
|
||||
flag = TRUE;
|
||||
}
|
||||
}
|
||||
@ -2274,9 +2274,9 @@ void CDecor::MoveObjectPriority(int i)
|
||||
{
|
||||
return;
|
||||
}
|
||||
MoveObjectCopy(src, m_moveObject[i]);
|
||||
MoveObjectCopy(m_moveObject[i], m_moveObject[j]);
|
||||
MoveObjectCopy(m_moveObject[j], src);
|
||||
MoveObjectCopy(&src, &m_moveObject[i]);
|
||||
MoveObjectCopy(&m_moveObject[i], &m_moveObject[j]);
|
||||
MoveObjectCopy(&m_moveObject[j], &src);
|
||||
if (m_moveObject[i].type == 12 || m_moveObject[j].type == 12)
|
||||
{
|
||||
UpdateCaisse();
|
||||
|
203
src/decor.cpp
203
src/decor.cpp
@ -147,7 +147,7 @@ void CDecor::InitDecor()
|
||||
m_moveObject[1].stepAdvance = 1;
|
||||
m_moveObject[1].timeStopStart = 0;
|
||||
m_moveObject[1].timeStopEnd = 0;
|
||||
m_moveObject[1].posStart = { 450, 196 };
|
||||
m_moveObject[1].posStart = { 322, 196 };
|
||||
m_moveObject[1].posEnd = m_moveObject[1].posStart;
|
||||
m_moveObject[1].posCurrent = m_moveObject[1].posStart;
|
||||
m_moveObject[1].phase = 0;
|
||||
@ -155,9 +155,15 @@ void CDecor::InitDecor()
|
||||
m_moveObject[1].time = 0;
|
||||
m_moveObject[1].channel = CHELEMENT;
|
||||
m_moveObject[1].icon = 29;
|
||||
//TODO: iterate setting blupi fifo positions
|
||||
m_blupiStartPos[0] = { 66, 192 + BLUPIOFFY };
|
||||
m_blupiStartDir[0] = DIR_RIGHT;
|
||||
for (int i = 0; i < MAXFIFOPOS; i++)
|
||||
{
|
||||
m_blupiFifoPos[i] = { 0, 0 };
|
||||
}
|
||||
for (int i = 0; i < MAXNETPLAYER; i++)
|
||||
{
|
||||
m_blupiStartPos[i] = { 194, 192 + BLUPIOFFY };
|
||||
m_blupiStartDir[i] = DIR_RIGHT;
|
||||
}
|
||||
m_blupiAction = ACTION_STOP;
|
||||
m_blupiPhase = 0;
|
||||
m_blupiIcon = 0;
|
||||
@ -370,35 +376,32 @@ void CDecor::MoveStep()
|
||||
NotifStep();
|
||||
}
|
||||
|
||||
if (m_phase == WM_PHASE_BUILD) {
|
||||
if (m_keyPress & KEY_RIGHT) {
|
||||
if (m_phase == WM_PHASE_BUILD)
|
||||
{
|
||||
if (m_keyPress & KEY_RIGHT)
|
||||
{
|
||||
m_posDecor.x += 50;
|
||||
int max = (m_dimDecor.x != 0) ? (MAXCELX * DIMOBJX - LXIMAGE) : 0;
|
||||
if (m_posDecor.x > max) {
|
||||
m_posDecor.x = max;
|
||||
}
|
||||
int limit = (m_dimDecor.x != 0) ? (MAXCELX * DIMOBJX - LXIMAGE) : 0;
|
||||
if (m_posDecor.x > limit) m_posDecor.x = limit;
|
||||
m_posCelHili.x = -1;
|
||||
}
|
||||
if (m_keyPress & KEY_LEFT) {
|
||||
if (m_keyPress & KEY_LEFT)
|
||||
{
|
||||
m_posDecor.x -= 50;
|
||||
if (m_posDecor.x < 0) {
|
||||
m_posDecor.x = 0;
|
||||
}
|
||||
if (m_posDecor.x < 0) m_posDecor.x = 0;
|
||||
m_posCelHili.x = -1;
|
||||
}
|
||||
if (m_keyPress & KEY_DOWN) {
|
||||
if (m_keyPress & KEY_DOWN)
|
||||
{
|
||||
m_posDecor.y += 50;
|
||||
int max = (m_dimDecor.y > 0) ? (MAXCELY * DIMOBJY - LYIMAGE) : 0;
|
||||
if (m_posDecor.y > max) {
|
||||
m_posDecor.y = max;
|
||||
}
|
||||
int limit = (m_dimDecor.y > 0) ? (MAXCELY * DIMOBJY - LYIMAGE) : 0;
|
||||
if (m_posDecor.y > limit) m_posDecor.y = limit;
|
||||
m_posCelHili.x = -1;
|
||||
}
|
||||
if (m_keyPress & KEY_UP) {
|
||||
if (m_keyPress & KEY_UP)
|
||||
{
|
||||
m_posDecor.y -= 50;
|
||||
if (m_posDecor.y < 0) {
|
||||
m_posDecor.y = 0;
|
||||
}
|
||||
if (m_posDecor.y < 0) m_posDecor.y = 0;
|
||||
m_posCelHili.x = -1;
|
||||
}
|
||||
}
|
||||
@ -499,7 +502,7 @@ void CDecor::Build(RECT rect)
|
||||
|
||||
if (m_phase == WM_PHASE_BUILD)
|
||||
{
|
||||
// ...
|
||||
// draw blupi start positions...
|
||||
}
|
||||
|
||||
if (m_bMulti && m_phase != WM_PHASE_BUILD)
|
||||
@ -568,24 +571,24 @@ void CDecor::Build(RECT rect)
|
||||
m_pPixmap->QuickIcon(GetBlupiChannelStandard(), m_blupiIcon, tinyPoint);
|
||||
}
|
||||
|
||||
for (int num3 = MAXMOVEOBJECT - 1; num3 >= 0; num3--)
|
||||
for (int i = 0; i < MAXMOVEOBJECT; i++)
|
||||
{
|
||||
if (m_moveObject[num3].type != 0 && m_moveObject[num3].posCurrent.x >= posDecor.x - 64 && m_moveObject[num3].posCurrent.y >= posDecor.y - 64 && m_moveObject[num3].posCurrent.x <= posDecor.x + LXIMAGE && m_moveObject[num3].posCurrent.y <= posDecor.y + LYIMAGE && (m_moveObject[num3].type < 8 || m_moveObject[num3].type > 11) && (m_moveObject[num3].type < 90 || m_moveObject[num3].type > 95) && (m_moveObject[num3].type < 98 || m_moveObject[num3].type > 100) && m_moveObject[num3].type != 53 && m_moveObject[num3].type != 1 && m_moveObject[num3].type != 47 && m_moveObject[num3].type != 48)
|
||||
if (m_moveObject[i].type != 0 && m_moveObject[i].posCurrent.x >= posDecor.x - 64 && m_moveObject[i].posCurrent.y >= posDecor.y - 64 && m_moveObject[i].posCurrent.x <= posDecor.x + LXIMAGE && m_moveObject[i].posCurrent.y <= posDecor.y + LYIMAGE && (m_moveObject[i].type < 8 || m_moveObject[i].type > 11) && (m_moveObject[i].type < 90 || m_moveObject[i].type > 95) && (m_moveObject[i].type < 98 || m_moveObject[i].type > 100) && m_moveObject[i].type != 53 && m_moveObject[i].type != 1 && m_moveObject[i].type != 47 && m_moveObject[i].type != 48)
|
||||
{
|
||||
tinyPoint.x = m_moveObject[num3].posCurrent.x - posDecor.x;
|
||||
tinyPoint.y = m_moveObject[num3].posCurrent.y - posDecor.y;
|
||||
if (m_moveObject[num3].type == TYPE_BULLDOZER || m_moveObject[num3].type == TYPE_BLUPIHELICO || m_moveObject[num3].type == TYPE_BLUPITANK)
|
||||
tinyPoint.x = m_moveObject[i].posCurrent.x - posDecor.x;
|
||||
tinyPoint.y = m_moveObject[i].posCurrent.y - posDecor.y;
|
||||
if (m_moveObject[i].type == TYPE_BULLDOZER || m_moveObject[i].type == TYPE_BLUPIHELICO || m_moveObject[i].type == TYPE_BLUPITANK)
|
||||
{
|
||||
tinyPoint.x += 2;
|
||||
tinyPoint.y += BLUPIOFFY;
|
||||
}
|
||||
if (m_moveObject[num3].type == 54)
|
||||
if (m_moveObject[i].type == 54)
|
||||
{
|
||||
tinyPoint.y += BLUPIOFFY;
|
||||
}
|
||||
// get the winphone opacity stuff out of here
|
||||
m_pPixmap->QuickIcon(m_moveObject[num3].channel, m_moveObject[num3].icon, tinyPoint);
|
||||
if (m_moveObject[num3].type == 30)
|
||||
m_pPixmap->QuickIcon(m_moveObject[i].channel, m_moveObject[i].icon, tinyPoint);
|
||||
if (m_moveObject[i].type == 30)
|
||||
{
|
||||
for (int l = 0; l < sizeof(table_drinkoffset) / sizeof(int); l++)
|
||||
{
|
||||
@ -596,7 +599,7 @@ void CDecor::Build(RECT rect)
|
||||
m_pPixmap->QuickIcon(10, rank, pos2);
|
||||
}
|
||||
}
|
||||
if (m_bDrawSecret && m_moveObject[num3].type == 12 && m_moveObject[num3].icon != 32 && m_moveObject[num3].icon != 33 && m_moveObject[num3].icon != 34)
|
||||
if (m_bDrawSecret && m_moveObject[i].type == 12 && m_moveObject[i].icon != 32 && m_moveObject[i].icon != 33 && m_moveObject[i].icon != 34)
|
||||
{
|
||||
m_pPixmap->QuickIcon(1, 214, tinyPoint);
|
||||
}
|
||||
@ -827,10 +830,12 @@ void CDecor::DrawInfo()
|
||||
|
||||
if (m_phase == WM_PHASE_PLAY || m_phase == WM_PHASE_PLAYTEST)
|
||||
{
|
||||
for (int i = 4; i != 0; i--) {
|
||||
if (m_notifText[i] != '\0') {
|
||||
DrawText(m_pPixmap, { 10, 10 }, m_notifText[i], 0);
|
||||
pos = { 10, 10 };
|
||||
for (int i = 0; i < MAXNOTIF; i++) {
|
||||
if (m_notifText[i][0] != '\0') {
|
||||
DrawText(m_pPixmap, pos, m_notifText[i], FONTWHITE);
|
||||
}
|
||||
pos.y += DIMTEXTY;
|
||||
}
|
||||
|
||||
if (m_nbVies > 0) {
|
||||
@ -1556,12 +1561,49 @@ BOOL CDecor::DrawMap(BOOL bPlay, int team)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL CDecor::SearchWorld(int world, POINT *blupi, int *dir)
|
||||
BOOL CDecor::SearchWorld(int world, POINT *cel, POINT *newBlupiPos)
|
||||
{
|
||||
for (int x = 0; x < MAXCELX; x++)
|
||||
{
|
||||
for (int y = 0; y < MAXCELY; y++)
|
||||
{
|
||||
int icon = m_decor[x][y].icon;
|
||||
if (icon >= Object::Level_1 && icon <= Object::Level_8)
|
||||
{
|
||||
if (world == icon - Object::Level_1 + 1)
|
||||
{
|
||||
if (x > 1 && m_decor[x + 1][y].icon == Object::DoorLevel)
|
||||
{
|
||||
*cel = { x - 1, y };
|
||||
*newBlupiPos = { (x - 2) * DIMOBJX + 2, y * DIMOBJY + 6 };
|
||||
return TRUE;
|
||||
}
|
||||
if (x > 2 && m_decor[x + 2][y].icon == Object::DoorLevel)
|
||||
{
|
||||
*cel = { x - 2, y };
|
||||
*newBlupiPos = { (x - 3) * DIMOBJX + 2, y * DIMOBJY + 6 };
|
||||
return TRUE;
|
||||
}
|
||||
if (x < MAXCELX - 1 && m_decor[x - 1][y].icon == Object::DoorLevel)
|
||||
{
|
||||
*cel = { x + 1, y };
|
||||
*newBlupiPos = { (x + 2) * DIMOBJX + 2, y * DIMOBJY + 6 };
|
||||
return TRUE;
|
||||
}
|
||||
if (x < MAXCELX - 2 && m_decor[x + 2][y].icon == Object::DoorLevel)
|
||||
{
|
||||
*cel = { x + 2, y };
|
||||
*newBlupiPos = { (x + 3) * DIMOBJX + 2, y * DIMOBJY + 6 };
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOL CDecor::SearchDoor(int n, POINT *cel, POINT *blupi)
|
||||
BOOL CDecor::SearchDoor(int n, POINT *cel)
|
||||
{
|
||||
for (int i = 0; i < 100; i++)
|
||||
{
|
||||
@ -1574,32 +1616,24 @@ BOOL CDecor::SearchDoor(int n, POINT *cel, POINT *blupi)
|
||||
{
|
||||
cel->x = i - 1;
|
||||
cel->y = j;
|
||||
blupi->x = (i - 2) * 64 + 2;
|
||||
blupi->y = j * 64 + BLUPIOFFY;
|
||||
return TRUE;
|
||||
}
|
||||
if (i > 1 && m_decor[i - 2, j]->icon == 182)
|
||||
{
|
||||
cel->x = i - 2;
|
||||
cel->y = j;
|
||||
blupi->x = (i - 3) * 64 + 2;
|
||||
blupi->y = j * 64 + BLUPIOFFY;
|
||||
return TRUE;
|
||||
}
|
||||
if (i < 99 && m_decor[i + 1, j]->icon == 182)
|
||||
{
|
||||
cel->x = i + 1;
|
||||
cel->y = j;
|
||||
blupi->x = (i + 2) * 64 + 2;
|
||||
blupi->y = j * 64 + BLUPIOFFY;
|
||||
return TRUE;
|
||||
}
|
||||
if (i < 98 && m_decor[i + 2, j]->icon == 182)
|
||||
{
|
||||
cel->x = i + 2;
|
||||
cel->y = j;
|
||||
blupi->x = (i + 3) * 64 + 2;
|
||||
blupi->y = j * 64 + BLUPIOFFY;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@ -1610,7 +1644,84 @@ BOOL CDecor::SearchDoor(int n, POINT *cel, POINT *blupi)
|
||||
|
||||
void CDecor::AdaptDoors(BOOL bPrivate, int mission)
|
||||
{
|
||||
POINT cel;
|
||||
int index;
|
||||
int icon;
|
||||
POINT newPosBlupi;
|
||||
|
||||
m_bPrivate = bPrivate;
|
||||
m_mission = mission;
|
||||
if (bPrivate == FALSE)
|
||||
{
|
||||
if (mission == 1)
|
||||
{
|
||||
for (int i = 0; i < 20; ++i)
|
||||
{
|
||||
if (SearchDoor(i, &cel))
|
||||
{
|
||||
if (!m_doors[180 + i] || m_bCheatDoors)
|
||||
{
|
||||
m_decor[cel.x][cel.y].icon = -1;
|
||||
index = MoveObjectFree();
|
||||
m_moveObject[index].type = TYPE_DOOR;
|
||||
m_moveObject[index].stepAdvance = 50;
|
||||
m_moveObject[index].stepRecede = 1;
|
||||
m_moveObject[index].timeStopStart = 0;
|
||||
m_moveObject[index].timeStopEnd = 0;
|
||||
m_moveObject[index].posStart.x = cel.x * DIMOBJX;
|
||||
m_moveObject[index].posStart.y = cel.y * DIMOBJY;
|
||||
m_moveObject[index].posEnd.x = cel.x * DIMOBJX;
|
||||
m_moveObject[index].posEnd.y = cel.y * DIMOBJY - DIMOBJY;
|
||||
m_moveObject[index].posCurrent.x = m_moveObject[index].posStart.x;
|
||||
m_moveObject[index].posCurrent.y = m_moveObject[index].posStart.y;
|
||||
m_moveObject[index].step = STEP_STOPSTART;
|
||||
m_moveObject[index].time = 0;
|
||||
m_moveObject[index].phase = 0;
|
||||
m_moveObject[index].channel = CHOBJECT;
|
||||
m_moveObject[index].icon = 0xb7;
|
||||
PlaySound(SOUND_DOOR, m_moveObject[index].posStart, FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int x = 0; x < MAXCELX; x++)
|
||||
{
|
||||
for (int y = 0; y < MAXCELY; y++)
|
||||
{
|
||||
int icon = m_decor[x][y].icon;
|
||||
if (icon >= Object::World_1 && icon <= Object::World_8 && (!m_doors[icon - Object::World_1 + 1] || m_bCheatDoors))
|
||||
{
|
||||
m_decor[x][y].icon += 8;
|
||||
}
|
||||
if (icon == Object::World_9 && (!m_doors[189] || m_bCheatDoors))
|
||||
{
|
||||
m_decor[x][y].icon = Object::WorldDone_9;
|
||||
}
|
||||
if (icon >= Object::World_10 && icon <= Object::World_14 && (!m_doors[icon - Object::World_10 + 1] || m_bCheatDoors))
|
||||
{
|
||||
m_decor[x][y].icon += 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (mission % 10 == 0)
|
||||
{
|
||||
for (int i = 0; i < 10; ++i)
|
||||
{
|
||||
if (SearchWorld(i, &cel, &newPosBlupi))
|
||||
{
|
||||
if (!m_doors[mission + i] || m_bCheatDoors)
|
||||
{
|
||||
OpenDoor(cel);
|
||||
for (int j = 0; j < MAXNETPLAYER; j++)
|
||||
{
|
||||
m_blupiStartPos[i] = newPosBlupi;
|
||||
m_blupiStartDir[i] = (m_blupiStartPos[i].x < cel.x * DIMOBJX) ? DIR_RIGHT : DIR_LEFT;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CDecor::OpenDoorsTresor()
|
||||
|
21
src/decor.h
21
src/decor.h
@ -9,11 +9,6 @@
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define MAXNETMESSAGE 20
|
||||
#define MAXMOVEOBJECT 200
|
||||
#define MAXNOTIF 4
|
||||
#define MAXNETPLAYER 4
|
||||
|
||||
#define MAXQUART 441
|
||||
#define SCROLL_SPEED 8
|
||||
#define SCROLL_MARGX 80
|
||||
@ -147,7 +142,7 @@ typedef struct
|
||||
int blupiTimeOuf;
|
||||
int blupiActionOuf;
|
||||
int blupiFifoNb;
|
||||
POINT blupiFifoPos[10];
|
||||
POINT blupiFifoPos[MAXFIFOPOS];
|
||||
BOOL blupiInvert;
|
||||
BOOL blupiBalloon;
|
||||
BOOL blupiOver;
|
||||
@ -407,8 +402,8 @@ public:
|
||||
BOOL CurrentRead(int gamer, int mission, BOOL *pbMission, BOOL *pbPrivate);
|
||||
BOOL CurrentWrite(int gamer, int mission, char* param3);
|
||||
|
||||
BOOL SearchWorld(int world, POINT *blupi, int *dir);
|
||||
BOOL SearchDoor(int n, POINT *cel, POINT *blupi);
|
||||
BOOL SearchWorld(int world, POINT *cel, POINT *newBlupiPos);
|
||||
BOOL SearchDoor(int n, POINT *cel);
|
||||
void AdaptDoors(BOOL bPrivate, int mission);
|
||||
void OpenDoorsTresor();
|
||||
void OpenDoor(POINT cel);
|
||||
@ -419,7 +414,7 @@ public:
|
||||
BOOL DeleteMission(int user, int mission, BOOL bUser);
|
||||
|
||||
inline BOOL IsValidCel(POINT cel);
|
||||
inline void MoveObjectCopy(MoveObject src, MoveObject dest);
|
||||
inline void MoveObjectCopy(MoveObject *src, MoveObject *dest);
|
||||
inline void StopVehicleSound();
|
||||
inline BOOL IsDeadAction(int action);
|
||||
inline void StopBlupi(BOOL bFocus = FALSE);
|
||||
@ -528,7 +523,7 @@ protected:
|
||||
int m_netMessageIndex1;
|
||||
int m_netMessageIndex2;
|
||||
int m_netMessageIndex3;
|
||||
char m_notifText[4][100];
|
||||
char m_notifText[MAXNOTIF][100];
|
||||
int m_notifTime;
|
||||
CJauge m_jauges[2];
|
||||
int m_blupiLevel;
|
||||
@ -580,9 +575,9 @@ inline BOOL CDecor::IsValidCel(POINT cel)
|
||||
return cel.x >= 0 && cel.x < MAXCELX && cel.y >= 0 && cel.y < MAXCELY;
|
||||
}
|
||||
|
||||
inline void CDecor::MoveObjectCopy(MoveObject src, MoveObject dest)
|
||||
inline void CDecor::MoveObjectCopy(MoveObject *src, MoveObject *dest)
|
||||
{
|
||||
memcpy(&dest, &src, sizeof(dest));
|
||||
memcpy(dest, src, sizeof(dest));
|
||||
}
|
||||
|
||||
inline void CDecor::StopVehicleSound()
|
||||
@ -607,7 +602,7 @@ inline void CDecor::StopBlupi(BOOL bSetFocus)
|
||||
|
||||
inline BOOL CDecor::IsBlupiVehicle()
|
||||
{
|
||||
return m_blupiHelico || m_blupiOver || m_blupiJeep || m_blupiTank || m_blupiSkate;
|
||||
return IsBlupiMotorVehicle() || m_blupiSkate;
|
||||
}
|
||||
|
||||
inline BOOL CDecor::IsBlupiMotorVehicle()
|
||||
|
208
src/dectables.h
208
src/dectables.h
File diff suppressed because one or more lines are too long
66
src/def.h
66
src/def.h
@ -22,6 +22,11 @@
|
||||
#define _LEGACY FALSE // if TRUE, keep broken/quirky legacy code
|
||||
|
||||
#define MAXGAMER 8
|
||||
#define MAXNETPLAYER 4
|
||||
#define MAXNETMESSAGE 20
|
||||
#define MAXMOVEOBJECT 200
|
||||
#define MAXNOTIF 5
|
||||
#define MAXFIFOPOS 10
|
||||
|
||||
#define LXIMAGE 640 // dimensions de la fenêtre de jeu
|
||||
#define LYIMAGE 480
|
||||
@ -71,7 +76,8 @@ enum {
|
||||
CHBLUPI1,
|
||||
CHBLUPI2,
|
||||
CHBLUPI3,
|
||||
CHTEMP
|
||||
CHTEMP,
|
||||
CHMAX = CHTEMP
|
||||
};
|
||||
|
||||
enum {
|
||||
@ -900,22 +906,22 @@ namespace Object {
|
||||
RockTriRight_2,
|
||||
RockSquare_17,
|
||||
GrassSquare_2,
|
||||
Course_1,
|
||||
Course_2,
|
||||
Course_3, // 160
|
||||
Course_4,
|
||||
Course_5,
|
||||
Course_6,
|
||||
Course_7,
|
||||
Course_8,
|
||||
CourseDone_1,
|
||||
CourseDone_2,
|
||||
CourseDone_3,
|
||||
CourseDone_4,
|
||||
CourseDone_5,
|
||||
CourseDone_6,
|
||||
CourseDone_7,
|
||||
CourseDone_8,
|
||||
World_1,
|
||||
World_2,
|
||||
World_3, // 160
|
||||
World_4,
|
||||
World_5,
|
||||
World_6,
|
||||
World_7,
|
||||
World_8,
|
||||
WorldDone_1,
|
||||
WorldDone_2,
|
||||
WorldDone_3,
|
||||
WorldDone_4,
|
||||
WorldDone_5,
|
||||
WorldDone_6,
|
||||
WorldDone_7,
|
||||
WorldDone_8,
|
||||
Level_1,
|
||||
Level_2,
|
||||
Level_3, // 176
|
||||
@ -926,7 +932,7 @@ namespace Object {
|
||||
Level_8,
|
||||
DoorLevel,
|
||||
DoorCourse,
|
||||
CourseBack,
|
||||
WorldBack,
|
||||
RockSecret,
|
||||
Facade_1,
|
||||
Facade_2,
|
||||
@ -1051,8 +1057,8 @@ namespace Object {
|
||||
Lightning_2,
|
||||
Lightning_3,
|
||||
Lightning_4,
|
||||
Course_9,
|
||||
CourseDone_9,
|
||||
World_9,
|
||||
WorldDone_9,
|
||||
Conveyor_1,
|
||||
Conveyor_2,
|
||||
Conveyor_3,
|
||||
@ -1153,16 +1159,16 @@ namespace Object {
|
||||
SlimeTrapCeiling_5,
|
||||
SlimeTrapCeiling_6,
|
||||
SlimeTrapCeiling_7,
|
||||
Course_10,
|
||||
Course_11,
|
||||
Course_12,
|
||||
Course_13,
|
||||
Course_14,
|
||||
CourseDone_10, // 414
|
||||
CourseDone_11,
|
||||
CourseDone_12,
|
||||
CourseDone_13,
|
||||
CourseDone_14,
|
||||
World_10,
|
||||
World_11,
|
||||
World_12,
|
||||
World_13,
|
||||
World_14,
|
||||
WorldDone_10, // 414
|
||||
WorldDone_11,
|
||||
WorldDone_12,
|
||||
WorldDone_13,
|
||||
WorldDone_14,
|
||||
DoorTreasure_1,
|
||||
DoorTreasure_2,
|
||||
DoorTreasure_3,
|
||||
|
@ -1767,7 +1767,6 @@ CEvent::CEvent()
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
m_somethingJoystick = 0;
|
||||
m_bFullScreen = TRUE;
|
||||
m_mouseType = MOUSETYPEGRA;
|
||||
@ -2530,38 +2529,14 @@ BOOL CEvent::DrawButtons()
|
||||
|
||||
PutTextInputBox({ 320, 232 });
|
||||
}
|
||||
/*
|
||||
|
||||
// TEMP DEBUG
|
||||
if (m_keyPress & KEY_LEFT)
|
||||
{
|
||||
DrawTextLeft(m_pPixmap, { LXIMAGE - 30, 15 }, "<", 0);
|
||||
}
|
||||
if (m_keyPress & KEY_RIGHT)
|
||||
{
|
||||
DrawTextLeft(m_pPixmap, { LXIMAGE - 10, 15 }, ">", 0);
|
||||
}
|
||||
if (m_keyPress & KEY_UP)
|
||||
{
|
||||
DrawTextLeft(m_pPixmap, { LXIMAGE - 20, 5 }, "^", 0);
|
||||
}
|
||||
if (m_keyPress & KEY_DOWN)
|
||||
{
|
||||
DrawTextLeft(m_pPixmap, { LXIMAGE - 20, 15 }, "v", 0);
|
||||
}
|
||||
if (m_keyPress & KEY_FIRE)
|
||||
{
|
||||
DrawTextLeft(m_pPixmap, { LXIMAGE - 60, 15 }, "F", 0);
|
||||
}
|
||||
if (m_keyPress & KEY_JUMP)
|
||||
{
|
||||
DrawTextLeft(m_pPixmap, { LXIMAGE - 50, 15 }, "J", 0);
|
||||
}
|
||||
sprintf(res, "%d", m_keyPress);
|
||||
DrawTextLeft(m_pPixmap, { LXIMAGE - 60, 30 }, res, 0);
|
||||
sprintf(res, "demoTime %d", m_demoTime);
|
||||
DrawTextLeft(m_pPixmap, { 60, 0 }, res, m_demoTime % 20 < 10 ? FONTGOLD : FONTWHITE);
|
||||
if (m_demoTime % 20 == 0 && m_demoTime > 0) m_pSound->PlayImage(93, { 320, 240 });
|
||||
*/
|
||||
char str[50];
|
||||
sprintf(str, "m_rankCheat %d (%s)", m_rankCheat, m_rankCheat != -1 ? cheat_code[m_rankCheat] : "...");
|
||||
DrawTextLeft(m_pPixmap, { 200, 0 }, str, FONTWHITE);
|
||||
sprintf(str, "m_posCheat %d", m_posCheat);
|
||||
DrawTextLeft(m_pPixmap, { 200, 20 }, str, FONTWHITE);
|
||||
///////////////
|
||||
|
||||
if (m_phase == WM_PHASE_PLAY && m_phase == WM_PHASE_PLAYTEST && m_phase == WM_PHASE_BUILD)
|
||||
m_pPixmap->DrawPart(-1, 0, pos, rect, 1, 0);
|
||||
@ -3075,7 +3050,7 @@ BOOL CEvent::TreatEventBase(UINT message, WPARAM wParam, LPARAM lParam)
|
||||
if (m_rankCheat != -1)
|
||||
{
|
||||
c = cheat_code[m_rankCheat][m_posCheat];
|
||||
if (m_posCheat != 0 && m_rankCheat == 1) c++;
|
||||
if (m_posCheat != 0 && m_rankCheat == 0) c++;
|
||||
if ((char)wParam == c)
|
||||
{
|
||||
m_posCheat++;
|
||||
@ -3375,7 +3350,7 @@ BOOL CEvent::TreatEventBase(UINT message, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
}
|
||||
|
||||
if (m_phase != WM_PHASE_PLAY && m_phase != WM_PHASE_PLAYTEST)
|
||||
if (m_phase != WM_PHASE_PLAY && m_phase != WM_PHASE_PLAYTEST && m_phase != WM_PHASE_BUILD)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
@ -3535,7 +3510,7 @@ BOOL CEvent::TreatEventBase(UINT message, WPARAM wParam, LPARAM lParam)
|
||||
case WM_PHASE_DOPLAY:
|
||||
m_bPrivate = FALSE;
|
||||
m_mission = 1;
|
||||
if (CheckCDForWorld1())
|
||||
if (CheckWorld1())
|
||||
{
|
||||
return ChangePhase(WM_PHASE_PLAY);
|
||||
}
|
||||
@ -4110,12 +4085,9 @@ BOOL CEvent::IsMulti()
|
||||
|
||||
int CEvent::GetWorldGroup()
|
||||
{
|
||||
int mission;
|
||||
m_mission = mission;
|
||||
|
||||
if (m_mission % 10 != 0 && m_mission != 99)
|
||||
{
|
||||
m_mission = (mission / 10) * 10;
|
||||
m_mission = (m_mission / 10) * 10;
|
||||
return -(m_mission >> 31);
|
||||
}
|
||||
m_mission = 1;
|
||||
@ -4379,7 +4351,7 @@ BOOL CEvent::ChangePhase(UINT phase)
|
||||
|
||||
m_phase = phase;
|
||||
m_index = SearchPhase(phase);
|
||||
if (table[m_index].bUnk && !CheckCDForWorld1())
|
||||
if (table[m_index].bUnk && !CheckWorld1())
|
||||
{
|
||||
m_tryInsertCount = 40;
|
||||
m_tryPhase = m_phase;
|
||||
@ -5721,10 +5693,24 @@ BOOL CEvent::ClearGamer(int gamer)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL CEvent::CheckCDForWorld1()
|
||||
BOOL CEvent::CheckWorld1()
|
||||
{
|
||||
// TODO
|
||||
#if _CD
|
||||
FILE* file;
|
||||
char buf[260];
|
||||
|
||||
strcpy(buf, "data\\world001.blp");
|
||||
AddCDPath(buf);
|
||||
file = fopen(buf, "rb");
|
||||
if (file)
|
||||
{
|
||||
fclose(file);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
#else
|
||||
return TRUE;
|
||||
#endif
|
||||
}
|
||||
|
||||
int CEvent::GameSave(int save)
|
||||
|
@ -190,7 +190,7 @@ protected:
|
||||
int GameSave(int save);
|
||||
|
||||
void DrawMap();
|
||||
BOOL CheckCDForWorld1();
|
||||
BOOL CheckWorld1();
|
||||
void NetAdjustLobbyButtons();
|
||||
BOOL CopyMission(char *srcFileName, char *dstFileName);
|
||||
|
||||
|
24
src/misc.cpp
24
src/misc.cpp
@ -1,16 +1,12 @@
|
||||
// Misc.cpp
|
||||
//
|
||||
|
||||
|
||||
#include <dsound.h>
|
||||
#include <ddraw.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "def.h"
|
||||
|
||||
#pragma warning (disable : 4996)
|
||||
|
||||
|
||||
// Global Variables
|
||||
|
||||
HINSTANCE g_hInstance;
|
||||
@ -120,19 +116,6 @@ void GetCurrentDir(char *pName, int lg)
|
||||
}
|
||||
}
|
||||
|
||||
int Speed(double speed, int max)
|
||||
{
|
||||
if (speed > 0.0)
|
||||
{
|
||||
return max((int)(speed * (double)max), 1);
|
||||
}
|
||||
if (speed < 0.0)
|
||||
{
|
||||
return min((int)(speed * (double)max), -1);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void AddCDPath(char *pFilename)
|
||||
{
|
||||
char temp[MAX_PATH];
|
||||
@ -167,12 +150,12 @@ void AddCDPath(char *pFilename)
|
||||
strcat(temp, pFilename);
|
||||
}
|
||||
#endif
|
||||
|
||||
strcpy(pFilename, temp);
|
||||
}
|
||||
|
||||
void AddUserPath(char *pFilename)
|
||||
{
|
||||
#if _CD || _LEGACY
|
||||
char temp[MAX_PATH];
|
||||
char* pText;
|
||||
int pos;
|
||||
@ -183,12 +166,12 @@ void AddUserPath(char *pFilename)
|
||||
|
||||
|
||||
|
||||
strcpy(temp, "c:\\Speedy_Blupi\\");
|
||||
strcpy(temp, "c:\\Speedy Blupi\\");
|
||||
|
||||
att.nLength = sizeof(SECURITY_ATTRIBUTES);
|
||||
att.lpSecurityDescriptor = NULL;
|
||||
att.bInheritHandle = FALSE;
|
||||
CreateDirectoryA(temp, &att);
|
||||
CreateDirectory(temp, &att);
|
||||
|
||||
pText = strstr(pFilename, "\\");
|
||||
if ( pText != NULL )
|
||||
@ -206,6 +189,7 @@ void AddUserPath(char *pFilename)
|
||||
}
|
||||
|
||||
strcpy(pFilename, temp);
|
||||
#endif
|
||||
}
|
||||
|
||||
void TraceErrorDD(HRESULT hErr, const char *sFile, int nLine)
|
||||
|
@ -20,4 +20,4 @@ extern void AddCDPath(char *pFilename);
|
||||
extern void AddUserPath(char *pFilename);
|
||||
|
||||
extern void TraceErrorDD(HRESULT hErr, const char *sFile, int nLine);
|
||||
extern void TraceErrorDS(HRESULT hErr, const char *sFile, int nLine);
|
||||
extern void TraceErrorDS(HRESULT hErr, const char *sFile, int nLine);
|
@ -6,6 +6,7 @@
|
||||
#include "dplay.h"
|
||||
#include "misc.h"
|
||||
#include "network.h"
|
||||
#include "def.h"
|
||||
|
||||
// a0f94abe-11c3-d111-be62-0040f6944838
|
||||
#define APP_GUID { 0xbe4af9a0, 0xc311, 0x11d1, { 0xbe, 0x62, 0x00, 0x40, 0xf6, 0x94, 0x48, 0x38 } };
|
||||
@ -202,7 +203,7 @@ BOOL CNetwork::CreateSession(char* pSessionName, char* pPlayerName)
|
||||
desc.lpszSessionNameA = pSessionName;
|
||||
desc.dwSize = sizeof(desc);
|
||||
desc.dwFlags = DPSESSION_KEEPALIVE | DPSESSION_MIGRATEHOST;
|
||||
desc.dwMaxPlayers = MAXPLAYERS;
|
||||
desc.dwMaxPlayers = MAXNETPLAYER;
|
||||
|
||||
hr = m_pDP->Open(&desc, DPOPEN_CREATE);
|
||||
if (hr != DP_OK)
|
||||
@ -262,7 +263,7 @@ BOOL CNetwork::Receive(LPVOID pDest, DWORD dwDataSize, LPDWORD lpdwPlayer)
|
||||
ZeroMemory(pDest, dwDataSize);
|
||||
|
||||
*lpdwPlayer = -1;
|
||||
for (int i = 0; i < MAXPLAYERS; i++)
|
||||
for (int i = 0; i < MAXNETPLAYER; i++)
|
||||
{
|
||||
if (m_players[i].bIsPresent && from == i)
|
||||
{
|
||||
|
@ -7,7 +7,6 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#define MAXSESSION 100
|
||||
#define MAXPLAYERS 4
|
||||
|
||||
typedef struct
|
||||
{
|
||||
|
@ -311,6 +311,8 @@ void CPixmap::QuickIcon(int channel, int rank, POINT pos)
|
||||
int num;
|
||||
RECT rect;
|
||||
|
||||
if ((unsigned)channel > CHMAX) return;
|
||||
|
||||
if (channel == CHOBJECT)
|
||||
{
|
||||
if (table_icon_object[0] <= rank) return;
|
||||
@ -1275,12 +1277,12 @@ BOOL CPixmap::DrawIcon(int chDst, int channel, int rank, POINT pos,
|
||||
nby = m_totalDim[channel].y / m_iconDim[channel].y;
|
||||
|
||||
if (rank < 0 || rank >= nbx * nby) return FALSE;
|
||||
}
|
||||
|
||||
rect.left = (rank%nbx)*m_iconDim[channel].x;
|
||||
rect.top = (rank/nbx)*m_iconDim[channel].y;
|
||||
rect.right = rect.left + m_iconDim[channel].x;
|
||||
rect.bottom = rect.top + m_iconDim[channel].y;
|
||||
rect.left = (rank%nbx)*m_iconDim[channel].x;
|
||||
rect.top = (rank / nbx)*m_iconDim[channel].y;
|
||||
rect.right = rect.left + m_iconDim[channel].x;
|
||||
rect.bottom = rect.top + m_iconDim[channel].y;
|
||||
}
|
||||
|
||||
oldColor1 = m_colorSurface[2*channel+0];
|
||||
oldColor2 = m_colorSurface[2*channel+1];
|
||||
|
@ -8,13 +8,8 @@
|
||||
#include "def.h"
|
||||
#include "resource.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
// The following macro are used for proper error handling for DirectSound.
|
||||
#define TRY_DS(exp) { { HRESULT rval = exp; if (rval != DS_OK) { TraceErrorDS(rval, __FILE__, __LINE__); return FALSE; } } }
|
||||
|
||||
|
15
util/extract_tableblupi.py
Normal file
15
util/extract_tableblupi.py
Normal file
@ -0,0 +1,15 @@
|
||||
# JUMMY WAS HERE
|
||||
# extract table_blupi from speedy blupi 2.2 english ver
|
||||
|
||||
import sys
|
||||
import io
|
||||
|
||||
offset = 0x34560
|
||||
out = []
|
||||
|
||||
with io.open('BLUPI.exe', 'rb') as f:
|
||||
data = f.read()
|
||||
for i in range(2842):
|
||||
out.append (int.from_bytes(data[offset + i * 4 : offset + i * 4 + 4], byteorder='little', signed=True))
|
||||
with io.open('out.h', 'wb') as f2:
|
||||
f2.write(bytearray(', '.join(map(str,out)), 'ascii'))
|
15
util/extract_tablemirror.py
Normal file
15
util/extract_tablemirror.py
Normal file
@ -0,0 +1,15 @@
|
||||
# JUMMY WAS HERE
|
||||
# extract table_mirror from speedy blupi 2.2 english ver
|
||||
|
||||
import sys
|
||||
import io
|
||||
|
||||
offset = 0x37ac8
|
||||
out = []
|
||||
|
||||
with io.open('BLUPI.exe', 'rb') as f:
|
||||
data = f.read()
|
||||
for i in range(335):
|
||||
out.append (int.from_bytes(data[offset + i * 4 : offset + i * 4 + 4], byteorder='little', signed=True))
|
||||
with io.open('out.h', 'wb') as f2:
|
||||
f2.write(bytearray(', '.join(map(str,out)), 'ascii'))
|
Loading…
x
Reference in New Issue
Block a user