mirror of
https://github.com/jummy0/sb2-decomp
synced 2025-03-15 04:24:48 +01:00
mostly netcode stuff i think
i forgor
This commit is contained in:
parent
a2acad0c2a
commit
e07da2253a
115
src/blupi.cpp
115
src/blupi.cpp
@ -232,17 +232,27 @@ BOOL ReadConfig(LPSTR lpCmdLine)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mise à jour principale.
|
||||||
|
|
||||||
void UpdateFrame(void)
|
void UpdateFrame(void)
|
||||||
{
|
{
|
||||||
int phase, term;
|
int phase, term, speed;
|
||||||
|
|
||||||
g_pEvent->ReadInput();
|
g_pEvent->ReadInput();
|
||||||
phase = g_pEvent->GetPhase();
|
phase = g_pEvent->GetPhase();
|
||||||
|
|
||||||
|
if (phase == WM_PHASE_INTRO1 ||
|
||||||
|
phase == WM_PHASE_INTRO2)
|
||||||
|
{
|
||||||
|
g_pEvent->IntroStep();
|
||||||
|
}
|
||||||
|
|
||||||
if (phase == WM_PHASE_PLAY || phase == WM_PHASE_PLAYTEST || phase == WM_PHASE_BUILD)
|
if (phase == WM_PHASE_PLAY || phase == WM_PHASE_PLAYTEST || phase == WM_PHASE_BUILD)
|
||||||
{
|
{
|
||||||
if (!g_pDecor->GetPause())
|
if (!g_pDecor->GetPause())
|
||||||
{
|
{
|
||||||
for (int i = 0; i < g_pEvent->GetSpeed() * g_speedRate; i++)
|
speed = g_pEvent->GetSpeed() * g_speedRate;
|
||||||
|
for (int i = 0; i < speed; i++)
|
||||||
{
|
{
|
||||||
g_pDecor->MoveStep();
|
g_pDecor->MoveStep();
|
||||||
g_pEvent->DemoStep();
|
g_pEvent->DemoStep();
|
||||||
@ -255,7 +265,10 @@ void UpdateFrame(void)
|
|||||||
g_pEvent->DemoStep(); // d?marre ?v. d?mo automatique
|
g_pEvent->DemoStep(); // d?marre ?v. d?mo automatique
|
||||||
}
|
}
|
||||||
|
|
||||||
if (phase == WM_PHASE_PLAYMOVIE || phase == WM_PHASE_WINMOVIE || WM_PHASE_WINMOVIEDESIGN || WM_PHASE_WINMOVIEMULTI)
|
if (phase == WM_PHASE_PLAYMOVIE ||
|
||||||
|
phase == WM_PHASE_WINMOVIE ||
|
||||||
|
phase == WM_PHASE_WINMOVIEDESIGN ||
|
||||||
|
phase == WM_PHASE_WINMOVIEMULTI)
|
||||||
{
|
{
|
||||||
g_pEvent->MovieToStart();
|
g_pEvent->MovieToStart();
|
||||||
}
|
}
|
||||||
@ -267,61 +280,62 @@ void UpdateFrame(void)
|
|||||||
|
|
||||||
if (phase == WM_PHASE_PLAY)
|
if (phase == WM_PHASE_PLAY)
|
||||||
{
|
{
|
||||||
if (g_pEvent->IsPrivate() == FALSE)
|
term = g_pDecor->IsTerminated();
|
||||||
|
|
||||||
|
if (g_pEvent->IsPrivate())
|
||||||
{
|
{
|
||||||
if (g_pEvent->IsMulti() == FALSE)
|
if (term == -1)
|
||||||
{
|
|
||||||
if (g_pDecor->IsTerminated() == -1)
|
|
||||||
{
|
|
||||||
g_pEvent->GetWorldGroup();
|
|
||||||
g_pEvent->SetLives(g_pDecor->GetNbVies());
|
|
||||||
g_pEvent->ChangePhase(WM_PHASE_LOST);
|
|
||||||
}
|
|
||||||
if (g_pDecor->IsTerminated() == -2)
|
|
||||||
{
|
|
||||||
g_pEvent->SetLives(g_pDecor->GetNbVies());
|
|
||||||
g_pEvent->ChangePhase(WM_PHASE_WINMOVIE);
|
|
||||||
}
|
|
||||||
if (0 < g_pDecor->IsTerminated())
|
|
||||||
{
|
|
||||||
g_pEvent->SetLives(g_pDecor->GetNbVies());
|
|
||||||
g_pEvent->SetMission(g_pDecor->IsTerminated());
|
|
||||||
g_pEvent->ChangePhase(WM_PHASE_PLAY);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (g_pDecor->IsTerminated() == -1)
|
|
||||||
{
|
|
||||||
g_pEvent->ChangePhase(WM_PHASE_WINMULTI);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (g_pDecor->IsTerminated() != 0)
|
|
||||||
{
|
|
||||||
g_pEvent->ChangePhase(WM_PHASE_WINMOVIEMULTI);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (g_pDecor->IsTerminated() == -1)
|
|
||||||
{
|
{
|
||||||
g_pEvent->ChangePhase(WM_PHASE_LOSTDESIGN);
|
g_pEvent->ChangePhase(WM_PHASE_LOSTDESIGN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (g_pDecor->IsTerminated() != 0)
|
if (term != 0)
|
||||||
{
|
{
|
||||||
g_pEvent->ChangePhase(WM_PHASE_WINMOVIEDESIGN);
|
g_pEvent->ChangePhase(WM_PHASE_WINMOVIEDESIGN);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (g_pEvent->IsMulti())
|
||||||
|
{
|
||||||
|
if (term == -1)
|
||||||
|
{
|
||||||
|
g_pEvent->ChangePhase(WM_PHASE_WINMULTI);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (term != 0)
|
||||||
|
{
|
||||||
|
g_pEvent->ChangePhase(WM_PHASE_WINMOVIEMULTI);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (term == -1)
|
||||||
|
{
|
||||||
|
g_pEvent->GetWorldGroup();
|
||||||
|
g_pEvent->SetNbVies(g_pDecor->GetNbVies());
|
||||||
|
g_pEvent->ChangePhase(WM_PHASE_LOST);
|
||||||
|
}
|
||||||
|
if (term == -2)
|
||||||
|
{
|
||||||
|
g_pEvent->SetNbVies(g_pDecor->GetNbVies());
|
||||||
|
g_pEvent->ChangePhase(WM_PHASE_WINMOVIE);
|
||||||
|
}
|
||||||
|
if (term > 0)
|
||||||
|
{
|
||||||
|
g_pEvent->SetNbVies(g_pDecor->GetNbVies());
|
||||||
|
g_pEvent->SetMission(term);
|
||||||
|
g_pEvent->ChangePhase(WM_PHASE_PLAY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Incomplete
|
|
||||||
|
|
||||||
void SetDecor(void)
|
void SetDecor()
|
||||||
{
|
{
|
||||||
RECT rect;
|
RECT rect;
|
||||||
UINT phase;
|
UINT phase;
|
||||||
@ -429,7 +443,6 @@ LRESULT CALLBACK WindowProc(HWND hWnd, UINT message,
|
|||||||
|
|
||||||
// La touche F10 envoie un autre message pour activer
|
// La touche F10 envoie un autre message pour activer
|
||||||
// le menu dans les applications Windows standard !
|
// le menu dans les applications Windows standard !
|
||||||
//[The F10 key sends another message to activate the menu in standard Windows apps!]
|
|
||||||
if (message == WM_SYSKEYDOWN && wParam == VK_F10)
|
if (message == WM_SYSKEYDOWN && wParam == VK_F10)
|
||||||
{
|
{
|
||||||
message = WM_KEYDOWN;
|
message = WM_KEYDOWN;
|
||||||
@ -458,14 +471,10 @@ LRESULT CALLBACK WindowProc(HWND hWnd, UINT message,
|
|||||||
}
|
}
|
||||||
if (g_timer > 0) g_timer--;
|
if (g_timer > 0) g_timer--;
|
||||||
break;
|
break;
|
||||||
case WM_SYSCOLORCHANGE:
|
|
||||||
OutputDebug("Event WM_SYSCOLORCHANGE\n");
|
|
||||||
break;
|
|
||||||
case WM_CREATE:
|
case WM_CREATE:
|
||||||
hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
|
hInstance = ((LPCREATESTRUCT)lParam)->hInstance;
|
||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_ACTIVATEAPP:
|
case WM_ACTIVATEAPP:
|
||||||
g_bActive = (wParam != 0);
|
g_bActive = (wParam != 0);
|
||||||
if (g_pEvent != NULL)
|
if (g_pEvent != NULL)
|
||||||
@ -501,8 +510,8 @@ LRESULT CALLBACK WindowProc(HWND hWnd, UINT message,
|
|||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case WM_DISPLAYCHANGE:
|
case WM_SYSCOLORCHANGE:
|
||||||
OutputDebug("Event WM_DISPLAYCHANGE\n");
|
OutputDebug("Event WM_SYSCOLORCHANGE\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_QUERYNEWPALETTE:
|
case WM_QUERYNEWPALETTE:
|
||||||
@ -513,6 +522,10 @@ LRESULT CALLBACK WindowProc(HWND hWnd, UINT message,
|
|||||||
OutputDebug("Event WM_PALLETECHANGED\n");
|
OutputDebug("Event WM_PALLETECHANGED\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case WM_DISPLAYCHANGE:
|
||||||
|
OutputDebug("Event WM_DISPLAYCHANGE\n");
|
||||||
|
break;
|
||||||
|
|
||||||
case MM_MCINOTIFY:
|
case MM_MCINOTIFY:
|
||||||
OutputDebug("Event MM_MCINOTIFY\n");
|
OutputDebug("Event MM_MCINOTIFY\n");
|
||||||
if (g_pEvent->IsMovie()) // film en cours ?
|
if (g_pEvent->IsMovie()) // film en cours ?
|
||||||
|
@ -3714,7 +3714,17 @@ void CDecor::BlupiStep()
|
|||||||
m_blupiPhase = 0;
|
m_blupiPhase = 0;
|
||||||
PlaySound(27, m_blupiPos);
|
PlaySound(27, m_blupiPos);
|
||||||
}
|
}
|
||||||
if ((m_blupiAction == 11 && m_blupiPhase == 70) || (m_blupiAction == 75 && m_blupiPhase == 100) || (m_blupiAction == 76 && m_blupiPhase == 70) || (m_blupiAction == 77 && m_blupiPhase == 110) || (m_blupiAction == 78 && m_blupiPhase == 90) || (m_blupiAction == 79 && m_blupiPhase == 90) || (m_blupiAction == 80 && m_blupiPhase == 90) || (m_blupiAction == 81 && m_blupiPhase == 90) || (m_blupiAction == 24 && m_blupiPhase == 90) || (m_blupiAction == 54 && m_blupiPhase == 100) || (m_blupiAction == 57 && m_blupiPhase == 90))
|
if ((m_blupiAction == 11 && m_blupiPhase == 70) ||
|
||||||
|
(m_blupiAction == 75 && m_blupiPhase == 100) ||
|
||||||
|
(m_blupiAction == 76 && m_blupiPhase == 70) ||
|
||||||
|
(m_blupiAction == 77 && m_blupiPhase == 110) ||
|
||||||
|
(m_blupiAction == 78 && m_blupiPhase == 90) ||
|
||||||
|
(m_blupiAction == 79 && m_blupiPhase == 90) ||
|
||||||
|
(m_blupiAction == 80 && m_blupiPhase == 90) ||
|
||||||
|
(m_blupiAction == 81 && m_blupiPhase == 90) ||
|
||||||
|
(m_blupiAction == 24 && m_blupiPhase == 90) ||
|
||||||
|
(m_blupiAction == 54 && m_blupiPhase == 100) ||
|
||||||
|
(m_blupiAction == 57 && m_blupiPhase == 90))
|
||||||
{
|
{
|
||||||
if (m_nbVies > 0)
|
if (m_nbVies > 0)
|
||||||
{
|
{
|
||||||
@ -3729,33 +3739,35 @@ void CDecor::BlupiStep()
|
|||||||
tinyPoint.x = m_blupiPos.x - posDecor.x - 30;
|
tinyPoint.x = m_blupiPos.x - posDecor.x - 30;
|
||||||
tinyPoint.y = m_blupiPos.y - posDecor.y;
|
tinyPoint.y = m_blupiPos.y - posDecor.y;
|
||||||
VoyageInit(VoyageGetPosVie(m_nbVies), tinyPoint, 48, 2);
|
VoyageInit(VoyageGetPosVie(m_nbVies), tinyPoint, 48, 2);
|
||||||
|
NetSendBarePacket(PK_DIE, m_nbVies);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_nbVies = -1;
|
m_nbVies = -1;
|
||||||
m_term = -1;
|
m_term = -1;
|
||||||
DoorsLost();
|
DoorsLost();
|
||||||
|
NetSendBarePacket(PK_LOST, 0);
|
||||||
}
|
}
|
||||||
m_blupiFront = FALSE;
|
m_blupiFront = FALSE;
|
||||||
}
|
}
|
||||||
if (m_dimDecor.y == 0)
|
if (m_dimDecor.y == 0)
|
||||||
{
|
{
|
||||||
num3 = 480;
|
num3 = LYIMAGE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
num3 = 6400;
|
num3 = DIMOBJY * MAXCELY;
|
||||||
}
|
}
|
||||||
if (m_blupiPos.y >= num3 + 1 && m_blupiPos.y <= num3 + 40)
|
if (m_blupiPos.y >= num3 + 1 && m_blupiPos.y <= num3 + 40)
|
||||||
{
|
{
|
||||||
PlaySound(8, m_blupiPos);
|
PlaySound(SOUND_FALL, m_blupiPos);
|
||||||
}
|
}
|
||||||
if (m_blupiPos.y > num3 + 1000)
|
if (m_blupiPos.y > num3 + 1000)
|
||||||
{
|
{
|
||||||
m_term = -1;
|
m_term = -1;
|
||||||
DoorsLost();
|
DoorsLost();
|
||||||
}
|
}
|
||||||
if (m_blupiAction == 13 && m_blupiPhase == 40)
|
if (m_blupiAction == ACTION_WIN && m_blupiPhase == 70)
|
||||||
{
|
{
|
||||||
if (m_bPrivate)
|
if (m_bPrivate)
|
||||||
{
|
{
|
||||||
@ -3780,7 +3792,7 @@ void CDecor::BlupiStep()
|
|||||||
m_term = m_mission / 10 * 10;
|
m_term = m_mission / 10 * 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_blupiAction == ACTION_BYE && m_blupiPhase == 30)
|
if (m_blupiAction == ACTION_BYE && m_blupiPhase == 50)
|
||||||
{
|
{
|
||||||
;
|
;
|
||||||
num = IsWorld(m_blupiPos);
|
num = IsWorld(m_blupiPos);
|
||||||
|
@ -339,49 +339,36 @@ BOOL CDecor::ObjectStart(POINT pos, int type, int speed, BOOL bMulti)
|
|||||||
if (bMulti)
|
if (bMulti)
|
||||||
{
|
{
|
||||||
NetMessage msg;
|
NetMessage msg;
|
||||||
msg.data1 = speed;
|
|
||||||
msg.type = MESS_OBJECTSTART;
|
msg.type = MESS_OBJECTSTART;
|
||||||
msg.x = pos.x;
|
msg.data1 = speed;
|
||||||
msg.y = pos.y;
|
msg.data2 = pos.x;
|
||||||
msg.channel = type;
|
msg.data3 = pos.y;
|
||||||
|
msg.data4 = type;
|
||||||
NetMessagePush(&msg);
|
NetMessagePush(&msg);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL CDecor::ObjectDelete(POINT pos, int type)
|
BOOL CDecor::ObjectDelete(POINT pos, int type, BOOL bMulti)
|
||||||
{
|
{
|
||||||
|
NetMessage msg;
|
||||||
|
|
||||||
int num = MoveObjectSearch(pos, type);
|
int num = MoveObjectSearch(pos, type);
|
||||||
if (num == -1)
|
if (num == -1)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (m_moveObject[num].type == 4 ||
|
|
||||||
m_moveObject[num].type == 12 ||
|
|
||||||
m_moveObject[num].type == 16 ||
|
|
||||||
m_moveObject[num].type == 17 ||
|
|
||||||
m_moveObject[num].type == 20 ||
|
|
||||||
m_moveObject[num].type == 40 ||
|
|
||||||
m_moveObject[num].type == 96 ||
|
|
||||||
m_moveObject[num].type == 97)
|
|
||||||
{
|
|
||||||
int num2 = 17;
|
|
||||||
double animationSpeed = 1.0;
|
|
||||||
if (m_moveObject[num].type == 4)
|
|
||||||
{
|
|
||||||
num2 = 7;
|
|
||||||
}
|
|
||||||
if (m_moveObject[num].type == 17 || m_moveObject[num].type == 20)
|
|
||||||
{
|
|
||||||
num2 = 33;
|
|
||||||
}
|
|
||||||
if (m_moveObject[num].type == 40)
|
|
||||||
{
|
|
||||||
animationSpeed = 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
m_moveObject[num].type = 0;
|
m_moveObject[num].type = 0;
|
||||||
|
if (bMulti)
|
||||||
|
{
|
||||||
|
msg.type = MESS_OBJECTDELETE;
|
||||||
|
msg.data1 = 0;
|
||||||
|
msg.data2 = pos.x;
|
||||||
|
msg.data3 = pos.y;
|
||||||
|
msg.data4 = type;
|
||||||
|
|
||||||
|
NetMessagePush(&msg);
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1590,7 +1577,7 @@ int CDecor::AscenseurDetect(RECT rect, POINT oldpos, POINT newpos)
|
|||||||
src.right = m_moveObject[i].posCurrent.x + DIMOBJX;
|
src.right = m_moveObject[i].posCurrent.x + DIMOBJX;
|
||||||
src.top = m_moveObject[i].posCurrent.y;
|
src.top = m_moveObject[i].posCurrent.y;
|
||||||
src.bottom = m_moveObject[i].posCurrent.y + 16;
|
src.bottom = m_moveObject[i].posCurrent.y + 16;
|
||||||
if (dy < LIFT_RANGE_Y)
|
if (dy < (DIMBLUPIY / 2))
|
||||||
{
|
{
|
||||||
RECT dest = { 0, 0, 0, 0 };
|
RECT dest = { 0, 0, 0, 0 };
|
||||||
if (IntersectRect(&dest, &src, &rect))
|
if (IntersectRect(&dest, &src, &rect))
|
||||||
@ -1601,16 +1588,16 @@ int CDecor::AscenseurDetect(RECT rect, POINT oldpos, POINT newpos)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
RECT src2 = rect;
|
RECT src2 = rect;
|
||||||
src2.top -= dy / LIFT_RANGE_Y * LIFT_RANGE_Y * dirY;
|
src2.top -= dy / (DIMBLUPIY / 2) * (DIMBLUPIY / 2) * dirY;
|
||||||
src2.bottom -= dy / LIFT_RANGE_Y * LIFT_RANGE_Y * dirY;
|
src2.bottom -= dy / (DIMBLUPIY / 2) * (DIMBLUPIY / 2) * dirY;
|
||||||
for (int j = 0; j <= dy / LIFT_RANGE_Y; j++)
|
for (int j = 0; j <= dy / (DIMBLUPIY / 2); j++)
|
||||||
{
|
{
|
||||||
RECT dest = { 0, 0, 0, 0 };
|
RECT dest = { 0, 0, 0, 0 };
|
||||||
if (IntersectRect(&dest, &src, &src2))
|
if (IntersectRect(&dest, &src, &src2))
|
||||||
{
|
{
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
src2.top += dirY * LIFT_RANGE_Y;
|
src2.top += dirY * (DIMBLUPIY / 2);
|
||||||
src2.bottom += dy;
|
src2.bottom += dy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
316
src/decnet.cpp
316
src/decnet.cpp
@ -10,11 +10,11 @@ void CDecor::NetStopCloud(int rank)
|
|||||||
{
|
{
|
||||||
NetMessage msg;
|
NetMessage msg;
|
||||||
|
|
||||||
msg.data1 = 0;
|
|
||||||
msg.x = 0;
|
|
||||||
msg.y = 0;
|
|
||||||
msg.type = MESS_STOPCLOUD;
|
msg.type = MESS_STOPCLOUD;
|
||||||
msg.channel = rank;
|
msg.data1 = 0;
|
||||||
|
msg.data2 = 0;
|
||||||
|
msg.data3 = 0;
|
||||||
|
msg.data4 = rank;
|
||||||
NetMessagePush(&msg);
|
NetMessagePush(&msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -23,11 +23,11 @@ void CDecor::NetPlaySound(short channel, POINT pos)
|
|||||||
{
|
{
|
||||||
NetMessage msg;
|
NetMessage msg;
|
||||||
|
|
||||||
msg.y = pos.y;
|
|
||||||
msg.x = pos.x;
|
|
||||||
msg.type = MESS_PLAYSOUND;
|
msg.type = MESS_PLAYSOUND;
|
||||||
msg.data1 = 0;
|
msg.data1 = 0;
|
||||||
msg.channel = channel;
|
msg.data2 = pos.x;
|
||||||
|
msg.data3 = pos.y;
|
||||||
|
msg.data4 = channel;
|
||||||
NetMessagePush(&msg);
|
NetMessagePush(&msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -36,11 +36,11 @@ void CDecor::NetStopSound(short channel)
|
|||||||
{
|
{
|
||||||
NetMessage msg;
|
NetMessage msg;
|
||||||
|
|
||||||
msg.data1 = 0;
|
|
||||||
msg.x = 0;
|
|
||||||
msg.y = 0;
|
|
||||||
msg.type = MESS_STOPSOUND;
|
msg.type = MESS_STOPSOUND;
|
||||||
msg.channel = channel;
|
msg.data1 = 0;
|
||||||
|
msg.data2 = 0;
|
||||||
|
msg.data3 = 0;
|
||||||
|
msg.data4 = channel;
|
||||||
NetMessagePush(&msg);
|
NetMessagePush(&msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,19 +48,19 @@ void CDecor::NetDataFlush()
|
|||||||
{
|
{
|
||||||
for (int i = 0; i < MAXNETPLAYER; i++)
|
for (int i = 0; i < MAXNETPLAYER; i++)
|
||||||
{
|
{
|
||||||
m_netPos[i].x = 0;
|
m_netBlupiPos[i].x = 0;
|
||||||
m_netPos[i].y = 0;
|
m_netBlupiPos[i].y = 0;
|
||||||
m_netIcons[i] = -1;
|
m_netBlupiIcon[i] = -1;
|
||||||
m_netUnk1[i] = 0;
|
m_netBlupiSec[i] = 0;
|
||||||
m_netUnk2[i] = 0;
|
m_netBlupiTransport[i] = 0;
|
||||||
m_netTransports[i] = 0;
|
m_netTransports[i] = 0;
|
||||||
m_netPlayerPacketsReceived[i] = 0;
|
m_netTimes[i] = 0;
|
||||||
m_netPlayerPacketsReceived2[i] = 0;
|
m_netPrevTimes[i] = 0;
|
||||||
m_netTimeSincePacket[i] = 0;
|
m_netTimeSincePacket[i] = 0;
|
||||||
m_netVitesses[i].x = 0;
|
m_netVitesses[i].x = 0;
|
||||||
m_netVitesses[i].y = 0;
|
m_netVitesses[i].y = 0;
|
||||||
m_netUnk4[i].x = 0;
|
m_netBlupiPrevPos[i].x = 0;
|
||||||
m_netUnk4[i].y = 0;
|
m_netBlupiPrevPos[i].y = 0;
|
||||||
}
|
}
|
||||||
m_netPacketsSent = 0;
|
m_netPacketsSent = 0;
|
||||||
m_netPacketsSent2 = 0;
|
m_netPacketsSent2 = 0;
|
||||||
@ -70,57 +70,305 @@ void CDecor::NetDataFlush()
|
|||||||
NetMessageIndexFlush();
|
NetMessageIndexFlush();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDecor::NetFUN_155e0(BYTE _foo, short _bar)
|
void CDecor::NetSendBarePacket(BYTE type, short num)
|
||||||
{
|
{
|
||||||
char data[4];
|
char data[4];
|
||||||
data[0] = 4;
|
data[0] = 4;
|
||||||
data[1] = _foo;
|
data[1] = type;
|
||||||
data[2] = _bar & 0xff;
|
data[2] = num & 0xff;
|
||||||
data[3] = _bar >> 8;
|
data[3] = num >> 8;
|
||||||
m_pNetwork->Send(&data, 4, DPSEND_GUARANTEED);
|
m_pNetwork->Send(&data, 4, DPSEND_GUARANTEED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDecor::TreatNetData()
|
void CDecor::TreatNetData()
|
||||||
{
|
{
|
||||||
|
NetPacket pack;
|
||||||
|
NetMessage* pMsg;
|
||||||
|
int i, j, dt;
|
||||||
|
int flag = 0;
|
||||||
|
int player;
|
||||||
|
int foo;
|
||||||
|
char res[100];
|
||||||
|
char text[100];
|
||||||
|
|
||||||
|
BOOL recentSenders[MAXNETPLAYER];
|
||||||
|
|
||||||
|
if ((m_netMessageIndex1 != 0 ||
|
||||||
|
m_blupiIcon != m_netPacketIcon ||
|
||||||
|
m_blupiPos != m_netPacketPos) &&
|
||||||
|
!m_bNetPacked || m_time % 2 == 0)
|
||||||
|
{
|
||||||
|
m_netPacketPos = m_blupiPos;
|
||||||
|
m_netPacketIcon = m_blupiIcon;
|
||||||
|
pack.time = m_time;
|
||||||
|
pack.keyPress = m_keyPress;
|
||||||
|
pack.blupiPosX = m_blupiPos.x;
|
||||||
|
pack.blupiPosY = m_blupiPos.y;
|
||||||
|
pack.blupiIcon = m_blupiIcon;
|
||||||
|
pack.size = sizeof(pack);
|
||||||
|
pack.type = 1;
|
||||||
|
pack.blupiSec = m_blupiSec;
|
||||||
|
pack.blupiChannel = m_blupiChannel;
|
||||||
|
pack.blupiTransport = m_blupiTransport;
|
||||||
|
pack.nbMessages = 0;
|
||||||
|
for (i = 0; i < MAXMESSAGEPERPACKET; i++)
|
||||||
|
{
|
||||||
|
if (!NetMessagePop(&pack.messages[i]))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pack.nbMessages++;
|
||||||
|
if (pack.messages[i].type == MESS_OBJECTSTART ||
|
||||||
|
pack.messages[i].type == MESS_OBJECTDELETE)
|
||||||
|
{
|
||||||
|
if (pack.messages[i].data4 != TYPE_EXPLO1 &&
|
||||||
|
pack.messages[i].data4 != TYPE_EXPLO2 &&
|
||||||
|
pack.messages[i].data4 != TYPE_EXPLO3 &&
|
||||||
|
pack.messages[i].data4 != TYPE_EXPLO4 &&
|
||||||
|
pack.messages[i].data4 != TYPE_EXPLO5 &&
|
||||||
|
pack.messages[i].data4 != TYPE_EXPLO6 &&
|
||||||
|
pack.messages[i].data4 != TYPE_EXPLO7 &&
|
||||||
|
pack.messages[i].data4 != TYPE_EXPLO8 &&
|
||||||
|
pack.messages[i].data4 != TYPE_EXPLO9 &&
|
||||||
|
pack.messages[i].data4 != TYPE_EXPLO10 &&
|
||||||
|
pack.messages[i].data4 != TYPE_SPLOUTCH1 &&
|
||||||
|
pack.messages[i].data4 != TYPE_SPLOUTCH2 &&
|
||||||
|
pack.messages[i].data4 != TYPE_SPLOUTCH3 &&
|
||||||
|
pack.messages[i].data4 != TYPE_TENTACULE &&
|
||||||
|
pack.messages[i].data4 != TYPE_PLOUF &&
|
||||||
|
pack.messages[i].data4 != TYPE_BLUP &&
|
||||||
|
pack.messages[i].data4 != TYPE_MAGICTRACK &&
|
||||||
|
pack.messages[i].data4 != TYPE_SHIELDTRACK &&
|
||||||
|
pack.messages[i].data4 != TYPE_TRESORTRACK &&
|
||||||
|
pack.messages[i].data4 != TYPE_TIPLOUF &&
|
||||||
|
pack.messages[i].data4 != TYPE_INVERTSTART &&
|
||||||
|
pack.messages[i].data4 != TYPE_INVERTSTOP &&
|
||||||
|
pack.messages[i].data4 != TYPE_POLLUTION)
|
||||||
|
{
|
||||||
|
flag = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pack.unk12 = flag;
|
||||||
|
m_pNetwork->Send(&pack, sizeof(NetMessage) * pack.nbMessages + 20, flag);
|
||||||
|
m_netPacketsSent++;
|
||||||
|
if (flag) m_netPacketsSent2++;
|
||||||
|
}
|
||||||
|
|
||||||
|
ZeroMemory(&recentSenders, sizeof(recentSenders));
|
||||||
|
|
||||||
|
for (i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
if (!m_pNetwork->Receive(&pack, sizeof(pack), (LPDWORD)&player))
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pack.type == 1)
|
||||||
|
{
|
||||||
|
m_netPacketsReceived++;
|
||||||
|
if (pack.unk12) m_netPacketsReceived2++;
|
||||||
|
|
||||||
|
if (player < MAXNETPLAYER)
|
||||||
|
{
|
||||||
|
if (pack.time > m_netTimes[player])
|
||||||
|
{
|
||||||
|
m_netPrevTimes[player] = m_netTimes[player];
|
||||||
|
recentSenders[player] = TRUE;
|
||||||
|
m_netTimes[player] = pack.time;
|
||||||
|
m_netBlupiPos[player].x = pack.blupiPosX;
|
||||||
|
m_netBlupiPos[player].y = pack.blupiPosY;
|
||||||
|
m_netBlupiIcon[player] = pack.blupiIcon;
|
||||||
|
m_netBlupiSec[player] = pack.blupiSec;
|
||||||
|
m_netBlupiTransport[player] = pack.blupiTransport;
|
||||||
|
dt = pack.time - m_netPrevTimes[player];
|
||||||
|
if (dt <= 0)
|
||||||
|
{
|
||||||
|
m_netVitesses[player] = POINT(0, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_netVitesses[player] = (m_netBlupiPos[player] - m_netBlupiPrevPos[player]) / dt;
|
||||||
|
}
|
||||||
|
m_netBlupiPrevPos[player] = m_netBlupiPos[player];
|
||||||
|
m_netTimeSincePacket[player] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (j = 0; j < pack.nbMessages; j++)
|
||||||
|
{
|
||||||
|
pMsg = &pack.messages[j];
|
||||||
|
switch (pMsg->type)
|
||||||
|
{
|
||||||
|
case MESS_OBJECTSTART:
|
||||||
|
ObjectStart(POINT(pMsg->data2, pMsg->data3), pMsg->data4, pMsg->data1, FALSE);
|
||||||
|
break;
|
||||||
|
case MESS_OBJECTDELETE:
|
||||||
|
ObjectDelete(POINT(pMsg->data2, pMsg->data3), pMsg->data4, FALSE);
|
||||||
|
break;
|
||||||
|
case MESS_MODIFDECOR:
|
||||||
|
ModifDecor(POINT(pMsg->data2, pMsg->data3), pMsg->data4, FALSE);
|
||||||
|
break;
|
||||||
|
case MESS_PLAYSOUND:
|
||||||
|
m_pSound->PlayImage(pMsg->data4, POINT(pMsg->data2, pMsg->data3) - m_posDecor, -1);
|
||||||
|
break;
|
||||||
|
case MESS_STOPSOUND:
|
||||||
|
m_pSound->StopSound(pMsg->data4);
|
||||||
|
break;
|
||||||
|
case MESS_ASCENSEURSTART:
|
||||||
|
NetAscenseurSynchro(pMsg->data4, STEP_STOPSTART);
|
||||||
|
break;
|
||||||
|
case MESS_ASCENSEUREND:
|
||||||
|
NetAscenseurSynchro(pMsg->data4, STEP_STOPEND);
|
||||||
|
break;
|
||||||
|
case MESS_STOPCLOUD:
|
||||||
|
if (pMsg->data4 == m_team)
|
||||||
|
{
|
||||||
|
m_blupiCloud = FALSE;
|
||||||
|
m_jauges[JAUGE_POWER].SetHide(TRUE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (pack.type == PK_LEAVE)
|
||||||
|
{
|
||||||
|
LoadString(257, res, 100);
|
||||||
|
sprintf(text, res, m_pNetwork->m_players[player].name);
|
||||||
|
NotifPush(text);
|
||||||
|
m_pNetwork->m_players[player].bIsPresent = 0;
|
||||||
|
m_netBlupiIcon[player] = -1;
|
||||||
|
}
|
||||||
|
if (pack.type == PK_LOST)
|
||||||
|
{
|
||||||
|
LoadString(258, res, 100);
|
||||||
|
sprintf(text, res, m_pNetwork->m_players[player].name);
|
||||||
|
NotifPush(text);
|
||||||
|
m_pNetwork->m_players[player].bIsPresent = 0;
|
||||||
|
m_netBlupiIcon[player] = -1;
|
||||||
|
}
|
||||||
|
if (pack.type == PK_DIE)
|
||||||
|
{
|
||||||
|
if (pack.keyPress == 0)
|
||||||
|
{
|
||||||
|
LoadString(261, res, 100);
|
||||||
|
}
|
||||||
|
else if (pack.keyPress == 1)
|
||||||
|
{
|
||||||
|
LoadString(260, res, 100);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LoadString(259, res, 100);
|
||||||
|
}
|
||||||
|
sprintf(text, res, m_pNetwork->m_players[player].name, pack.keyPress);
|
||||||
|
NotifPush(text);
|
||||||
|
}
|
||||||
|
if (pack.type == PK_PAUSE)
|
||||||
|
{
|
||||||
|
m_bPause = pack.keyPress;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < MAXNETPLAYER; i++)
|
||||||
|
{
|
||||||
|
if (!recentSenders[i])
|
||||||
|
{
|
||||||
|
DoNetSmooth(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDecor::DoNetSmooth(int player)
|
void CDecor::DoNetSmooth(int player)
|
||||||
{
|
{
|
||||||
|
POINT start, end;
|
||||||
|
RECT rect;
|
||||||
|
|
||||||
|
if (m_bNetMovePredict && m_netBlupiIcon[player] != -1)
|
||||||
|
{
|
||||||
|
if (m_netTimeSincePacket[player] < 5)
|
||||||
|
{
|
||||||
|
start = m_netBlupiPos[player];
|
||||||
|
end = start + m_netVitesses[player];
|
||||||
|
rect = RECT(start.x + 12, start.y + 11, start.x + DIMBLUPIX - 12, start.y + DIMBLUPIY - 2);
|
||||||
|
TestPath(rect, start, &end);
|
||||||
|
m_netBlupiPos[player] = end;
|
||||||
|
}
|
||||||
|
m_netTimeSincePacket[player]++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDecor::NetAdjustToLift()
|
void CDecor::NetAdjustToLift()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < MAXNETPLAYER; i++)
|
for (int i = 0; i < MAXNETPLAYER; i++)
|
||||||
{
|
{
|
||||||
if (m_netPos[i].x != -1 && m_netTransports[i] >= 0 && m_netTransports[i] < MAXMOVEOBJECT)
|
if (m_netBlupiPos[i].x != -1 && m_netTransports[i] >= 0 && m_netTransports[i] < MAXMOVEOBJECT)
|
||||||
{
|
{
|
||||||
m_netPos[i].y = m_moveObject[m_netTransports[i]].posCurrent.y - 58;
|
m_netBlupiPos[i].y = m_moveObject[m_netTransports[i]].posCurrent.y - (DIMBLUPIY - 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDecor::FUN_15da0(int index, short step)
|
void CDecor::NetAscenseurSynchro(int index, short step)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
POINT delta;
|
||||||
|
MoveObject* otherMob;
|
||||||
|
MoveObject* mob = &m_moveObject[index];
|
||||||
|
|
||||||
|
mob->step = step;
|
||||||
|
mob->time = 0;
|
||||||
|
delta.x = abs(mob->posEnd.x - mob->posStart.x);
|
||||||
|
delta.y = abs(mob->posEnd.y - mob->posStart.y);
|
||||||
|
|
||||||
|
for (i = 0; i < MAXMOVEOBJECT; i++)
|
||||||
|
{
|
||||||
|
otherMob = &m_moveObject[i];
|
||||||
|
if (i != index && otherMob->type == mob->type)
|
||||||
|
{
|
||||||
|
if (otherMob->stepAdvance == mob->stepAdvance &&
|
||||||
|
otherMob->stepRecede == mob->stepRecede &&
|
||||||
|
otherMob->timeStopStart == mob->timeStopStart &&
|
||||||
|
otherMob->timeStopEnd == mob->timeStopEnd)
|
||||||
|
{
|
||||||
|
otherMob->step = step;
|
||||||
|
otherMob->time = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CDecor::NetPlayerCollide(POINT pos, int* out)
|
void CDecor::NetPlayerCollide(POINT pos, int* out)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
tagRECT rect1;
|
RECT rect1;
|
||||||
RECT rect2;
|
RECT rect2;
|
||||||
RECT rect3;
|
RECT rect3;
|
||||||
|
|
||||||
rect2.right = pos.x + 44;
|
|
||||||
rect2.left = pos.x + 16;
|
rect2.left = pos.x + 16;
|
||||||
rect2.top = pos.y + 11;
|
rect2.top = pos.y + 11;
|
||||||
rect2.bottom = pos.y + 58;
|
rect2.right = pos.x + DIMBLUPIX - 16;
|
||||||
|
rect2.bottom = pos.y + DIMBLUPIY - 2;
|
||||||
|
|
||||||
// more
|
for (i = 0; i < MAXNETPLAYER; i++)
|
||||||
|
{
|
||||||
|
if (m_netBlupiIcon[i] != -1)
|
||||||
|
{
|
||||||
|
if (m_netBlupiSec[i] != SEC_HIDE)
|
||||||
|
{
|
||||||
|
rect1.left = m_netBlupiPos[i].x + 16;
|
||||||
|
rect1.top = m_netBlupiPos[i].y + 11;
|
||||||
|
rect1.right = m_netBlupiPos[i].x + DIMBLUPIX - 16;
|
||||||
|
rect1.bottom = m_netBlupiPos[i].y + DIMBLUPIY - 2;
|
||||||
|
}
|
||||||
|
if (IntersectRect(&rect3, &rect1, &rect2))
|
||||||
|
{
|
||||||
|
*out = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*out = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDecor::NetMessageIndexFlush()
|
void CDecor::NetMessageIndexFlush()
|
||||||
@ -150,11 +398,13 @@ BOOL CDecor::NetMessagePush(NetMessage* message)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL CDecor::NetMessagePop(NetMessage* message)
|
BOOL CDecor::NetMessagePop(NetMessage* out_msg)
|
||||||
{
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
if (m_netMessageIndex1 == 0) return FALSE;
|
if (m_netMessageIndex1 == 0) return FALSE;
|
||||||
|
|
||||||
CopyMemory(message, &m_netMessages[m_netMessageIndex3], sizeof(NetMessage));
|
CopyMemory(out_msg, &m_netMessages[m_netMessageIndex3], sizeof(NetMessage));
|
||||||
m_netMessageIndex1--;
|
m_netMessageIndex1--;
|
||||||
m_netMessageIndex3++;
|
m_netMessageIndex3++;
|
||||||
if (m_netMessageIndex3 == MAXNETMESSAGE)
|
if (m_netMessageIndex3 == MAXNETMESSAGE)
|
||||||
|
@ -52,11 +52,10 @@ MoveObject;
|
|||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
char type;
|
short type;
|
||||||
char data1;
|
|
||||||
short x;
|
short x;
|
||||||
short y;
|
short y;
|
||||||
short channel;
|
short z;
|
||||||
}
|
}
|
||||||
NetMessage;
|
NetMessage;
|
||||||
|
|
||||||
@ -344,7 +343,7 @@ public:
|
|||||||
void StartSploutchGlu(POINT pos);
|
void StartSploutchGlu(POINT pos);
|
||||||
BOOL ObjectStart(POINT pos, int type, int speed);
|
BOOL ObjectStart(POINT pos, int type, int speed);
|
||||||
BOOL ObjectStart(POINT pos, int type, int speed, BOOL bMulti);
|
BOOL ObjectStart(POINT pos, int type, int speed, BOOL bMulti);
|
||||||
BOOL ObjectDelete(POINT pos, int type);
|
BOOL ObjectDelete(POINT pos, int type, BOOL bMulti = FALSE);
|
||||||
void MoveObjectStep();
|
void MoveObjectStep();
|
||||||
void MoveObjectStepLine(int i);
|
void MoveObjectStepLine(int i);
|
||||||
void MoveObjectStepIcon(int i);
|
void MoveObjectStepIcon(int i);
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
#define MAXFIFOPOS 10
|
#define MAXFIFOPOS 10
|
||||||
#define MAXCHAT 6
|
#define MAXCHAT 6
|
||||||
#define MAXSAVE 6
|
#define MAXSAVE 6
|
||||||
#define LIFT_RANGE_Y 30
|
|
||||||
#define MAXDEMO 9999
|
#define MAXDEMO 9999
|
||||||
#define MAXINDEX 20
|
#define MAXINDEX 20
|
||||||
|
|
||||||
|
@ -5091,7 +5091,7 @@ error:
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CEvent::SetLives(int lives)
|
void CEvent::SetNbVies(int lives)
|
||||||
{
|
{
|
||||||
m_lives = lives;
|
m_lives = lives;
|
||||||
}
|
}
|
||||||
@ -5842,4 +5842,26 @@ BOOL CEvent::CurrentWrite(int rank)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Passe les images d'introduction.
|
||||||
|
|
||||||
|
void CEvent::IntroStep()
|
||||||
|
{
|
||||||
|
m_introTime++;
|
||||||
|
|
||||||
|
if (m_introTime > 20 * 3)
|
||||||
|
{
|
||||||
|
if (m_phase == WM_PHASE_INTRO1)
|
||||||
|
{
|
||||||
|
ChangePhase(WM_PHASE_INTRO2);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_phase == WM_PHASE_INTRO2)
|
||||||
|
{
|
||||||
|
ChangePhase(WM_PHASE_INIT);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -132,7 +132,7 @@ public:
|
|||||||
void DebugDisplay(char m);
|
void DebugDisplay(char m);
|
||||||
|
|
||||||
void IntroStep();
|
void IntroStep();
|
||||||
void SetLives(int lives);
|
void SetNbVies(int lives);
|
||||||
|
|
||||||
void ReadAll();
|
void ReadAll();
|
||||||
BOOL SaveState(int rank);
|
BOOL SaveState(int rank);
|
||||||
@ -204,8 +204,8 @@ protected:
|
|||||||
int m_quicksaveIndex;
|
int m_quicksaveIndex;
|
||||||
int m_mission;
|
int m_mission;
|
||||||
char m_gamerName[100];
|
char m_gamerName[100];
|
||||||
char m_gamerNameList[8][100];
|
char m_gamerNameList[MAXGAMER][100];
|
||||||
BOOL m_gamerExist[8];
|
BOOL m_gamerExist[MAXGAMER];
|
||||||
void* m_somethingJoystick;
|
void* m_somethingJoystick;
|
||||||
int m_menuIndex;
|
int m_menuIndex;
|
||||||
int m_choiceIndex;
|
int m_choiceIndex;
|
||||||
@ -213,7 +213,7 @@ protected:
|
|||||||
int m_menuDecor[11];
|
int m_menuDecor[11];
|
||||||
BOOL m_bMouseRelease;
|
BOOL m_bMouseRelease;
|
||||||
int m_private;
|
int m_private;
|
||||||
int m_bNamesExist[8];
|
int m_bNamesExist[MAXGAMER];
|
||||||
int m_fileIndex;
|
int m_fileIndex;
|
||||||
int m_maxMission;
|
int m_maxMission;
|
||||||
int m_phase;
|
int m_phase;
|
||||||
|
@ -556,7 +556,7 @@ BOOL CSound::PlayMusic(HWND hWnd, int music)
|
|||||||
sprintf(buf, "sound\\music%.3d.blp", music - 1);
|
sprintf(buf, "sound\\music%.3d.blp", music - 1);
|
||||||
strcat(string, buf);
|
strcat(string, buf);
|
||||||
|
|
||||||
m_hBassStream = BASS_MIDI_StreamCreateFile(FALSE, string, 0, 0, BASS_SAMPLE_LOOP, 0);
|
m_hBassStream = BASS_MIDI_StreamCreateFile(FALSE, string, 0, 0, BASS_SAMPLE_LOOP | BASS_MIDI_DECAYEND | BASS_MIDI_NOCROP, 0);
|
||||||
BASS_ChannelSetAttribute(m_hBassStream, BASS_ATTRIB_VOL, table[m_midiVolume]);
|
BASS_ChannelSetAttribute(m_hBassStream, BASS_ATTRIB_VOL, table[m_midiVolume]);
|
||||||
BASS_ChannelSetAttribute(m_hBassStream, BASS_ATTRIB_MIDI_REVERB, 0);
|
BASS_ChannelSetAttribute(m_hBassStream, BASS_ATTRIB_MIDI_REVERB, 0);
|
||||||
BASS_ChannelStart(m_hBassStream);
|
BASS_ChannelStart(m_hBassStream);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user