1
0
mirror of https://github.com/jummy0/sb2-decomp synced 2025-03-15 04:24:48 +01:00
This commit is contained in:
jummy 2024-08-16 21:24:15 -05:00
parent 9082164471
commit 561540331b
59 changed files with 1301 additions and 11028 deletions

4
.gitignore vendored
View File

@ -7,3 +7,7 @@
/Debug
/x64
/Speedy E.e424a3cb
/DATA
/IMAGE*
/MOVIE
/SOUND

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "dxsdk3"]
path = dxsdk3
url = https://github.com/masonmc/dxsdk3.git

Binary file not shown.

BIN
RCa19860 Normal file

Binary file not shown.

BIN
RCb19860 Normal file

Binary file not shown.

BIN
RCc19860 Normal file

Binary file not shown.

BIN
RCd19860 Normal file

Binary file not shown.

BIN
arrow.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

BIN
arrowdl.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

BIN
arrowdow.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

BIN
arrowdr.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

BIN
arrowlef.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

BIN
arrowrig.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

BIN
arrowul.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

BIN
arrowup.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

BIN
arrowur.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

BIN
blupi-d.aps Normal file

Binary file not shown.

BIN
blupi-e.aps Normal file

Binary file not shown.

BIN
blupi-f.aps Normal file

Binary file not shown.

View File

@ -33,14 +33,14 @@
// Variables Globals
HWND g_hWnd; // handle à la fenêtre
HWND g_hWnd; // handle à la fenètre
CEvent* g_pEvent = NULL;
CPixmap* g_pPixmap = NULL; // pixmap principal
CSound* g_pSound = NULL; // sound principal
CMovie* g_pMovie = NULL; // movie principal
CDecor* g_pDecor = NULL;
CNetwork* g_pNetwork;
char g_CDPath[MAX_PATH]; // chemin d'accs au CD-Rom
char g_CDPath[MAX_PATH]; // chemin d'accès au CD-Rom
BOOL g_bFullScreen = FALSE; // FALSE si mode de test
int g_speedRate = 1;
int g_timerInterval = 50; // inverval = 50ms
@ -51,7 +51,7 @@ BOOL g_bTrueColorBack;
BOOL g_bTrueColorDecor;
BOOL g_bCDAudio;
int g_something;
MMRESULT g_updateTimer; // timer général
MMRESULT g_updateTimer; // timer général
BOOL g_bActive = TRUE; // is application active ?
BOOL g_bTermInit = FALSE; // initialisation en cours
int g_objectMax;
@ -62,7 +62,7 @@ int g_exploMax;
UINT g_lastPhase = 999;
// Lit un numéro décimal.
// Lit un numéro décimal.
int GetNum(char *p)
{
@ -233,7 +233,7 @@ BOOL ReadConfig (LPSTR lpCmdLine)
return TRUE;
}
// Mise jour principale. [TODO: Rewrite Variables]
// Mise à jour principale. [TODO: Rewrite Variables]
void UpdateFrame(void)
{
@ -364,7 +364,7 @@ int Benchmark()
}
// Restitue le jeu après une activation en mode fullScreen.
// Restitue le jeu après une activation en mode fullScreen.
BOOL RestoreGame()
{
@ -374,7 +374,7 @@ BOOL RestoreGame()
return g_pPixmap->Restore();
}
// Libère le jeu avant une désactivation en mode fullScreen.
// Libère le jeu avant une désactivation en mode fullScreen.
BOOL FlushGame()
{
@ -506,7 +506,7 @@ LRESULT CALLBACK WindowProc (HWND hWnd, UINT message,
SetWindowTextA(hWnd, "Blupi");
if ( g_pSound != NULL ) g_pSound->RestartMusic();
}
else // désactive ?
else // désactive ?
{
if ( g_bFullScreen )
{
@ -710,7 +710,7 @@ static BOOL DoInit(HINSTANCE hInstance, LPSTR lpCmdLine, int nCmdShow)
return InitFail("Game not correctly installed", FALSE);
}
// Crée le pixmap principal.
// Crée le pixmap principal.
g_pPixmap = new CPixmap;
if (g_pPixmap == NULL) return InitFail("New pixmap", TRUE);

BIN
blupi.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
blupi.rct Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 326 B

After

Width:  |  Height:  |  Size: 326 B

5856
ddraw.h

File diff suppressed because it is too large Load Diff

View File

@ -16,7 +16,7 @@
#include "ddutil.h"
#include "misc.h"
#pragma warning (disable :4996)
// Le message :

View File

@ -1,29 +1,26 @@
/*==========================================================================
*
* Copyright (C) 1995 Microsoft Corporation. All Rights Reserved.
*
* File: ddutil.cpp
* Content: Routines for loading bitmap and palettes from resources
*
***************************************************************************/
#pragma once
*
* Copyright (C) 1995 Microsoft Corporation. All Rights Reserved.
*
* File: ddutil.cpp
* Content: Routines for loading bitmap and palettes from resources
*
***************************************************************************/
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif /* __cplusplus */
extern void DDSetDebug(BOOL bDebug);
extern IDirectDrawSurface * DDConnectBitmap(IDirectDraw *pdd, HBITMAP hbm);
extern IDirectDrawPalette * DDLoadPalette(IDirectDraw *pdd, LPCSTR szBitmap);
extern IDirectDrawSurface * DDLoadBitmap(IDirectDraw *pdd, LPCSTR szBitmap, int dx, int dy);
extern HRESULT DDReLoadBitmap(IDirectDrawSurface *pdds, LPCSTR szBitmap);
extern HRESULT DDCopyBitmap(IDirectDrawSurface *pdds, HBITMAP hbm, int x, int y, int dx, int dy);
extern DWORD DDColorMatch(IDirectDrawSurface *pdds, COLORREF rgb);
extern HRESULT DDSetColorKey(IDirectDrawSurface *pdds, COLORREF rgb);
extern HRESULT DDSetColorKey2(IDirectDrawSurface *pdds, COLORREF rgb1, COLORREF rgb2);
extern void DDSetDebug(BOOL bDebug);
extern IDirectDrawSurface * DDConnectBitmap(IDirectDraw *pdd, HBITMAP hbm);
extern IDirectDrawPalette * DDLoadPalette(IDirectDraw *pdd, LPCSTR szBitmap);
extern IDirectDrawSurface * DDLoadBitmap(IDirectDraw *pdd, LPCSTR szBitmap, int dx, int dy);
extern HRESULT DDReLoadBitmap(IDirectDrawSurface *pdds, LPCSTR szBitmap);
extern HRESULT DDCopyBitmap(IDirectDrawSurface *pdds, HBITMAP hbm, int x, int y, int dx, int dy);
extern DWORD DDColorMatch(IDirectDrawSurface *pdds, COLORREF rgb);
extern HRESULT DDSetColorKey(IDirectDrawSurface *pdds, COLORREF rgb);
extern HRESULT DDSetColorKey2(IDirectDrawSurface *pdds, COLORREF rgb1, COLORREF rgb2);
/*
#ifdef __cplusplus
}
#endif /* __cplusplus */

View File

@ -4,8 +4,10 @@
#include "def.h"
#include "decor.h"
#include "misc.h"
#include "obstacle.h"
#include "dectables.h"
BOOL CDecor::BlitzActif(int celx, int cely)
BOOL CDecor::BlitzActif(POINT cel)
{
if (m_phase == WM_PHASE_BUILD) {
//TODO: rewrite this like a human
@ -13,14 +15,14 @@ BOOL CDecor::BlitzActif(int celx, int cely)
return 1 - (((m_time ^ foo) - foo & 1 ^ foo) == foo);
}
POINT pos = { celx * DIMOBJX, cely * DIMOBJY };
POINT pos = { cel.x * DIMOBJX, cel.y * DIMOBJY };
int num = m_time % 100;
if (m_blupiPos.x >= pos.x - 80 && m_blupiPos.x <= pos.x + 80 &&
m_blupiPos.y >= pos.y - 500 && m_blupiPos.y <= pos.y + 500)
{
if (m_time % 100 < 70 && cely > 0 && m_decor[celx][cely - 1].icon == 0x130)
if (m_time % 100 < 70 && cely > 0 && m_decor[cel.x][cel.y - 1].icon == 0x130)
{
PlaySound(SOUND_BLITZ, pos, 0);
}
@ -125,7 +127,7 @@ int CDecor::IsWorld(POINT pos)
{
return -1;
}
int icon = m_decor[pos.x / 64, pos.y / 64]->icon;
int icon = m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon;
if (icon >= 158 && icon <= 165)
{
return icon - 158 + 1;
@ -160,17 +162,17 @@ int CDecor::IsWorld(POINT pos)
void CDecor::ActiveSwitch(BOOL bState, POINT cel)
{
POINT pos;
pos.x = cel.x * 64;
pos.y = cel.y * 64;
pos.x = cel.x * DIMOBJX;
pos.y = cel.y * DIMOBJY;
ModifDecor(pos, bState ? 384 : 385);
PlaySoundB(bState ? 77 : 76, pos);
PlaySound(bState ? 77 : 76, pos);
cel.x -= 20;
for (int i = 0; i < 41; i++)
{
if (cel.x >= 0 && cel.x < 100 && m_decor[cel.x, cel.y]->icon == (bState ? 379 : 378))
{
pos.x = cel.x * 64;
pos.y = cel.y * 64;
pos.x = cel.x * DIMOBJX;
pos.y = cel.y * DIMOBJY;
ModifDecor(pos, bState ? 378 : 379);
}
cel.x++;
@ -190,7 +192,7 @@ int CDecor::GetTypeBarre(POINT pos)
{
return 0;
}
int icon = m_decor[pos.x / 64, pos.y / 64]->icon;
int icon = m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon;
if (icon != 138 && icon != 202)
{
return 0;
@ -199,7 +201,7 @@ int CDecor::GetTypeBarre(POINT pos)
{
return 1;
}
icon = m_decor[pos.x / 64, pos.y / 64 + 1]->icon;
icon = m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY + 1]->icon;
if (IsPassIcon(icon))
{
return 2;
@ -217,14 +219,14 @@ int CDecor::GetTypeBarre(POINT pos)
BOOL CDecor::IsLave(POINT pos)
{
pos.x += 30;
return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 68;
return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon == 68;
}
BOOL CDecor::IsPiege(POINT pos)
{
pos.x += 30;
pos.y += 60;
return pos.x % 64 >= 15 && pos.x % 64 <= 49 && pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 373;
return pos.x % 64 >= 15 && pos.x % 64 <= 49 && pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon == 373;
}
BOOL CDecor::IsGoutte(POINT pos, BOOL bAlways)
@ -238,7 +240,7 @@ BOOL CDecor::IsGoutte(POINT pos, BOOL bAlways)
{
return FALSE;
}
int icon = m_decor[pos.x / 64, pos.y / 64]->icon;
int icon = m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon;
if (bAlways)
{
return icon == 404 || icon == 410;
@ -249,7 +251,7 @@ BOOL CDecor::IsGoutte(POINT pos, BOOL bAlways)
BOOL CDecor::IsScie(POINT pos)
{
pos.x += 30;
return pos.x % 64 >= 4 && pos.x % 64 <= 60 && pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 378;
return pos.x % 64 >= 4 && pos.x % 64 <= 60 && pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon == 378;
}
BOOL CDecor::IsSwitch(POINT pos, POINT celSwitch)
@ -263,9 +265,9 @@ BOOL CDecor::IsSwitch(POINT pos, POINT celSwitch)
{
return FALSE;
}
celSwitch.x = pos.x / 64;
celSwitch.y = pos.y / 64;
return m_decor[pos.x / 64, pos.y / 64]->icon == 384 || m_decor[pos.x / 64, pos.y / 64]->icon == 385;
celSwitch.x = pos.x / DIMOBJX;
celSwitch.y = pos.y / DIMOBJY;
return m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon == 384 || m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon == 385;
}
BOOL CDecor::IsEcraseur(POINT pos)
@ -275,7 +277,7 @@ BOOL CDecor::IsEcraseur(POINT pos)
return FALSE;
}
pos.x += 30;
return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 317;
return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon == 317;
}
BOOL CDecor::IsBlitz(POINT pos, BOOL bAlways)
@ -286,8 +288,8 @@ BOOL CDecor::IsBlitz(POINT pos, BOOL bAlways)
return FALSE;
}
POINT tinyPoint;
tinyPoint.x = pos.x / 64;
tinyPoint.y = pos.y / 64;
tinyPoint.x = pos.x / DIMOBJX;
tinyPoint.y = pos.y / DIMOBJY;
return m_decor[tinyPoint.x, tinyPoint.y]->icon == 305 && (bAlways || BlitzActif(tinyPoint.x, tinyPoint.y));
}
@ -295,31 +297,31 @@ BOOL CDecor::IsRessort(POINT pos)
{
pos.x += 30;
pos.y += 60;
return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 211;
return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon == 211;
}
BOOL CDecor::IsTemp(POINT pos)
{
pos.x += 30;
pos.y += 60;
return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 324;
return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon == 324;
}
BOOL CDecor::IsBridge(POINT pos, POINT celBridge)
{
pos.x += 30;
pos.y += 60;
if (pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 364)
if (pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon == 364)
{
celBridge.x = pos.x / 64;
celBridge.y = pos.y / 64;
celBridge.x = pos.x / DIMOBJX;
celBridge.y = pos.y / DIMOBJY;
return TRUE;
}
pos.y -= 60;
if (pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon == 364)
if (pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon == 364)
{
celBridge.x = pos.x / 64;
celBridge.y = pos.y / 64;
celBridge.x = pos.x / DIMOBJX;
celBridge.y = pos.y / DIMOBJY;
return TRUE;
}
return FALSE;
@ -340,11 +342,11 @@ int CDecor::IsDoor(POINT pos, POINT celPorte)
pos.x += 30;
for (int i = 0; i < 2; i++)
{
if (pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 64, pos.y / 64]->icon >= 334 && m_decor[pos.x / 64, pos.y / 64]->icon <= 336)
if (pos.x >= 0 && pos.x < DIMOBJX * MAXCELX && pos.y >= 0 && pos.y < DIMOBJY * MAXCELY && m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon >= 334 && m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon <= 336)
{
celPorte.x = pos.x / 64;
celPorte.y = pos.y / 64;
return m_decor[pos.x / 64, pos.y / 64]->icon;
celPorte.x = pos.x / DIMOBJX;
celPorte.y = pos.y / DIMOBJY;
return m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon;
}
pos.x += num;
}
@ -353,19 +355,19 @@ int CDecor::IsDoor(POINT pos, POINT celPorte)
int CDecor::IsTeleporte(POINT pos)
{
if (pos.x % 64 > 6)
if (pos.x % DIMOBJX > 6)
{
return -1;
}
pos.x += 30;
pos.y -= 60;
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;
}
if (m_decor[pos.x / 64, pos.y / 64]->icon >= 330 && m_decor[pos.x / 64, pos.y / 64]->icon <= 333)
if (m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon >= 330 && m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon <= 333)
{
return m_decor[pos.x / 64, pos.y / 64]->icon;
return m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon;
}
return -1;
}
@ -401,7 +403,7 @@ BOOL CDecor::IsSurfWater(POINT pos)
{
return FALSE;
}
int icon = m_decor[(pos.x + 30) / 64, pos.y / 64]->icon;
int icon = m_decor[(pos.x + 30) / 64, pos.y / DIMOBJY]->icon;
int icon2 = m_decor[(pos.x + 30) / 64, (pos.y + BLUPISURF) / 64]->icon;
return icon != 92 && icon2 == 92;
}
@ -409,7 +411,7 @@ BOOL CDecor::IsSurfWater(POINT pos)
BOOL CDecor::IsDeepWater(POINT pos)
{
int num = (pos.x + 30) / 64;
int num2 = pos.y / 64;
int num2 = pos.y / DIMOBJY;
if (num < 0 || num >= 100 || num2 < 0 || num2 >= 100)
{
return FALSE;
@ -474,7 +476,7 @@ BOOL CDecor::IsVentillo(POINT pos)
{
return FALSE;
}
int icon = m_decor[pos.x / 64, pos.y / 64]->icon;
int icon = m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon;
if (icon < 126 || icon > 137)
{
return FALSE;
@ -528,7 +530,7 @@ BOOL CDecor::IsVentillo(POINT pos)
{
pos.x += tinyPoint.x;
pos.y += tinyPoint.y;
if (num != m_decor[pos.x / 64, pos.y / 64]->icon)
if (num != m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon)
{
break;
}
@ -539,12 +541,12 @@ BOOL CDecor::IsVentillo(POINT pos)
void CDecor::ModifDecor(POINT pos, int icon, BOOL bMulti)
{// TODO: this
int icon2 = m_decor[pos.x / 64, pos.y / 64]->icon;
int icon2 = m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon;
if (icon == -1 && icon >= 126 && icon2 <= 137)
{
ByeByeAdd(1, icon2, pos, 17.0, 1.0);
}
m_decor[pos.x / 64, pos.y / 64]->icon = icon;
m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon = icon;
}
BOOL CDecor::IsRightBorder(POINT pos, POINT offset)
@ -553,50 +555,44 @@ BOOL CDecor::IsRightBorder(POINT pos, POINT offset)
}
BOOL CDecor::IsFromage(int x, int y)
BOOL CDecor::IsFromage(POINT cel)
{
if (x < 0 || x >= 100 || y < 0 || y >= 100)
{
return FALSE;
}
int icon = m_decor[x, y]->icon;
if (!IsValidCel(cel)) return FALSE;
int icon = m_decor[cel.x][cel.y].icon;
return (icon >= 246 && icon <= 249) || icon == 339;
}
BOOL CDecor::IsGrotte(int x, int y)
BOOL CDecor::IsGrotte(POINT cel)
{
if (x < 0 || x >= 100 || y < 0 || y >= 100)
{
return FALSE;
}
if (!IsValidCel(cel)) return FALSE;
int icon = m_decor[x, y]->icon;
return icon = 284 || icon == 301 || icon == 337;
}
void CDecor::AdaptMidBorder(int x, int y)
void CDecor::AdaptMidBorder(POINT cel)
{
if (x < 0 || x >= 100 || y < 0 || y >= 100)
{
return;
}
if (!IsValidCel(cel)) return;
int num = 15;
if (!IsRightBorder(x, y + 1, 0, -1))
if (!IsRightBorder({ cel.x, cel.y + 1 }, { 0, -1 }))
{
num &= -2;
}
if (!IsRightBorder(x, y + 1, 0, 1))
if (!IsRightBorder({ cel.x, cel.y + 1 }, { 0, 1 }))
{
num &= -3;
}
if (!IsRightBorder(x + 1, y, -1, 0))
if (!IsRightBorder({ cel.x + 1, cel.y }, { -1, 0 }))
{
num &= -5;
}
if (!IsRightBorder(x - 1, y, 1, 0))
if (!IsRightBorder({ cel.x - 1, cel.y }, { 1, 0 }))
{
num &= -9;
}
int num2 = m_decor[x, y]->icon;
int num2 = m_decor[cel.x][cel.y].icon;
if (num2 == 156)
{
num2 = 35;

View File

@ -26,10 +26,10 @@ int CDecor::GetBlupiChannelActual()
void CDecor::GetBlupiInfo(BOOL* bHelico, BOOL* bJeep, BOOL* bSkate, BOOL* bNage)
{
bHelico = m_blupiHelico;
bJeep = (m_blupiJeep | m_blupiTank);
bSkate = m_blupiSkate;
bNage = (m_blupiNage | m_blupiSurf);
*bHelico = m_blupiHelico;
*bJeep = m_blupiJeep | m_blupiTank;
*bSkate = m_blupiSkate;
*bNage = m_blupiNage | m_blupiSurf;
}
void CDecor::BlupiSearchIcon()
@ -70,7 +70,6 @@ void CDecor::BlupiSearchIcon()
{
num3 = 15;
}
m_blupiRealRotation = (int)(m_blupiVitesseX * 2.0);
}
if (m_blupiOver)
{
@ -141,8 +140,8 @@ BOOL CDecor::BlupiIsGround()
if (m_blupiTransport == -1)
{
RECT rect = BlupiRect(m_blupiPos);
rect.top = m_blupiPos.y + 60 - 2;
rect.bottom = m_blupiPos.y + 60 - 1;
rect.top = m_blupiPos.y + DIMBLUPIY - 2;
rect.bottom = m_blupiPos.y + DIMBLUPIY - 1;
return DecorDetect(rect, TRUE);
}
else {
@ -156,59 +155,59 @@ RECT CDecor::BlupiRect(POINT pos)
if (m_blupiNage || m_blupiSurf)
{
result.left = pos.x + 12;
result.right = pos.x + 60 - 12;
if (m_blupiAction == 1)
result.right = pos.x + DIMBLUPIX - 12;
if (m_blupiAction == ACTION_STOP)
{
result.top = pos.y + 5;
result.bottom = pos.y + 60 - 10;
result.bottom = pos.y + DIMBLUPIY - 10;
}
else
{
result.top = pos.y + 15;
result.bottom = pos.y + 60 - 10;
result.bottom = pos.y + DIMBLUPIY - 10;
}
}
else if (m_blupiJeep)
{
result.left = pos.x + 2;
result.right = pos.x + 60 - 2;
result.right = pos.x + DIMBLUPIX - 2;
result.top = pos.y + 10;
result.bottom = pos.y + 60 - 2;
result.bottom = pos.y + DIMBLUPIY - 2;
}
else if (m_blupiTank)
{
result.left = pos.x + 2;
result.right = pos.x + 60 - 2;
result.right = pos.x + DIMBLUPIX - 2;
result.top = pos.y + 10;
result.bottom = pos.y + 60 - 2;
result.bottom = pos.y + DIMBLUPIY - 2;
}
else if (m_blupiOver)
{
result.left = pos.x + 2;
result.right = pos.x + 60 - 2;
result.right = pos.x + DIMBLUPIX - 2;
result.top = pos.y + 2;
result.bottom = pos.y + 60 - 2;
result.bottom = pos.y + DIMBLUPIY - 2;
}
else if (m_blupiBalloon)
{
result.left = pos.x + 10;
result.right = pos.x + 60 - 10;
result.right = pos.x + DIMBLUPIX - 10;
result.top = pos.y + 5;
result.bottom = pos.y + 60 - 2;
result.bottom = pos.y + DIMBLUPIY - 2;
}
else if (m_blupiEcrase)
{
result.left = pos.x + 5;
result.right = pos.x + 60 - 5;
result.right = pos.x + DIMBLUPIX - 5;
result.top = pos.y + 39;
result.bottom = pos.y + 60 - 2;
result.bottom = pos.y + DIMBLUPIY - 2;
}
else
{
result.left = pos.x + 12;
result.right = pos.x + 60 - 12;
result.right = pos.x + DIMBLUPIX - 12;
result.top = pos.y + 11;
result.bottom = pos.y + 60 - 2;
result.bottom = pos.y + DIMBLUPIY - 2;
}
return result;
}
@ -323,7 +322,7 @@ void CDecor::BlupiStep()
BlupiDead(75, -1);
m_blupiRestart = TRUE;
m_blupiAir = TRUE;
m_blupiPos.y = m_blupiPos.y / 64 * 64 + BLUPIOFFY;
m_blupiPos.y = m_blupipos.y / DIMOBJY * 64 + BLUPIOFFY;
PlaySound(8, m_blupiPos);
return;
}
@ -2978,7 +2977,7 @@ void CDecor::BlupiStep()
{
BlupiDead(76, -1);
m_blupiRestart = true;
m_blupiPos.y = m_blupiPos.y / 64 * 64 + BLUPIOFFY;
m_blupiPos.y = m_blupipos.y / DIMOBJY * 64 + BLUPIOFFY;
PlaySound(8, m_blupiPos);
}
if (IsPiege(m_blupiPos) && !m_blupiOver && !m_blupiJeep && !m_blupiTank && !m_blupiShield && !m_blupiHide && !m_bSuperBlupi && m_blupiFocus)
@ -3018,7 +3017,7 @@ void CDecor::BlupiStep()
BlupiDead(11, -1);
m_blupiRestart = true;
m_blupiAir = true;
m_blupiPos.y = m_blupiPos.y / 64 * 64 + BLUPIOFFY;
m_blupiPos.y = m_blupipos.y / DIMOBJY * 64 + BLUPIOFFY;
PlaySound(8, m_blupiPos);
}
if (IsEcraseur(m_blupiPos) && !m_blupiEcrase && !m_blupiShield && !m_blupiHide && !m_bSuperBlupi && m_blupiFocus)
@ -3071,7 +3070,7 @@ void CDecor::BlupiStep()
m_blupiVitesse.x = 0.0;
m_blupiVitesse.y = 0.0;
m_blupiFocus = false;
m_blupiPos.x = m_blupiPos.x / 64 * 64;
m_blupiPos.x = m_blupipos.x / DIMOBJX * 64;
PlaySound(71, m_blupiPos);
tinyPoint.x = m_blupiPos.x;
tinyPoint.y = m_blupiPos.y - 5;

View File

@ -249,7 +249,7 @@ void CDecor::PlaceItemFromMenu5(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64 + 2, cel.y * 64 + 4 };
pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 4 };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;
@ -268,7 +268,7 @@ void CDecor::PlaceItemFromMenu5(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64 + 2, cel.y * 64 };
pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;
@ -287,7 +287,7 @@ void CDecor::PlaceItemFromMenu5(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64, cel.y * 64 };
pMob->posStart = { cel.x * DIMOBJX, cel.y * DIMOBJY };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;
@ -324,7 +324,7 @@ void CDecor::PlaceItemFromMenu5(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64 + 2, cel.y * 64 + 8 };
pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 8 };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;
@ -394,7 +394,7 @@ void CDecor::PlaceItemFromMenu7(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64 + 2, cel.y * 64 + 4 };
pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 4 };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;
@ -413,7 +413,7 @@ void CDecor::PlaceItemFromMenu7(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64 + 2, cel.y * 64 + 8 };
pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 8 };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;
@ -432,7 +432,7 @@ void CDecor::PlaceItemFromMenu7(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64 + 2, cel.y * 64 + 8 };
pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 8 };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;
@ -451,7 +451,7 @@ void CDecor::PlaceItemFromMenu7(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64 + 2, cel.y * 64 + 8 };
pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 8 };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;
@ -470,7 +470,7 @@ void CDecor::PlaceItemFromMenu7(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64 + 2, cel.y * 64 + 6 };
pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 6 };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;
@ -489,7 +489,7 @@ void CDecor::PlaceItemFromMenu7(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64 + 2, cel.y * 64 + 4 };
pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 4 };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;
@ -508,7 +508,7 @@ void CDecor::PlaceItemFromMenu7(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64 + 2, cel.y * 64 + 4 };
pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 4 };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;
@ -538,7 +538,7 @@ void CDecor::PlaceItemFromMenu7(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64 + 2, cel.y * 64 + 6 };
pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 6 };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;
@ -571,7 +571,7 @@ void CDecor::PlaceItemFromMenu7(POINT cel, int index, BYTE flags, int currentIco
pMob->stepRecede = 1;
pMob->timeStopStart = 0;
pMob->timeStopEnd = 0;
pMob->posStart = { cel.x * 64 + 2, cel.y * 64 + 6 };
pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 6 };
pMob->posEnd = pMob->posStart;
pMob->posCurrent = pMob->posStart;
pMob->step = STEP_STOPSTART;

646
decor.cpp
View File

@ -13,7 +13,6 @@
#include "decor.h"
#include "text.h"
#include "misc.h"
#include "DECMOVE.h"
#include "event.h"
#include "dectables.h"
#include "jauge.h"
@ -37,11 +36,19 @@
#define TEXTDELAY 10 // tooltip popup delay
#define NOTIFDELAY 200
BOOL IsValidCel(POINT cel)
inline BOOL IsValidCel(POINT cel)
{
return cel.x >= 0 && cel.x < MAXCELX && cel.y >= 0 && cel.y < MAXCELY;
}
inline void CDecor::StopVehicleSound()
{
StopSound(SOUND_HELICOHIGH);
StopSound(SOUND_HELICOLOW);
StopSound(SOUND_JEEPHIGH);
StopSound(SOUND_JEEPLOW);
}
// Constructor
CDecor::CDecor()
@ -846,35 +853,76 @@ void CDecor::DrawInfo()
POINT pos;
char text[100];
if (m_phase == WM_PHASE_PLAY || WM_PHASE_PLAYTEST)
if (m_phase == WM_PHASE_PLAY || m_phase == WM_PHASE_PLAYTEST)
{
for (int i = 4; i != 0; i--) {
if (m_notifText[i] != '\0') {
pos.x = 10;
pos.y = 10;
DrawTextB(m_pPixmap, pos, m_notifText[i], 0);
DrawText(m_pPixmap, { 10, 10 }, m_notifText[i], 0);
}
}
if (m_nbVies > 0) {
pos.x = -15;
pos = { -15, 417 };
for (int i = 0; i < m_nbVies; i++) {
pos.y = 417;
m_pPixmap->QuickIcon(GetBlupiChannelStandard(), 48, pos);
m_pPixmap->QuickIcon(GetBlupiChannelActual(), 48, pos);
pos.x += 16;
}
}
if (m_blupiBullet > 0) {
pos.x = -15;
pos.y = 398;
pos = { 398, 442 };
for (int i = 0; i < m_blupiBullet; i++) {
m_pPixmap->QuickIcon(CHELEMENT, 176, pos);
pos.x += 4;
}
}
//TODO: more
if (m_blupiPerso > 0) {
m_pPixmap->QuickIcon(CHBUTTON, GetIconPerso(), { 465, 438 });
sprintf(text, "=_%d", m_blupiPerso);
DrawText(m_pPixmap, { 497, 452 }, text, FONTWHITE);
}
if (m_blupiDynamite > 0) {
m_pPixmap->QuickIcon(CHELEMENT, 252, { 505, 414 });
}
if (m_blupiCle | CLE_RED) {
m_pPixmap->QuickIcon(CHELEMENT, 215, { 520, 418 });
}
if (m_blupiCle | CLE_GREEN) {
m_pPixmap->QuickIcon(CHELEMENT, 222, { 530, 418 });
}
if (m_blupiCle | CLE_BLUE) {
m_pPixmap->QuickIcon(CHELEMENT, 229, { 540, 418 });
}
if ((m_mission != 1 && m_mission % 10 != 0) || m_bPrivate)
{
sprintf(text, "%d/%d", m_nbTresor, m_totalTresor);
DrawText(m_pPixmap, { 590, 452 }, text, FONTWHITE);
}
for (int i = 0; i < 2; i++)
{
if (!(m_jauges[i].GetHide())) m_jauges[i].Draw();
}
if (m_mission == 10 && m_phase == WM_PHASE_PLAY && !m_bPrivate)
{
switch (m_nbTresor)
{
case 0:
if (m_blupiPos.x > 212) m_blupiPos.x = 212;
break;
case 1:
if (m_blupiPos.x > 788) m_blupiPos.x = 788;
break;
}
// more...
}
}
}
@ -883,9 +931,9 @@ POINT CDecor::DecorNextAction()
int num = 0;
if (m_decorAction == 0 || m_bPause)
{
m_posDecor;
return m_posDecor;
}
POINT posDecor = m_posDecor;
POINT posDecor = m_posDecor;
while (table_decor_action[num] != 0)
{
if (m_decorAction == table_decor_action[num])
@ -901,7 +949,7 @@ POINT CDecor::DecorNextAction()
}
else
{
num2 = 6400 - (m_drawBounds.right - m_drawBounds.left);
num2 = DIMOBJX * MAXCELX - LXIMAGE;
}
if (posDecor.x < 0)
{
@ -917,7 +965,7 @@ POINT CDecor::DecorNextAction()
}
else
{
num2 = 6400 - (m_drawBounds.bottom - m_drawBounds.top);
num2 = DIMOBJY * MAXCELY - LYIMAGE;
}
if (posDecor.y < 0)
{
@ -967,11 +1015,11 @@ void CDecor::SetFieldD814(BOOL param)
m_bD814 = param;
}
void CDecor::PlaySoundB(int sound, POINT pos, BOOL bLocal)
void CDecor::PlaySound(int sound, POINT pos, BOOL bLocal)
{
if (!bLocal) NetPlaySound(sound, pos);
m_pSound->PlayImage(sound, { pos.x - m_posDecor.x, pos.y - m_posDecor.y }, -1);
m_pSound->PlayImage(sound, pos - m_posDecor, -1);
switch (sound) {
case SOUND_HELICOHIGH:
@ -1011,27 +1059,12 @@ void CDecor::StopSound(int sound)
void CDecor::AdaptMotorVehicleSound(POINT pos)
{
POINT blupiPos = pos;
blupiPos.x -= m_posDecor.x;
blupiPos.y -= m_posDecor.y;
POINT blupiPos = pos - m_posDecor;
if (m_bHelicoMarch)
{
m_pSound->PlayImage(SOUND_HELICOHIGH, blupiPos);
}
if (m_bHelicoStop)
{
m_pSound->PlayImage(SOUND_HELICOLOW, blupiPos);
}
if (m_bJeepMarch)
{
m_pSound->PlayImage(SOUND_JEEPHIGH, blupiPos);
}
if (m_bJeepStop)
{
m_pSound->PlayImage(SOUND_JEEPLOW, blupiPos);
}
return;
if (m_bHelicoMarch) m_pSound->PlayImage(SOUND_HELICOHIGH, blupiPos);
if (m_bHelicoStop) m_pSound->PlayImage(SOUND_HELICOLOW, blupiPos);
if (m_bJeepMarch) m_pSound->PlayImage(SOUND_JEEPHIGH, blupiPos);
if (m_bJeepStop) m_pSound->PlayImage(SOUND_JEEPLOW, blupiPos);
}
void CDecor::VehicleSoundsPhase(int phase)
@ -1104,289 +1137,279 @@ void CDecor::SetPause(BOOL bPause)
m_bPause = bPause;
}
void CDecor::InitializeDoors(GameData *gameData)
void CDecor::InitializeDoors(BYTE* doors)
{
for (int i = 0; i < MAXMOVEOBJECT; i++)
{
gameData[i] = m_doors[i];
doors[i] = m_doors[i];
}
}
void CDecor::MemorizeDoors(BYTE* doors)
{
int i;
i = 0;
do
for (int i = 0; i < MAXMOVEOBJECT; i++)
{
m_doors[i] = doors[i];
i++;
} while (i < 200);
return;
}
}
void CDecor::SetAllMissions(BOOL bAllMissions)
{
m_bCheatDoors = CheatDoors;
m_bPrivate, m_mission->AdaptDoors;
m_bCheatDoors = bAllMissions;
AdaptDoors(m_bPrivate, m_mission);
return;
}
void CDecor::CheatAction(int cheat)
{
if (cheat == 2) // cleanall
{
for (int i = 0; i < MAXMOVEOBJECT; i++)
{
if (m_moveObject[i].type == 2 || m_moveObject[i].type == 3 || m_moveObject[i].type == 96 ||
m_moveObject[i].type == 97 || m_moveObject[i].type == 4 || m_moveObject[i].type == 16 ||
m_moveObject[i].type == 17 || m_moveObject[i].type == 20 || m_moveObject[i].type == 44 ||
m_moveObject[i].type == 54 || m_moveObject[i].type == 32 || m_moveObject[i].type == 33)
{
m_decorAction = 1;
m_decorPhase = 0;
m_moveObject[i].type = 8;
m_moveObject[i].phase = 0;
MoveObject* mob;
moveObject = m_moveObject;
int num = i;
moveObject[num]->posCurrent.x = moveObject[num]->posCurrent.x - 34;
moveObject2 = m_moveObject;
int num2 = i;
moveObject2[num2]->posCurrent.y = moveObject2[num2].posCurrent.y - 34;
m_moveObject[i].posStart = m_moveObject[i].posCurrent;
m_moveObject[i].posEnd = m_moveObject[i].posCurrent;
MoveObjectStepIcon(i);
PlaySound(10, m_moveObject[i].posCurrent);
}
}
}
if (cheat == 6) // funskate
{
m_blupiAir = FALSE;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = FALSE;
m_blupiTank = FALSE;
m_blupiSkate = TRUE;
m_blupiNage = FALSE;
m_blupiSurf = FALSE;
m_blupiVent = FALSE;
m_blupiSuspend = FALSE;
m_pSound->StopSound(SOUND_HELICOHIGH);
StopSound(18);
StopSound(29);
StopSound(31);
}
if (cheat == 7) // givecopter
{
m_blupiAir = FALSE;
m_blupiHelico = TRUE;
m_blupiOver = FALSE;
m_blupiJeep = FALSE;
m_blupiTank = FALSE;
m_blupiSkate = FALSE;
m_blupiNage = FALSE;
m_blupiSurf = FALSE;
m_blupiVent = FALSE;
m_blupiSuspend = FALSE;
}
if (cheat == 8) // jeepdrive
{
m_blupiAir = FALSE;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = TRUE;
m_blupiTank = FALSE;
m_blupiSkate = FALSE;
m_blupiNage = FALSE;
m_blupiSurf = FALSE;
m_blupiVent = FALSE;
m_blupiSuspend = FALSE;
}
if (cheat == 9) // alltreasure
{
for (int i = 0; i < MAXMOVEOBJECT; i++)
{
if (m_moveObject[i].type == 5)
{
m_moveObject[i].type == 0;
m_nbTresor++;
OpenDoorsTresor();
PlaySound(11, m_moveObject[i].posCurrent);
}
}
}
if (cheat == 10) // endgoal
{
for (int i = 0; i < MAXMOVEOBJECT; i++)
{
if (m_moveObject[i].type == 7 || m_moveObject[i].type == 21)
{
m_blupiPos = m_moveObject[i].posCurrent;
if (m_nbTresor >= m_totalTresor)
{
if (m_moveObject[i].type == 21)
{
m_bFoundCle = TRUE;
}
StopSound(16);
StopSound(18);
StopSound(29);
StopSound(31);
PlaySound(14);
m_blupiAction = 13;
m_blupiPhase = 0;
m_blupiFocus = FALSE;
m_blupiFront = TRUE;
m_blupiAir = FALSE;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = TRUE;
m_blupiTank = FALSE;
m_blupiSkate = FALSE;
m_blupiNage = FALSE;
m_blupiSurf = FALSE;
m_blupiVent = FALSE;
m_blupiSuspend = FALSE;
m_blupiShield = FALSE;
m_blupiPower = FALSE;
m_blupiCloud = FALSE;
m_blupiHide = FALSE;
m_blupiInvert = FALSE;
m_blupiBalloon = FALSE;
m_blupiEcrase = FALSE;
}
else
{
PlaySound(13, m_moveObject[i].posCurrent);
}
m_goalPhase = 50;
}
}
}
if (cheat == 12) // roundshield
{
PlaySound(42, m_blupiPos);
m_blupiShield = TRUE;
m_blupiPower = FALSE;
m_blupiCloud = FALSE;
m_blupiHide = FALSE;
m_blupiTimeShield = 100;
m_blupiPosMagic = m_blupiPos;
m_jauges[1].SetHide(FALSE);
}
if (cheat == 13) // quicklollipop
{
m_blupiAction = 49;
m_blupiPhase = 0;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = FALSE;
m_blupiTank = FALSE;
m_blupiSkate = FALSE;
m_blupiShield = FALSE;
m_blupiPower = FALSE;
m_blupiCloud = FALSE;
m_blupiHide = FALSE;
m_blupiFocus = FALSE;
PlaySound(50, m_blupiPos);
}
if (cheat == 14) // tenbombs
{
m_blupiPerso = 10;
PlaySound(60, m_blupiPos);
}
if (cheat == 15) // birdlime
{
m_blupiBullet = 10;
}
if (cheat == 16) // drivetank
{
m_blupiAir = FALSE;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = FALSE;
m_blupiTank = TRUE;
m_blupiSkate = FALSE;
m_blupiNage = FALSE;
m_blupiSurf = FALSE;
m_blupiVent = FALSE;
m_blupiSuspend = FALSE;
m_blupiCloud = FALSE;
m_blupiHide = FALSE;
}
if (cheat == 17) // powercharge
{
m_blupiAction = 56;
m_blupiPhase = 0;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = FALSE;
m_blupiTank = TRUE;
m_blupiSkate = FALSE;
m_blupiShield = FALSE;
m_blupiPower = FALSE;
m_blupiCloud = FALSE;
m_blupiHide = FALSE;
m_blupiJumpAie = FALSE;
m_blupiFocus = FALSE;
PlaySound(58, m_blupiPos);
}
if (cheat == 18) // hidedrink
{
m_blupiAction = 55;
m_blupiPhase = 0;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = FALSE;
m_blupiTank = FALSE;
m_blupiSkate = FALSE;
m_blupiShield = FALSE;
m_blupiPower = FALSE;
m_blupiCloud = FALSE;
m_blupiHide = FALSE;
m_blupiJumpAie = FALSE;
m_blupiFocus = FALSE;
PlaySound(57, m_blupiPos);
}
if (cheat == 22) // iovercraft
{
m_blupiAir = FALSE;
m_blupiHelico = FALSE;
m_blupiOver = TRUE;
m_blupiJeep = FALSE;
m_blupiTank = FALSE;
m_blupiSkate = FALSE;
m_blupiNage = FALSE;
m_blupiSurf = FALSE;
m_blupiVent = FALSE;
m_blupiSuspend = FALSE;
}
if (cheat == cheat_dynamite)
{
m_blupiDynamite = 1;
PlaySound(60, m_blupiPos);
}
if (cheat == 24) // wellkeys
{
m_blupiCle |= 7;
}
if (m_blupiShield && m_blupiHide && m_blupiCloud && m_blupiPower)
switch (cheat)
{
case 2: // cleanall
for (int i = 0; i < MAXMOVEOBJECT; i++)
{
mob = &m_moveObject[i];
switch (mob->type)
{
case TYPE_BOMBEDOWN:
case TYPE_BOMBEUP:
case TYPE_BOMBEFOLLOW1:
case TYPE_BOMBEFOLLOW2:
case TYPE_BULLDOZER:
case TYPE_BOMBEMOVE:
case TYPE_POISSON:
case TYPE_OISEAU:
case TYPE_GUEPE:
case TYPE_CREATURE:
case TYPE_BLUPIHELICO:
case TYPE_BLUPITANK:
m_decorAction = 1;
m_decorPhase = 0;
mob->type = TYPE_EXPLO1;
mob->phase = 0;
mob->posCurrent -= { 34, 34 };
mob->posStart = mob->posCurrent;
mob->posEnd = mob->posCurrent;
MoveObjectStepIcon(i);
PlaySound(SOUND_BOUM, mob->posCurrent, FALSE);
}
}
break;
case 6: // funskate
m_blupiAir = FALSE;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = FALSE;
m_blupiTank = FALSE;
m_blupiSkate = TRUE;
m_blupiNage = FALSE;
m_blupiSurf = FALSE;
m_blupiVent = FALSE;
m_blupiSuspend = FALSE;
StopVehicleSound();
break;
case 7: // givecopter
m_blupiAir = FALSE;
m_blupiHelico = TRUE;
m_blupiOver = FALSE;
m_blupiJeep = FALSE;
m_blupiTank = FALSE;
m_blupiSkate = FALSE;
m_blupiNage = FALSE;
m_blupiSurf = FALSE;
m_blupiVent = FALSE;
m_blupiSuspend = FALSE;
StopVehicleSound();
PlaySound(SOUND_HELICOSTART, m_blupiPos, FALSE);
PlaySound(SOUND_HELICOLOW, m_blupiPos, TRUE);
break;
case 8: // jeepdrive
m_blupiAir = FALSE;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = TRUE;
m_blupiTank = FALSE;
m_blupiSkate = FALSE;
m_blupiNage = FALSE;
m_blupiSurf = FALSE;
m_blupiVent = FALSE;
m_blupiSuspend = FALSE;
StopVehicleSound();
PlaySound(SOUND_JEEPLOW, m_blupiPos, TRUE);
break;
case 9: // alltreasure
for (int i = 0; i < MAXMOVEOBJECT; i++)
{
if (m_moveObject[i].type == TYPE_TRESOR)
{
m_moveObject[i].type = 0;
m_nbTresor++;
OpenDoorsTresor();
PlaySound(SOUND_TRESOR, m_moveObject[i].posCurrent, FALSE);
}
}
break;
case 10: // endgoal
for (int i = 0; i < MAXMOVEOBJECT; i++)
{
mob = &m_moveObject[i];
if (mob->type == TYPE_GOAL || mob->type == TYPE_CLE)
{
m_blupiPos = mob->posCurrent;
if (m_nbTresor >= m_totalTresor)
{
if (mob->type == TYPE_CLE)
{
m_bFoundCle = TRUE;
}
StopVehicleSound();
PlaySound(SOUND_ENDOK, mob->posCurrent, FALSE);
m_blupiAction = ACTION_WIN;
m_blupiPhase = 0;
m_blupiFocus = FALSE;
m_blupiFront = TRUE;
m_blupiAir = FALSE;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = TRUE;
m_blupiTank = FALSE;
m_blupiSkate = FALSE;
m_blupiNage = FALSE;
m_blupiSurf = FALSE;
m_blupiVent = FALSE;
m_blupiSuspend = FALSE;
m_blupiShield = FALSE;
m_blupiPower = FALSE;
m_blupiCloud = FALSE;
m_blupiHide = FALSE;
m_blupiInvert = FALSE;
m_blupiBalloon = FALSE;
m_blupiEcrase = FALSE;
}
else
{
PlaySound(SOUND_ENDKO, mob->posCurrent, FALSE);
}
m_goalPhase = 50;
}
}
break;
case 12: // roundshield
PlaySound(SOUND_STARTSHIELD, m_blupiPos, FALSE);
m_blupiShield = TRUE;
m_blupiPower = FALSE;
m_blupiCloud = FALSE;
m_blupiHide = FALSE;
m_blupiTimeShield = 100;
m_blupiPosMagic = m_blupiPos;
m_jauges[1].SetHide(FALSE);
break;
case 13: // quicklollipop
m_blupiAction = ACTION_SUCETTE;
m_blupiPhase = 0;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = FALSE;
m_blupiTank = FALSE;
m_blupiSkate = FALSE;
m_blupiShield = FALSE;
m_blupiPower = FALSE;
m_blupiCloud = FALSE;
m_blupiHide = FALSE;
m_blupiFocus = FALSE;
PlaySound(SOUND_SUCETTE, m_blupiPos, FALSE);
break;
case 14: // tenbombs
m_blupiPerso = 10;
PlaySound(SOUND_PERSOTAKE, m_blupiPos, FALSE);
break;
case 15: // birdlime
m_blupiBullet = 10;
break;
case 16: // drivetank
m_blupiAir = FALSE;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = FALSE;
m_blupiTank = TRUE;
m_blupiSkate = FALSE;
m_blupiNage = FALSE;
m_blupiSurf = FALSE;
m_blupiVent = FALSE;
m_blupiSuspend = FALSE;
m_blupiCloud = FALSE;
m_blupiHide = FALSE;
PlaySound(SOUND_JEEPLOW, m_blupiPos, TRUE);
break;
case 17: // powercharge
m_blupiAction = ACTION_CHARGE;
m_blupiPhase = 0;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = FALSE;
m_blupiTank = TRUE;
m_blupiSkate = FALSE;
m_blupiShield = FALSE;
m_blupiPower = FALSE;
m_blupiCloud = FALSE;
m_blupiHide = FALSE;
m_blupiJumpAie = FALSE;
m_blupiFocus = FALSE;
PlaySound(SOUND_CHARGE, m_blupiPos, FALSE);
break;
case 18: // hidedrink
m_blupiAction = ACTION_DRINK;
m_blupiPhase = 0;
m_blupiHelico = FALSE;
m_blupiOver = FALSE;
m_blupiJeep = FALSE;
m_blupiTank = FALSE;
m_blupiSkate = FALSE;
m_blupiShield = FALSE;
m_blupiPower = FALSE;
m_blupiCloud = FALSE;
m_blupiHide = FALSE;
m_blupiJumpAie = FALSE;
m_blupiFocus = FALSE;
PlaySound(SOUND_DRINK, m_blupiPos, FALSE);
break;
case 22: // iovercraft
m_blupiAir = FALSE;
m_blupiHelico = FALSE;
m_blupiOver = TRUE;
m_blupiJeep = FALSE;
m_blupiTank = FALSE;
m_blupiSkate = FALSE;
m_blupiNage = FALSE;
m_blupiSurf = FALSE;
m_blupiVent = FALSE;
m_blupiSuspend = FALSE;
StopVehicleSound();
PlaySound(SOUND_HELICOSTART, m_blupiPos, FALSE);
PlaySound(SOUND_HELICOLOW, m_blupiPos, TRUE);
break;
case 23: // udynamite
m_blupiDynamite = 1;
PlaySound(SOUND_PERSOTAKE, m_blupiPos, FALSE);
break;
case 24: // wellkeys
m_blupiCle |= CLE_RED | CLE_GREEN | CLE_BLUE;
break;
}
if (!m_blupiShield && !m_blupiHide && !m_blupiCloud && !m_blupiPower)
{
m_jauges[1].SetHide(TRUE);
}
if (m_blupiHelico && m_blupiOver)
if (!m_blupiHelico && !m_blupiOver)
{
m_pSound->StopSound(SOUND_HELICOHIGH);
StopSound(18);
StopSound(SOUND_HELICOHIGH);
StopSound(SOUND_HELICOLOW);
}
if (m_blupiJeep && m_blupiTank)
{
StopSound(29);
StopSound(31);
StopSound(SOUND_JEEPHIGH);
StopSound(SOUND_JEEPLOW);
}
}
@ -1615,17 +1638,14 @@ void CDecor::AdaptDoors(BOOL bPrivate, int mission)
void CDecor::OpenDoorsTresor()
{
for (int i = 0; i < 100; i++)
for (int x = 0; x < MAXCELX; x++)
{
for (int j = 0; j < 100; j++)
for (int y = 0; y < MAXCELY; y++)
{
int icon = m_decor[i][j].icon;
if (icon >= 421 && icon <= 421 + m_nbTresor - 1)
int icon = m_decor[x][y].icon;
if (icon >= Object::DoorTreasure_1 && icon <= Object::DoorTreasure_1 + m_nbTresor - 1)
{
POINT cel;
cel.x = i;
cel.y = j;
OpenDoor(cel);
OpenDoor({ x, y });
}
}
}
@ -1633,25 +1653,25 @@ void CDecor::OpenDoorsTresor()
void CDecor::OpenDoor(POINT cel)
{
int icon = m_decor[cel.x, cel.y]->icon;
int icon = m_decor[cel.x][cel.y].icon;
m_decor[cel.x, cel.y]->icon = -1;
int num = MoveObjectFree();
m_moveObject[num].type = 22;
m_moveObject[num].type = TYPE_DOOR;
m_moveObject[num].stepAdvance = 50;
m_moveObject[num].stepRecede = 1;
m_moveObject[num].timeStopStart = 0;
m_moveObject[num].timeStopEnd = 0;
m_moveObject[num].posStart.x = 64 * cel.x;
m_moveObject[num].posStart.y = 64 * cel.y;
m_moveObject[num].posEnd.x = 64 * cel.x;
m_moveObject[num].posEnd.y = 64 * (cel.y - 1);
m_moveObject[num].posStart.x = DIMOBJX * cel.x;
m_moveObject[num].posStart.y = DIMOBJY * cel.y;
m_moveObject[num].posEnd.x = DIMOBJX * cel.x;
m_moveObject[num].posEnd.y = DIMOBJY * (cel.y - 1);
m_moveObject[num].posCurrent = m_moveObject[num].posStart;
m_moveObject[num].step = 1;
m_moveObject[num].step = STEP_STOPSTART;
m_moveObject[num].time = 0;
m_moveObject[num].phase = 0;
m_moveObject[num].channel = 1;
m_moveObject[num].channel = CHOBJECT;
m_moveObject[num].icon = icon;
PlaySoundB(33, m_moveObject[num].posStart);
PlaySound(33, m_moveObject[num].posStart);
}
void CDecor::OpenDoorsWin()
@ -1710,8 +1730,8 @@ void CDecor::DoorsLost()
}
for (int i = 0; i < 2; i++)
{
int num = pos.x / 64;
int num2 = pos.y / 64;
int num = pos.x / DIMOBJX;
int num2 = pos.y / DIMOBJY;
if (num2 < 0)
{
return FALSE;

16
decor.h
View File

@ -88,7 +88,7 @@ public:
void SetInput(int keys);
void SetJoystickEnable(BOOL bJoystick);
void SetFieldD814(BOOL param_1);
void PlaySoundB(int sound, POINT pos, BOOL bLocal);
void PlaySound(int sound, POINT pos, BOOL bLocal);
void StopSound(int sound);
void AdaptMotorVehicleSound(POINT pos);
void VehicleSoundsPhase(int phase);
@ -103,7 +103,7 @@ public:
void SetNbVies(int nbVies);
BOOL GetPause();
void SetPause(BOOL bPause);
void InitializeDoors(GameData *gameData);
void InitializeDoors(BYTE *doors);
void MemorizeDoors(BYTE* doors);
void SetAllMissions(BOOL bAllMissions);
void CheatAction(int cheat);
@ -128,7 +128,7 @@ public:
BOOL DrawMap(BOOL bPlay, int team);
// DecBlock.cpp
BOOL BlitzActif(int celx, int cely);
BOOL BlitzActif(POINT cel);
int SoundEnviron(int sound, int obstacle);
int IsWorld(POINT pos);
void ActiveSwitch(BOOL bState, POINT cel);
@ -154,9 +154,9 @@ public:
BOOL IsVentillo(POINT pos);
void ModifDecor(POINT pos, int icon, BOOL _foo);
BOOL IsRightBorder(POINT cel, POINT offset);
BOOL IsFromage(int x, int y);
BOOL IsGrotte(int x, int y);
void AdaptMidBorder(int x, int y);
BOOL IsFromage(POINT cel);
BOOL IsGrotte(POINT cel);
void AdaptMidBorder(POINT cel);
void AdaptBorder(POINT cel);
// DecDesign.cpp
@ -275,6 +275,8 @@ public:
void OpenGoldsWin();
void DoorsLost();
inline void StopVehicleSound();
protected:
HWND m_hWnd;
CSound* m_pSound;
@ -421,5 +423,5 @@ protected:
POINT GetCel (int x, int y);
POINT GetCel (POINT cel, int x, int y);
BOOL IsValidCel (POINT cel);
inline BOOL IsValidCel (POINT cel);
POINT GetVector (int direct);

183
def.h
View File

@ -5,6 +5,10 @@
#include <Windows.h>
// prevent WinAPI from overriding our functions
#undef PlaySound
#undef DrawText
#define _DEMO FALSE // TRUE=demo, FALSE=complet
#define _INTRO FALSE // TRUE si images d'introduction
#define _EGAMES FALSE // TRUE version pour eGames
@ -43,10 +47,10 @@
#define DIMSTATX 60
#define DIMSTATY 30
#define DIMTEXTX 16 // dimensions max d'un caractre
#define DIMTEXTX 16 // dimensions max d'un caractère
#define DIMTEXTY 16
#define DIMLITTLEX 16 // dimensions max d'un petit caractre
#define DIMLITTLEX 16 // dimensions max d'un petit caractère
#define DIMLITTLEY 12
#define CHDECOR 0
@ -772,109 +776,6 @@ namespace Key {
#define WM_DECOR4 (WM_USER+23)
#define WM_DECOR5 (WM_USER+24)
#define WM_ACTION_GO (WM_USER+30)
#define WM_ACTION_ABAT1 (WM_USER+31)
#define WM_ACTION_ABAT2 (WM_USER+32)
#define WM_ACTION_ABAT3 (WM_USER+33)
#define WM_ACTION_ABAT4 (WM_USER+34)
#define WM_ACTION_ABAT5 (WM_USER+35)
#define WM_ACTION_ABAT6 (WM_USER+36)
#define WM_ACTION_BUILD1 (WM_USER+37)
#define WM_ACTION_BUILD2 (WM_USER+38)
#define WM_ACTION_BUILD3 (WM_USER+39)
#define WM_ACTION_BUILD4 (WM_USER+40)
#define WM_ACTION_BUILD5 (WM_USER+41)
#define WM_ACTION_BUILD6 (WM_USER+42)
#define WM_ACTION_STOP (WM_USER+43)
#define WM_ACTION_CARRY (WM_USER+44)
#define WM_ACTION_DEPOSE (WM_USER+45)
#define WM_ACTION_ROC1 (WM_USER+46)
#define WM_ACTION_ROC2 (WM_USER+47)
#define WM_ACTION_ROC3 (WM_USER+48)
#define WM_ACTION_ROC4 (WM_USER+49)
#define WM_ACTION_ROC5 (WM_USER+50)
#define WM_ACTION_ROC6 (WM_USER+51)
#define WM_ACTION_ROC7 (WM_USER+52)
#define WM_ACTION_MUR (WM_USER+53)
#define WM_ACTION_CULTIVE (WM_USER+54)
#define WM_ACTION_CULTIVE2 (WM_USER+55)
#define WM_ACTION_MANGE (WM_USER+56)
#define WM_ACTION_MAKE (WM_USER+57)
#define WM_ACTION_BUILD (WM_USER+58)
#define WM_ACTION_PALIS (WM_USER+59)
#define WM_ACTION_NEWBLUPI (WM_USER+60)
#define WM_ACTION_PONTE (WM_USER+61)
#define WM_ACTION_PONTS (WM_USER+62)
#define WM_ACTION_PONTO (WM_USER+63)
#define WM_ACTION_PONTN (WM_USER+64)
#define WM_ACTION_PONTEL (WM_USER+65)
#define WM_ACTION_PONTSL (WM_USER+66)
#define WM_ACTION_PONTOL (WM_USER+67)
#define WM_ACTION_PONTNL (WM_USER+68)
#define WM_ACTION_TOUR (WM_USER+69)
#define WM_ACTION_CARRY2 (WM_USER+70)
#define WM_ACTION_DEPOSE2 (WM_USER+71)
#define WM_ACTION_MANGE2 (WM_USER+72)
#define WM_ACTION_BOIT (WM_USER+73)
#define WM_ACTION_BOIT2 (WM_USER+74)
#define WM_ACTION_LABO (WM_USER+75)
#define WM_ACTION_FLEUR1 (WM_USER+76)
#define WM_ACTION_FLEUR2 (WM_USER+77)
#define WM_ACTION_DYNAMITE (WM_USER+78)
#define WM_ACTION_DYNAMITE2 (WM_USER+79)
#define WM_ACTION_T_DYNAMITE (WM_USER+80)
#define WM_ACTION_FLEUR3 (WM_USER+81)
#define WM_ACTION_R_BUILD1 (WM_USER+82)
#define WM_ACTION_R_BUILD2 (WM_USER+83)
#define WM_ACTION_R_BUILD3 (WM_USER+84)
#define WM_ACTION_R_BUILD4 (WM_USER+85)
#define WM_ACTION_R_MAKE1 (WM_USER+86)
#define WM_ACTION_R_MAKE2 (WM_USER+87)
#define WM_ACTION_R_MAKE3 (WM_USER+88)
#define WM_ACTION_R_MAKE4 (WM_USER+89)
#define WM_ACTION_R_BUILD5 (WM_USER+90)
#define WM_ACTION_R_MAKE5 (WM_USER+91)
#define WM_ACTION_BATEAUE (WM_USER+92)
#define WM_ACTION_BATEAUS (WM_USER+93)
#define WM_ACTION_BATEAUO (WM_USER+94)
#define WM_ACTION_BATEAUN (WM_USER+95)
#define WM_ACTION_BATEAUDE (WM_USER+96)
#define WM_ACTION_BATEAUDS (WM_USER+97)
#define WM_ACTION_BATEAUDO (WM_USER+98)
#define WM_ACTION_BATEAUDN (WM_USER+99)
#define WM_ACTION_BATEAUAE (WM_USER+100)
#define WM_ACTION_BATEAUAS (WM_USER+101)
#define WM_ACTION_BATEAUAO (WM_USER+102)
#define WM_ACTION_BATEAUAN (WM_USER+103)
#define WM_ACTION_MJEEP (WM_USER+104)
#define WM_ACTION_DJEEP (WM_USER+105)
#define WM_ACTION_DRAPEAU (WM_USER+106)
#define WM_ACTION_DRAPEAU2 (WM_USER+107)
#define WM_ACTION_DRAPEAU3 (WM_USER+108)
#define WM_ACTION_EXTRAIT (WM_USER+109)
#define WM_ACTION_FABJEEP (WM_USER+110)
#define WM_ACTION_FABMINE (WM_USER+111)
#define WM_ACTION_MINE (WM_USER+112)
#define WM_ACTION_MINE2 (WM_USER+113)
#define WM_ACTION_R_BUILD6 (WM_USER+114)
#define WM_ACTION_R_MAKE6 (WM_USER+115)
#define WM_ACTION_E_RAYON (WM_USER+116)
#define WM_ACTION_ELECTRO (WM_USER+117)
#define WM_ACTION_ELECTROm (WM_USER+118)
#define WM_ACTION_GRILLE (WM_USER+119)
#define WM_ACTION_MAISON (WM_USER+120)
#define WM_ACTION_FABDISC (WM_USER+121)
#define WM_ACTION_A_MORT (WM_USER+122)
#define WM_ACTION_REPEAT (WM_USER+123)
#define WM_ACTION_TELEPORTE00 (WM_USER+124)
#define WM_ACTION_TELEPORTE10 (WM_USER+125)
#define WM_ACTION_TELEPORTE01 (WM_USER+126)
#define WM_ACTION_TELEPORTE11 (WM_USER+127)
#define WM_ACTION_FABARMURE (WM_USER+128)
#define WM_ACTION_MARMURE (WM_USER+129)
#define WM_ACTION_DARMURE (WM_USER+130)
#define WM_BUTTON0 (WM_USER+200)
#define WM_BUTTON1 (WM_USER+201)
#define WM_BUTTON2 (WM_USER+202)
@ -1451,4 +1352,74 @@ namespace Object {
DoorTreasure_19,
DoorTreasure_20
};
}
}
#define CLE_RED (1 << 0)
#define CLE_GREEN (1 << 1)
#define CLE_BLUE (1 << 2)
struct POINT
{
int x;
int y;
POINT operator+(const POINT& a) const
{
return { a.x + x, a.y + y };
}
POINT operator-(const POINT& a) const
{
return { a.x - x, a.y - y };
}
POINT operator*(const POINT& a) const
{
return { a.x * x, a.y * y };
}
POINT operator/(const POINT& a) const
{
return { a.x / x, a.y / y };
}
POINT operator*(const int& a) const
{
return { x * a, y * a };
}
POINT operator/(const int& a) const
{
return { x / a, y / a };
}
POINT operator+=(const POINT& a)
{
return { x += a.x, y += a.y };
}
POINT operator-=(const POINT& a)
{
return { x -= a.x, y -= a.y };
}
POINT operator*=(const POINT& a)
{
return { x *= a.x, y *= a.y };
}
POINT operator/=(const POINT& a)
{
return { x /= a.x, y /= a.y };
}
POINT operator*=(const int& a)
{
return { x *= x, y *= a };
}
POINT operator/=(const int& a)
{
return { x /= a, y /= a };
}
};

2154
dplay.h

File diff suppressed because it is too large Load Diff

2385
dsound.h

File diff suppressed because it is too large Load Diff

BIN
empty.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

View File

@ -1997,7 +1997,7 @@ BOOL CEvent::AddPhaseText()
}
if (m_phase == WM_PHASE_INIT)
{
DrawTextB(m_pPixmap, { 414, 446 }, "Version 2.2", FONTLITTLE);
DrawText(m_pPixmap, { 414, 446 }, "Version 2.2", FONTLITTLE);
}
if (m_phase == WM_PHASE_GAMER)
{
@ -2007,7 +2007,7 @@ BOOL CEvent::AddPhaseText()
POINT pos { 110, 69 };
for (int i = 0; i < MAXGAMER; i++)
{
DrawTextB(m_pPixmap, pos, m_gamerNameList[i], FONTWHITE);
DrawText(m_pPixmap, pos, m_gamerNameList[i], FONTWHITE);
pos.y += DIMBUTTONY;
}

BIN
fill.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

BIN
map.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B

4
misc.h
View File

@ -1,9 +1,5 @@
// misc.h
//
#pragma once
#include <stdio.h>
#include <minwindef.h>
using namespace std;
extern void InitHInstance(HINSTANCE hInstance);
extern void OutputDebug(const char *pMessage);

View File

@ -196,7 +196,7 @@ BOOL CNetwork::CreateSession(char * pName)
desc.lpszSessionNameA = pName;
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)
@ -242,7 +242,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)
{

View File

@ -37,48 +37,124 @@
#define TX_ACTION_REPEAT 33
#define TX_ACTION_QARMURE 34
#define TX_ACTION_FABARMURE 35
#define TX_IONAMEEX 100
#define TX_IOFREE 101
#define TX_OWNMISSION 102
#define TX_TESTMISSION 103
#define TX_BUTTON_JOUER 104
#define TX_BUTTON_APPRENDRE 105
#define TX_BUTTON_QUITTER 106
#define TX_BUTTON_PREVP 107
#define TX_BUTTON_NEXTP 108
#define TX_BUTTON_PLAYP 109
#define TX_BUTTON_BUILDP 110
#define TX_BUTTON_TERM 111
#define TX_BUTTON_READP 112
#define TX_BUTTON_WRITEP 113
#define TX_BUTTON_CANCELP 114
#define TX_BUTTON_CONTP 115
#define TX_BUTTON_REPEAT 116
#define TX_CHOOSEPLAYER 117
#define TX_PLAYERSNAME 118
#define TX_BUTTON_TERMC 119
#define TX_CHOOSESIZE 120
#define TX_BUTTON_HVSCROLL 121
#define TX_BUTTON_ONLYHSCROLL 122
#define TX_BUTTON_ONLYVSCROLL 123
#define TX_BUTTON_TESTMISSION 124
#define TX_PAUSE 125
#define TX_MUSIC 149
#define TX_READINFO 167
#define TX_REGION 178
#define TX_INSERT 182
#define TX_GAMEPAUSE 197
#define TX_FULL_END1 203
#define TX_FULL_END2 204
#define TX_FULL_END3 205
#define TX_FULL_END4 206
#define TX_DEMOREC 213
#define TX_DEMOPLAY 214
#define TX_MULTI_CREATE 250
#define TX_MULTI_GNAME 251
#define TX_LOAD_CGAME 269
#define TX_SAVE_CGAME 270
#define TX_IONAMEEX 100
#define TX_IOFREE 101
#define IDR_MENU 102
#define TX_TERMMIN 102
#define TX_TERMMAX 103
#define TX_BUTTON_JOUER 104
#define TX_BUTTON_APPRENDRE 105
#define TX_BUTTON_QUITTER 106
#define TX_BUTTON_PREVP 107
#define TX_BUTTON_NEXTP 108
#define TX_BUTTON_PLAYP 109
#define TX_BUTTON_BUILDP 110
#define TX_BUTTON_TERM 111
#define TX_BUTTON_READP 112
#define TX_BUTTON_WRITEP 113
#define TX_BUTTON_CANCELP 114
#define TX_BUTTON_CONTP 115
#define TX_BUTTON_REPEAT 116
#define TX_BUTTON_BUTTON 117
#define TX_BUTTON_CTERM 118
#define TX_BUTTON_TERMC 119
#define TX_BUTTON_TERMHBLUPI 120
#define TX_BUTTON_TERMHPLANCHE 121
#define TX_BUTTON_TERMFIRE 122
#define TX_BUTTON_TERMDEC 123
#define TX_BUTTON_TERMINC 124
#define TX_PAUSE 125
#define TX_JAUGE1 126
#define TX_JAUGE2 127
#define TX_BUTTON_SETUP 128
#define TX_BUTTON_MUSIC 129
#define TX_BUTTON_SETUP1 130
#define TX_BUTTON_SETUP2 131
#define TX_BUTTON_SETUP3 132
#define TX_BUTTON_SETUP4 133
#define TX_BUTTON_MUSIC1 134
#define TX_BUTTON_MUSIC2 135
#define TX_BUTTON_MUSIC3 136
#define TX_BUTTON_MUSIC4 137
#define TX_BUTTON_MUSIC5 138
#define TX_BUTTON_MUSIC6 139
#define TX_BUTTON_MUSIC7 140
#define TX_BUTTON_MUSIC8 141
#define TX_BUTTON_MUSIC9 142
#define TX_BUTTON_MUSIC10 143
#define TX_BUTTON_REGION 144
#define TX_BUTTON_TERMMBLUPI 145
#define TX_BUTTON_TERMKILL 146
#define TX_TERM 147
#define TX_BUTTON 148
#define TX_MUSIC 149
#define TX_SCHOOL 150
#define TX_MISSION 151
#define TX_IONAMEMI 152
#define TX_BUTTON_TERMHTOMATE 153
#define TX_BUTTON_SETUP5 154
#define TX_BUTTON_SETUP6 155
#define TX_BUTTON_SETUP7 156
#define TX_BUTTON_SETUP8 157
#define TX_OUI 158
#define TX_NON 159
#define TX_BUTTON_SETUP9 160
#define TX_BUTTON_SETUP10 161
#define TX_INFO_SETUP1 162
#define TX_INFO_SETUP2 163
#define TX_INFO_SETUP3 164
#define TX_INFO_SETUP4 165
#define TX_INFO_SETUP5 166
#define TX_INFO_SETUP6 167
#define TX_INFO_SETUP7 168
#define TX_INFO_SETUP8 169
#define TX_INFO_SETUP9 170
#define TX_INFO_SETUP10 171
#define TX_INFO_SETUP10b 172
#define TX_INFO_NOSCROLL 173
#define TX_BUTTON_REGION1 174
#define TX_BUTTON_REGION2 175
#define TX_BUTTON_REGION3 176
#define TX_BUTTON_REGION4 177
#define TX_REGION 178
#define TX_BUTTON_PLAY_STOP 179
#define TX_BUTTON_PLAY_SETUP 180
#define TX_BUTTON_PLAY_WRITE 181
#define TX_INSERT 182
#define TX_BUTTON_PREVH 183
#define TX_BUTTON_NEXTH 184
#define TX_BUTTON_TERMHMETAL 185
#define TX_BUTTON_HELP 186
#define TX_HELP 187
#define TX_BUTTON_PRIVE 188
#define TX_PRIVATE 189
#define TX_IONAMEPR 190
#define TX_PRIVATE_HACHBLUPI 191
#define TX_PRIVATE_HACHPLANCHE 192
#define TX_PRIVATE_HACHTOMATE 193
#define TX_PRIVATE_HACHMETAL 194
#define TX_PRIVATE_STOPFIRE 195
#define TX_PRIVATE_HOMEBLUPI 196
#define TX_PRIVATE_KILLROBOTS 197
#define TX_BUTTON_UNDO 198
#define TX_DEMO_END1 199
#define TX_DEMO_END2 200
#define TX_DEMO_END3 201
#define TX_DEMO_END4 202
#define TX_FULL_END1 203
#define TX_FULL_END2 204
#define TX_FULL_END3 205
#define TX_FULL_END4 206
#define TX_PRIVATE_OBJECTIF 207
#define TX_PRIVATE_NBBLUPI 208
#define TX_BUTTON_SKILL 209
#define TX_SKILL1 210
#define TX_SKILL2 211
#define TX_BUTTON_DEMO 212
#define TX_DEMOREC 213
#define TX_DEMOPLAY 214
#define TX_BUTTON_TERMHROBOT 215
#define TX_PRIVATE_HACHROBOT 216
#define TX_REPEAT_CULTIVE 500
#define TX_REPEAT_FLEUR 501
#define TX_REPEAT_FLEURQ 502
@ -193,7 +269,6 @@
#define TX_LASTWIN2 3201
#define TX_LASTWIN3 3202
#define IDM_EXIT 40001
#define TX_BUTTON_CREATE 6900
// Next default values for new objects
//

14
resource2.h Normal file
View File

@ -0,0 +1,14 @@
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by speedyblupi.rc
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 101
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1001
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

19
resrc1.h Normal file
View File

@ -0,0 +1,19 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by Blupi-e.rc
//
#define TX_DIRECT_N 512
#define TX_DIRECT_S 513
#define TX_DIRECT_E 514
#define TX_DIRECT_O 515
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 109
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

BIN
rstemp.rct Normal file

Binary file not shown.

BIN
speedy.aps Normal file

Binary file not shown.

63
speedy.rc Normal file
View File

@ -0,0 +1,63 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // English (U.S.) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

BIN
speedyblupi.aps Normal file

Binary file not shown.

335
speedyblupi.dsp Normal file
View File

@ -0,0 +1,335 @@
# Microsoft Developer Studio Project File - Name="speedyblupi" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 5.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
CFG=speedyblupi - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "speedyblupi.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "speedyblupi.mak" CFG="speedyblupi - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "speedyblupi - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "speedyblupi - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
# Begin Project
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "speedyblupi - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "dxsdk3/sdk/inc" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 /libpath:"dxsdk3/sdk/lib"
!ELSEIF "$(CFG)" == "speedyblupi - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "dxsdk3/sdk/inc" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "speedyblupi - Win32 Release"
# Name "speedyblupi - Win32 Debug"
# Begin Group "resource"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\arrow.cur
# End Source File
# Begin Source File
SOURCE=.\arrowdl.cur
# End Source File
# Begin Source File
SOURCE=.\arrowdow.cur
# End Source File
# Begin Source File
SOURCE=.\arrowdr.cur
# End Source File
# Begin Source File
SOURCE=.\arrowlef.cur
# End Source File
# Begin Source File
SOURCE=.\arrowrig.cur
# End Source File
# Begin Source File
SOURCE=.\arrowul.cur
# End Source File
# Begin Source File
SOURCE=.\arrowup.cur
# End Source File
# Begin Source File
SOURCE=.\arrowur.cur
# End Source File
# Begin Source File
SOURCE=".\blupi-d.rc"
# End Source File
# Begin Source File
SOURCE=".\blupi-e.rc"
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=".\blupi-f.rc"
# PROP Exclude_From_Build 1
# End Source File
# Begin Source File
SOURCE=.\blupi.ico
# End Source File
# Begin Source File
SOURCE=.\blupi.rct
# End Source File
# Begin Source File
SOURCE=.\cursor1.cur
# End Source File
# Begin Source File
SOURCE=.\empty.cur
# End Source File
# Begin Source File
SOURCE=.\fill.cur
# End Source File
# Begin Source File
SOURCE=.\map.cur
# End Source File
# Begin Source File
SOURCE=.\wait.cur
# End Source File
# End Group
# Begin Group "include"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\actions.h
# End Source File
# Begin Source File
SOURCE=.\button.h
# End Source File
# Begin Source File
SOURCE=.\ddutil.h
# End Source File
# Begin Source File
SOURCE=.\decor.h
# End Source File
# Begin Source File
SOURCE=.\dectables.h
# End Source File
# Begin Source File
SOURCE=.\def.h
# End Source File
# Begin Source File
SOURCE=.\event.h
# End Source File
# Begin Source File
SOURCE=.\jauge.h
# End Source File
# Begin Source File
SOURCE=.\menu.h
# End Source File
# Begin Source File
SOURCE=.\misc.h
# End Source File
# Begin Source File
SOURCE=.\movie.h
# End Source File
# Begin Source File
SOURCE=.\network.h
# End Source File
# Begin Source File
SOURCE=.\obstacle.h
# End Source File
# Begin Source File
SOURCE=.\pixmap.h
# End Source File
# Begin Source File
SOURCE=.\resource.h
# End Source File
# Begin Source File
SOURCE=.\resrc1.h
# End Source File
# Begin Source File
SOURCE=.\sound.h
# End Source File
# Begin Source File
SOURCE=.\text.h
# End Source File
# Begin Source File
SOURCE=.\texttables.h
# End Source File
# Begin Source File
SOURCE=.\wave.h
# End Source File
# End Group
# Begin Source File
SOURCE=.\blupi.cpp
# End Source File
# Begin Source File
SOURCE=.\button.cpp
# End Source File
# Begin Source File
SOURCE=.\ddutil.cpp
# End Source File
# Begin Source File
SOURCE=.\decblock.cpp
# End Source File
# Begin Source File
SOURCE=.\decblupi.cpp
# End Source File
# Begin Source File
SOURCE=.\decdesign.cpp
# End Source File
# Begin Source File
SOURCE=.\decio.cpp
# End Source File
# Begin Source File
SOURCE=.\decmove.cpp
# End Source File
# Begin Source File
SOURCE=.\decnet.cpp
# End Source File
# Begin Source File
SOURCE=.\decor.cpp
# End Source File
# Begin Source File
SOURCE=.\event.cpp
# End Source File
# Begin Source File
SOURCE=.\jauge.cpp
# End Source File
# Begin Source File
SOURCE=.\menu.cpp
# End Source File
# Begin Source File
SOURCE=.\misc.cpp
# End Source File
# Begin Source File
SOURCE=.\movie.cpp
# End Source File
# Begin Source File
SOURCE=.\network.cpp
# End Source File
# Begin Source File
SOURCE=.\pixmap.cpp
# End Source File
# Begin Source File
SOURCE=.\sound.cpp
# End Source File
# Begin Source File
SOURCE=.\text.cpp
# End Source File
# Begin Source File
SOURCE=.\wave.cpp
# End Source File
# End Target
# End Project

29
speedyblupi.dsw Normal file
View File

@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 5.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "speedyblupi"=.\speedyblupi.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

BIN
speedyblupi.ncb Normal file

Binary file not shown.

BIN
speedyblupi.opt Normal file

Binary file not shown.

109
speedyblupi.plg Normal file
View File

@ -0,0 +1,109 @@
--------------------Configuration: speedyblupi - Win32 Debug--------------------
Begining build with project "C:\Users\Jimmy\Documents\GitHub\sb2-decomp\speedyblupi.dsp", at root.
Active configuration is Win32 (x86) Application (based on Win32 (x86) Application)
Project's tools are:
"32-bit C/C++ Compiler for 80x86" with flags "/nologo /MLd /W3 /Gm /GX /Zi /Od /I "dxsdk3/sdk/inc" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"Debug/speedyblupi.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /c "
"OLE Type Library Maker" with flags "/nologo /D "_DEBUG" /mktyplib203 /o NUL /win32 "
"Win32 Resource Compiler" with flags "/l 0x409 /fo"Debug/blupi-d.res" /d "_DEBUG" "
"Browser Database Maker" with flags "/nologo /o"Debug/speedyblupi.bsc" "
"COFF Linker for 80x86" with flags "kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /incremental:yes /pdb:"Debug/speedyblupi.pdb" /debug /machine:I386 /out:"Debug/speedyblupi.exe" /pdbtype:sept /libpath:"dxsdk3/sdk/lib" "
"Custom Build" with flags ""
"<Component 0xa>" with flags ""
Creating command line "rc.exe /l 0x409 /fo"Debug/blupi-d.res" /d "_DEBUG" "C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc""
Creating temp file "C:\Users\Jimmy\AppData\Local\Temp\RSP48F6.tmp" with contents </nologo /MLd /W3 /Gm /GX /Zi /Od /I "dxsdk3/sdk/inc" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fp"Debug/speedyblupi.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /c
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\decblock.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\decblupi.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\decdesign.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\decio.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\decmove.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\decnet.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\decor.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\event.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\jauge.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\network.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\pixmap.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\sound.cpp"
"C:\Users\Jimmy\Documents\GitHub\sb2-decomp\ddutil.cpp"
>
Creating command line "cl.exe @C:\Users\Jimmy\AppData\Local\Temp\RSP48F6.tmp"
Creating temp file "C:\Users\Jimmy\AppData\Local\Temp\RSP48F7.tmp" with contents <kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /incremental:yes /pdb:"Debug/speedyblupi.pdb" /debug /machine:I386 /out:"Debug/speedyblupi.exe" /pdbtype:sept /libpath:"dxsdk3/sdk/lib"
".\Debug\blupi.obj"
".\Debug\blupi-d.res"
".\Debug\button.obj"
".\Debug\decblock.obj"
".\Debug\decblupi.obj"
".\Debug\decdesign.obj"
".\Debug\decio.obj"
".\Debug\decmove.obj"
".\Debug\decnet.obj"
".\Debug\decor.obj"
".\Debug\event.obj"
".\Debug\jauge.obj"
".\Debug\menu.obj"
".\Debug\misc.obj"
".\Debug\movie.obj"
".\Debug\network.obj"
".\Debug\pixmap.obj"
".\Debug\sound.obj"
".\Debug\text.obj"
".\Debug\wave.obj"
".\Debug\ddutil.obj">
Creating command line "link.exe @C:\Users\Jimmy\AppData\Local\Temp\RSP48F7.tmp"
Compiling resources...
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (31): error RC2135 : file not found: blupi.ico
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (81): error RC2135 : file not found: map.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (82): error RC2135 : file not found: arrowup.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (83): error RC2135 : file not found: arrowdow.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (84): error RC2135 : file not found: arrowlef.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (85): error RC2135 : file not found: arrowrig.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (86): error RC2135 : file not found: arrowul.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (87): error RC2135 : file not found: arrowur.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (88): error RC2135 : file not found: arrowdr.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (89): error RC2135 : file not found: arrowdl.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (90): error RC2135 : file not found: wait.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (91): error RC2135 : file not found: empty.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (92): error RC2135 : file not found: fill.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (93): error RC2135 : file not found: arrow.cur
C:\Users\Jimmy\Documents\GitHub\sb2-decomp\blupi-d.rc (181): error RC2104 : undefined keyword or key name: TX_TERMMIN
Error executing rc.exe.
speedyblupi.exe - 15 error(s), 0 warning(s)

BIN
speedyblupi.rc Normal file

Binary file not shown.

View File

@ -21,8 +21,8 @@
<PropertyGroup Label="Globals">
<ProjectGuid>{E892DD4F-D6B7-4A19-8EC3-AB2625A8A523}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>planetblupi</RootNamespace>
<WindowsTargetPlatformVersion>10.0.22621.0</WindowsTargetPlatformVersion>
<RootNamespace>speedyblupi</RootNamespace>
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
<ProjectName>speedyblupi</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
@ -90,13 +90,16 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MultiProcessorCompilation>false</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<AdditionalIncludeDirectories>dxsdk3\sdk\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<UndefinePreprocessorDefinitions>PlaySound;DrawText</UndefinePreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>winmm.lib;ddraw.lib;dsound.lib;dplay.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>dxsdk3\sdk\lib</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@ -107,13 +110,16 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MultiProcessorCompilation>false</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
<AdditionalIncludeDirectories>dxsdk3\sdk\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<UndefinePreprocessorDefinitions>PlaySound;DrawText</UndefinePreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>winmm.lib;ddraw.lib;dsound.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>dxsdk3\sdk\lib</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
@ -126,7 +132,9 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MultiProcessorCompilation>false</MultiProcessorCompilation>
<AdditionalIncludeDirectories>dxsdk3\sdk\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<UndefinePreprocessorDefinitions>PlaySound;DrawText</UndefinePreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@ -134,6 +142,7 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>winmm.lib;ddraw.lib;dsound.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>dxsdk3\sdk\lib</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
@ -146,7 +155,9 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MultiProcessorCompilation>false</MultiProcessorCompilation>
<AdditionalIncludeDirectories>dxsdk3\sdk\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<UndefinePreprocessorDefinitions>PlaySound;DrawText</UndefinePreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
@ -154,13 +165,18 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<AdditionalDependencies>winmm.lib;ddraw.lib;dsound.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>dxsdk3\sdk\lib</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="blupi.cpp" />
<ClCompile Include="button.cpp" />
<ClCompile Include="ddutil.cpp" />
<ClCompile Include="decblock.cpp" />
<ClCompile Include="decblupi.cpp" />
<ClCompile Include="decio.cpp" />
<ClCompile Include="decmove.cpp" />
<ClCompile Include="decnet.cpp" />
<ClCompile Include="decor.cpp" />
<ClCompile Include="event.cpp" />
<ClCompile Include="jauge.cpp" />
@ -177,7 +193,7 @@
<ClInclude Include="actions.h" />
<ClInclude Include="button.h" />
<ClInclude Include="ddutil.h" />
<ClInclude Include="decmove.h" />
<ClInclude Include="decdesign.cpp" />
<ClInclude Include="decor.h" />
<ClInclude Include="dectables.h" />
<ClInclude Include="def.h" />
@ -205,6 +221,7 @@
<None Include="arrowul.cur" />
<None Include="arrowup.cur" />
<None Include="arrowur.cur" />
<None Include="blupi.rct" />
<None Include="cursor1.cur" />
<None Include="data\config.def" />
<None Include="empty.cur" />

View File

@ -59,6 +59,18 @@
<ClCompile Include="network.cpp">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="decio.cpp">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="decmove.cpp">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="decnet.cpp">
<Filter>Sources</Filter>
</ClCompile>
<ClCompile Include="decblock.cpp">
<Filter>Sources</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="actions.h">
@ -70,9 +82,6 @@
<ClInclude Include="ddutil.h">
<Filter>Sources</Filter>
</ClInclude>
<ClInclude Include="decmove.h">
<Filter>Sources</Filter>
</ClInclude>
<ClInclude Include="decor.h">
<Filter>Sources</Filter>
</ClInclude>
@ -121,6 +130,9 @@
<ClInclude Include="network.h">
<Filter>Sources</Filter>
</ClInclude>
<ClInclude Include="decdesign.cpp">
<Filter>Sources</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="arrow.cur">
@ -168,6 +180,9 @@
<None Include="data\config.def">
<Filter>Data</Filter>
</None>
<None Include="blupi.rct">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="blupi-d.rc">

4
speedyblupi.vcxproj.user Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>

View File

@ -11,7 +11,7 @@
/////////////////////////////////////////////////////////////////////////////
static CharOffset table_offsets[] =
static CharProperties table_char[] =
{
{ 1, 0, 0, -1, 0, 0 },
{ 1, 0, 0, -1, 0, 0 },
@ -271,7 +271,7 @@ static CharOffset table_offsets[] =
{ 1, 0, 0, -1, 0, 0 }
};
// Retourne l'offset pour un caract<EFBFBD>re donn<6E>.
// Retourne l'offset pour un caractère donné.
int GetOffset(char c)
{
@ -347,24 +347,24 @@ void DrawCharSingle(CPixmap *pPixmap, POINT pos, char *pText, int font)
void DrawChar(CPixmap *pPixmap, POINT *pos, char c, int font)
{
POINT pos2 { table_offsets[c].charOffsetX + pos->x, table_offsets[c].charOffsetY + pos->y };
DrawCharSingle(pPixmap, pos2, &table_offsets[c].charIcon, font);
if (table_offsets[c].accentIcon != -1)
POINT pos2 { table_char[c].charOffsetX + pos->x, table_char[c].charOffsetY + pos->y };
DrawCharSingle(pPixmap, pos2, &table_char[c].charIcon, font);
if (table_char[c].accentIcon != -1)
{
pos2 = { table_offsets[c].accentOffsetX + pos->x, table_offsets[c].accentOffsetY + pos->y };
DrawCharSingle(pPixmap, pos2, &table_offsets[c].accentIcon, font);
pos2 = { table_char[c].accentOffsetX + pos->x, table_char[c].accentOffsetY + pos->y };
DrawCharSingle(pPixmap, pos2, &table_char[c].accentIcon, font);
}
pos->x += GetCharWidthB(c, font);
}
void DrawTextLeft(CPixmap *pPixmap, POINT pos, char *pText, int font)
{
DrawTextB(pPixmap, pos, pText, font);
DrawText(pPixmap, pos, pText, font);
}
// Affiche un texte.
void DrawTextB(CPixmap *pPixmap, POINT pos, char *pText, int font)
void DrawText(CPixmap *pPixmap, POINT pos, char *pText, int font)
{
while (*pText != 0)
{
@ -433,7 +433,7 @@ void DrawTextRect(CPixmap *pPixmap, POINT pos, char *pText,
if (pente == 0)
{
DrawTextB(pPixmap, pos, pDest, font);
DrawText(pPixmap, pos, pDest, font);
}
else
{
@ -478,7 +478,7 @@ void DrawTextCenter(CPixmap *pPixmap, POINT pos, char *pText, int font)
pDest = text;
start.x = pos.x - GetTextWidth(pDest) / 2;
start.y = pos.y;
DrawTextB(pPixmap, start, pDest, font);
DrawText(pPixmap, start, pDest, font);
if (pDest[0] == 0) // ligne vide ?
{

4
text.h
View File

@ -16,7 +16,7 @@ typedef struct
char accentOffsetX;
char accentOffsetY;
}
CharOffset;
CharProperties;
extern
void DrawCharSingle(CPixmap *pPixmap, POINT pos, char *pText, int font);
@ -28,7 +28,7 @@ extern
void DrawTextLeft(CPixmap *pPixmap, POINT pos, char *pText, int font);
extern
void DrawTextB(CPixmap *pPixmap, POINT pos, char *pText, int font = 0);
void DrawText(CPixmap *pPixmap, POINT pos, char *pText, int font = 0);
extern
void DrawTextPente(CPixmap *pPixmap, POINT pos, char *pText,

BIN
wait.cur Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 326 B