From c26f31e87b09db5abe3add9b4d322dc7fec13402 Mon Sep 17 00:00:00 2001 From: jummy Date: Tue, 24 Sep 2024 01:22:18 -0500 Subject: [PATCH] CDecor::Read also msvc really wants me to #include now --- Speedy Eggbert 2 Source.vcxproj | 36 +- Speedy Eggbert 2 Source.vcxproj.filters | 174 +- decblock.cpp | 776 ------- decdesign.cpp | 654 ------ decio.cpp | 218 -- decmove.cpp | 2214 ------------------- decnet.cpp | 197 -- obstacle.h | 589 ----- RCa19860 => resource/RCa19860 | Bin RCb19860 => resource/RCb19860 | Bin RCc19860 => resource/RCc19860 | Bin RCd19860 => resource/RCd19860 | Bin arrow.cur => resource/arrow.cur | Bin arrowdl.cur => resource/arrowdl.cur | Bin arrowdow.cur => resource/arrowdow.cur | Bin arrowdr.cur => resource/arrowdr.cur | Bin arrowlef.cur => resource/arrowlef.cur | Bin arrowrig.cur => resource/arrowrig.cur | Bin arrowul.cur => resource/arrowul.cur | Bin arrowup.cur => resource/arrowup.cur | Bin arrowur.cur => resource/arrowur.cur | Bin blupi-d.aps => resource/blupi-d.aps | Bin blupi-d.rc => resource/blupi-d.rc | 0 blupi-e.aps => resource/blupi-e.aps | Bin blupi-e.rc => resource/blupi-e.rc | 0 blupi-f.aps => resource/blupi-f.aps | Bin blupi-f.rc => resource/blupi-f.rc | 0 blupi.ico => resource/blupi.ico | Bin blupi.rct => resource/blupi.rct | Bin empty.cur => resource/empty.cur | Bin fill.cur => resource/fill.cur | Bin map.cur => resource/map.cur | Bin resource2.h => resource/resource2.h | 0 resrc1.h => resource/resrc1.h | 0 rstemp.rct => resource/rstemp.rct | Bin speedy.aps => resource/speedy.aps | Bin speedy.rc => resource/speedy.rc | 0 speedyblupi.aps => resource/speedyblupi.aps | Bin speedyblupi.rc => resource/speedyblupi.rc | Bin wait.cur => resource/wait.cur | Bin speedyblupi.dsp | 335 --- speedyblupi.dsw | 29 - speedyblupi.ncb | Bin 189440 -> 0 bytes speedyblupi.opt | Bin 48640 -> 0 bytes speedyblupi.plg | 109 - speedyblupi.sln | 31 - speedyblupi.vcxproj | 253 --- speedyblupi.vcxproj.filters | 203 -- speedyblupi.vcxproj.user | 4 - src/blupi.cpp | 5 +- src/button.cpp | 18 +- src/button.h | 5 +- src/ddutil.h | 2 - src/decblupi.cpp | 8 +- src/decio.cpp | 125 +- src/decmove.cpp | 111 +- src/decor.cpp | 14 +- src/decor.h | 126 +- src/def.h | 3 +- src/event.cpp | 68 +- src/event.h | 4 +- src/jauge.cpp | 9 +- src/jauge.h | 2 +- src/menu.h | 1 - src/misc.cpp | 4 +- src/misc.h | 7 +- src/movie.cpp | 6 - src/movie.h | 2 - src/pixmap.cpp | 16 +- src/pixmap.h | 4 +- src/resource.h | 6 +- src/resource1.h | 1 + src/sound.h | 6 +- src/text.cpp | 9 +- 74 files changed, 428 insertions(+), 5956 deletions(-) delete mode 100644 decblock.cpp delete mode 100644 decdesign.cpp delete mode 100644 decio.cpp delete mode 100644 decmove.cpp delete mode 100644 decnet.cpp delete mode 100644 obstacle.h rename RCa19860 => resource/RCa19860 (100%) rename RCb19860 => resource/RCb19860 (100%) rename RCc19860 => resource/RCc19860 (100%) rename RCd19860 => resource/RCd19860 (100%) rename arrow.cur => resource/arrow.cur (100%) rename arrowdl.cur => resource/arrowdl.cur (100%) rename arrowdow.cur => resource/arrowdow.cur (100%) rename arrowdr.cur => resource/arrowdr.cur (100%) rename arrowlef.cur => resource/arrowlef.cur (100%) rename arrowrig.cur => resource/arrowrig.cur (100%) rename arrowul.cur => resource/arrowul.cur (100%) rename arrowup.cur => resource/arrowup.cur (100%) rename arrowur.cur => resource/arrowur.cur (100%) rename blupi-d.aps => resource/blupi-d.aps (100%) rename blupi-d.rc => resource/blupi-d.rc (100%) rename blupi-e.aps => resource/blupi-e.aps (100%) rename blupi-e.rc => resource/blupi-e.rc (100%) rename blupi-f.aps => resource/blupi-f.aps (100%) rename blupi-f.rc => resource/blupi-f.rc (100%) rename blupi.ico => resource/blupi.ico (100%) rename blupi.rct => resource/blupi.rct (100%) rename empty.cur => resource/empty.cur (100%) rename fill.cur => resource/fill.cur (100%) rename map.cur => resource/map.cur (100%) rename resource2.h => resource/resource2.h (100%) rename resrc1.h => resource/resrc1.h (100%) rename rstemp.rct => resource/rstemp.rct (100%) rename speedy.aps => resource/speedy.aps (100%) rename speedy.rc => resource/speedy.rc (100%) rename speedyblupi.aps => resource/speedyblupi.aps (100%) rename speedyblupi.rc => resource/speedyblupi.rc (100%) rename wait.cur => resource/wait.cur (100%) delete mode 100644 speedyblupi.dsp delete mode 100644 speedyblupi.dsw delete mode 100644 speedyblupi.ncb delete mode 100644 speedyblupi.opt delete mode 100644 speedyblupi.plg delete mode 100644 speedyblupi.sln delete mode 100644 speedyblupi.vcxproj delete mode 100644 speedyblupi.vcxproj.filters delete mode 100644 speedyblupi.vcxproj.user diff --git a/Speedy Eggbert 2 Source.vcxproj b/Speedy Eggbert 2 Source.vcxproj index 63b06f5..3e3868c 100644 --- a/Speedy Eggbert 2 Source.vcxproj +++ b/Speedy Eggbert 2 Source.vcxproj @@ -71,26 +71,14 @@ - - $(ProjectName)_ - - - $(ProjectName)_ - - - $(ProjectName)_ - - - $(ProjectName)_ - Level3 false - WINVER=0x400;WIN32;_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + _WIN32;WIN32;_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true dxsdk3\sdk\inc - UNICODE;_UNICODE;_WIN32_WINNT;NTDDI_VERSION + UNICODE;_UNICODE @@ -99,7 +87,7 @@ /DYNAMICBASE "legacy_stdio_definitions.lib" %(AdditionalOptions) /VERBOSE dxsdk3\sdk\lib;%(AdditionalLibraryDirectories) false - dxsdk3/sdk/lib/*.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + dxsdk3/sdk/lib/*.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies) Default true MultiplyDefinedSymbolOnly @@ -111,10 +99,10 @@ true true true - WINVER=0x400;WIN32;_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + _WIN32;WIN32;_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true dxsdk3\sdk\inc - UNICODE;_UNICODE;_WIN32_WINNT;NTDDI_VERSION + UNICODE;_UNICODE Windows @@ -125,17 +113,17 @@ MultiplyDefinedSymbolOnly /DYNAMICBASE "legacy_stdio_definitions.lib" %(AdditionalOptions) /VERBOSE Default - dxsdk3/sdk/lib/*.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + dxsdk3/sdk/lib/*.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies) Level3 true - WINVER=0x400;WIN32;_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + _WIN32;WIN32;_CRT_SECURE_NO_WARNINGS;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) true dxsdk3\sdk\inc - UNICODE;_UNICODE;_WIN32_WINNT;NTDDI_VERSION + UNICODE;_UNICODE Windows @@ -145,7 +133,7 @@ true MultiplyDefinedSymbolOnly /DYNAMICBASE "legacy_stdio_definitions.lib" %(AdditionalOptions) /VERBOSE - dxsdk3/sdk/lib/*.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + dxsdk3/sdk/lib/*.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies) @@ -154,10 +142,10 @@ true true true - WINVER=0x400;WIN32;_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + _WIN32;WIN32;_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true dxsdk3\sdk\inc - UNICODE;_UNICODE;_WIN32_WINNT;NTDDI_VERSION + UNICODE;_UNICODE Windows @@ -168,7 +156,7 @@ MultiplyDefinedSymbolOnly /DYNAMICBASE "legacy_stdio_definitions.lib" %(AdditionalOptions) /VERBOSE Default - dxsdk3/sdk/lib/*.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + dxsdk3/sdk/lib/*.lib;winmm.lib;kernel32.lib;user32.lib;gdi32.lib;%(AdditionalDependencies) diff --git a/Speedy Eggbert 2 Source.vcxproj.filters b/Speedy Eggbert 2 Source.vcxproj.filters index 682aa2e..9cd2dc3 100644 --- a/Speedy Eggbert 2 Source.vcxproj.filters +++ b/Speedy Eggbert 2 Source.vcxproj.filters @@ -64,6 +64,78 @@ Resource Files + + + Resource Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + + + Resource Files + + Source Files @@ -74,9 +146,24 @@ Source Files + + Source Files + Source Files + + Source Files + + + Source Files + + + Source Files + + + Source Files + Source Files @@ -110,92 +197,5 @@ Source Files - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - Source Files - - - - - Source Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - Header Files - - - - - Resource Files - - - - - Resource Files - \ No newline at end of file diff --git a/decblock.cpp b/decblock.cpp deleted file mode 100644 index 3993097..0000000 --- a/decblock.cpp +++ /dev/null @@ -1,776 +0,0 @@ -// DecBlock.cpp -// - -#include "def.h" -#include "decor.h" -#include "misc.h" -#include "obstacle.h" -#include "dectables.h" - -BOOL CDecor::BlitzActif(POINT cel) -{ - if (m_phase == WM_PHASE_BUILD) { - //TODO: rewrite this like a human - int foo = m_time >> 31; - return 1 - (((m_time ^ foo) - foo & 1 ^ foo) == foo); - } - - 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[cel.x][cel.y - 1].icon == 0x130) - { - PlaySound(SOUND_BLITZ, pos, 0); - } - - for (int i = 0; table_blitz[i] != -1; i++) - { - if (m_time % 100 == i) return TRUE; - } - } - - return FALSE; -} - -int CDecor::SoundEnviron(int sound, int obstacle) -{ - if ((obstacle >= 32 && obstacle <= 34) || (obstacle >= 41 && obstacle <= 47) || (obstacle >= 139 && obstacle <= 143)) - { - if (sound == SOUND_JUMPTOC) - { - return 79; - } - if (sound == SOUND_JUMPEND) - { - return 78; - } - } - if ((obstacle >= 1 && obstacle <= 28) || (obstacle >= 78 && obstacle <= 90) || (obstacle >= 250 && obstacle <= 260) || (obstacle >= 311 && obstacle <= 316) || (obstacle >= 324 && obstacle <= 329)) - { - if (sound == SOUND_JUMPTOC) - { - return 81; - } - if (sound == SOUND_JUMPEND) - { - return 80; - } - } - if ((obstacle >= 284 && obstacle <= 303) || obstacle == 338) - { - if (sound == SOUND_JUMPTOC) - { - return 83; - } - if (sound == SOUND_JUMPEND) - { - return 82; - } - } - if (obstacle >= 341 && obstacle <= 363) - { - if (sound == SOUND_JUMPTOC) - { - return 85; - } - if (sound == SOUND_JUMPEND) - { - return 84; - } - } - if (obstacle >= 215 && obstacle <= 234) - { - if (sound == SOUND_JUMPTOC) - { - return 87; - } - if (sound == SOUND_JUMPEND) - { - return 86; - } - } - if (obstacle >= 246 && obstacle <= 249) - { - if (sound == SOUND_JUMPTOC) - { - return 89; - } - if (sound == SOUND_JUMPEND) - { - return 88; - } - } - if (obstacle >= 107 && obstacle <= 109) - { - if (sound == SOUND_JUMPTOC) - { - return 91; - } - if (sound == SOUND_JUMPEND) - { - return 90; - } - } - return sound; -} - - -int CDecor::IsWorld(POINT pos) -{ - pos.x += 30; - pos.y += 30; - if (pos.x < 0 || pos.x >= 6400 || pos.y < 0 || pos.y >= 6400) - { - return -1; - } - int icon = m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon; - if (icon >= 158 && icon <= 165) - { - return icon - 158 + 1; - } - if (icon >= 166 && icon <= 173) - { - return icon - 166 + 1; - } - if (icon == 309 || icon == 310) - { - return 9; - } - if (icon >= 411 && icon <= 415) - { - return icon - 411 + 10; - } - if (icon >= 416 && icon <= 420) - { - return icon - 416 + 10; - } - if (icon >= 174 && icon <= 181) - { - return icon - 174 + 1; - } - if (icon == 184) - { - return 199; - } - return -1; -} - -void CDecor::ActiveSwitch(BOOL bState, POINT cel) -{ - POINT pos; - pos.x = cel.x * DIMOBJX; - pos.y = cel.y * DIMOBJY; - ModifDecor(pos, bState ? 384 : 385); - 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 * DIMOBJX; - pos.y = cel.y * DIMOBJY; - ModifDecor(pos, bState ? 378 : 379); - } - cel.x++; - } -} - -int CDecor::GetTypeBarre(POINT pos) -{ - POINT pos2 = pos; - pos.x += 30; - pos.y += 22; - if (pos.y % 64 > 44) - { - return 0; - } - if (pos.x < 0 || pos.x >= 6400 || pos.y < 0 || pos.y >= 6400) - { - return 0; - } - int icon = m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon; - if (icon != 138 && icon != 202) - { - return 0; - } - if (pos.y >= 6336) - { - return 1; - } - icon = m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY + 1]->icon; - if (IsPassIcon(icon)) - { - return 2; - } - RECT rect = BlupiRect(pos2); - rect.top = pos2.y + 60 - 2; - rect.bottom = pos2.y + 60 - 1; - if (DecorDetect(rect, TRUE)) - { - return 2; - } - return 1; -} - -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 / 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 / DIMOBJX, pos.y / DIMOBJY]->icon == 373; -} - -BOOL CDecor::IsGoutte(POINT pos, BOOL bAlways) -{ - pos.x += 30; - if (pos.x % 64 < 15 || pos.x % 64 > 49) - { - return FALSE; - } - if (pos.x < 0 || pos.x >= 6400 || pos.y < 0 || pos.y >= 6400) - { - return FALSE; - } - int icon = m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon; - if (bAlways) - { - return icon == 404 || icon == 410; - } - return icon == 404; -} - -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 / DIMOBJX, pos.y / DIMOBJY]->icon == 378; -} - -BOOL CDecor::IsSwitch(POINT pos, POINT celSwitch) -{ - pos.x += 30; - if (pos.x % 64 < 4 || pos.x % 64 > 60) - { - return FALSE; - } - if (pos.x < 0 || pos.x >= 6400 || pos.y < 0 || pos.y >= 6400) - { - return FALSE; - } - celSwitch.x = pos.x / 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) -{ - if (m_time / 3 % 10 > 2) - { - return FALSE; - } - pos.x += 30; - return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon == 317; -} - -BOOL CDecor::IsBlitz(POINT pos, BOOL bAlways) -{ - pos.x += 30; - if (pos.x < 0 || pos.x >= 6400 || pos.y < 0 || pos.y >= 6400) - { - return FALSE; - } - POINT tinyPoint; - tinyPoint.x = pos.x / DIMOBJX; - tinyPoint.y = pos.y / DIMOBJY; - return m_decor[tinyPoint.x, tinyPoint.y]->icon == 305 && (bAlways || BlitzActif(tinyPoint.x, tinyPoint.y)); -} - -BOOL CDecor::IsRessort(POINT pos) -{ - pos.x += 30; - pos.y += 60; - return pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400 && m_decor[pos.x / 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 / 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 / DIMOBJX, pos.y / DIMOBJY]->icon == 364) - { - 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 / DIMOBJX, pos.y / DIMOBJY]->icon == 364) - { - celBridge.x = pos.x / DIMOBJX; - celBridge.y = pos.y / DIMOBJY; - return TRUE; - } - return FALSE; - -} - -int CDecor::IsDoor(POINT pos, POINT celPorte) -{ - int num; - if (m_blupiDir == 1) - { - num = -60; - } - else - { - num = 60; - } - pos.x += 30; - for (int i = 0; i < 2; i++) - { - if (pos.x >= 0 && pos.x < 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 / DIMOBJX; - celPorte.y = pos.y / DIMOBJY; - return m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon; - } - pos.x += num; - } - return -1; -} - -int CDecor::IsTeleporte(POINT pos) -{ - if (pos.x % DIMOBJX > 6) - { - return -1; - } - pos.x += 30; - pos.y -= 60; - if (pos.x < 0 || pos.x >= DIMOBJX * MAXCELX || pos.y < 0 || pos.y >= DIMOBJY * MAXCELY) - { - return -1; - } - 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 / DIMOBJX, pos.y / DIMOBJY]->icon; - } - return -1; -} - -BOOL CDecor::SearchTeleporte(POINT pos, POINT newpos) -{ - int num = IsTeleporte(pos); - if (num == -1) - { - return FALSE; - } - for (int i = 0; i < 100; i++) - { - for (int j = 0; j < 100; j++) - { - if (num == m_decor[i][j]->icon) - { - newpos.x = i * 64; - newpos.y = j * 64 + 60; - if (newpos.x < pos.x - 40 || newpos.x > pos.x + 40 || newpos.y < pos.y - 40 || newpos.y > pos.y + 40) - { - return TRUE; - } - } - } - } - return FALSE; -} - -BOOL CDecor::IsSurfWater(POINT pos) -{ - if (pos.y % 64 < 64 - BLUPISURF) - { - return FALSE; - } - 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; -} - -BOOL CDecor::IsDeepWater(POINT pos) -{ - int num = (pos.x + 30) / 64; - int num2 = pos.y / DIMOBJY; - if (num < 0 || num >= 100 || num2 < 0 || num2 >= 100) - { - return FALSE; - } - int icon = m_decor[num, num2]->icon; - return icon == 91 || icon == 92; -} - -BOOL CDecor::IsOutWater(POINT pos) -{ - int icon = m_decor[(pos.x + 30) / 64, (pos.y + 30) / 64]->icon; - return icon != 91 && icon != 92 && IsPassIcon(icon); -} - -BOOL CDecor::IsPassIcon(int icon) -{ - if (icon == 324 && m_time / 4 % 20 >= 18) - { - return TRUE; - } - if (icon >= 0 && icon < MAXQUART) - { - for (int i = 0; i < 16; i++) - { - if (table_decor_quart[icon * 16 + i] != 0) - { - return FALSE; - } - } - } - return TRUE; -} - -BOOL CDecor::IsBlocIcon(int icon) -{ - if (icon < 0 || icon >= MAXQUART) - { - return FALSE; - } - if (icon == 324 && m_time / 4 % 20 < 18) - { - return FALSE; - } - for (int i = 0; i < 16; i++) - { - if (table_decor_quart[icon * 16 + i] == 0) - { - return FALSE; - } - } - return FALSE; -} - -BOOL CDecor::IsVentillo(POINT pos) -{ - int num = 0; - BOOL flag = FALSE; - POINT tinyPoint; - pos.x += 30; - pos.y += 30; - if (pos.x < 0 || pos.x >= 6400 || pos.y < 0 || pos.y >= 6400) - { - return FALSE; - } - int icon = m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon; - if (icon < 126 || icon > 137) - { - return FALSE; - } - if (icon == 126) - { - if (pos.x % 64 <= 16) - { - flag = TRUE; - } - tinyPoint.x = -64; - tinyPoint.y = 0; - num = 110; - } - if (icon == 129) - { - if (pos.x % 64 >= 48) - { - flag = TRUE; - } - tinyPoint.x = 64; - tinyPoint.y = 0; - num = 114; - } - if (icon == 132) - { - if (pos.y % 64 <= 32) - { - flag = TRUE;; - } - tinyPoint.x = 0; - tinyPoint.y = -64; - num = 118; - } - if (icon == 135) - { - if (pos.y % 64 >= 48) - { - flag = TRUE; - } - tinyPoint.x = 0; - tinyPoint.y = 64; - num = 122; - } - if (!flag) - { - return FALSE; - } - ModifDecor(pos, -1); - do - { - pos.x += tinyPoint.x; - pos.y += tinyPoint.y; - if (num != m_decor[pos.x / DIMOBJX, pos.y / DIMOBJY]->icon) - { - break; - } - ModifDecor(pos, -1); - } while (pos.x >= 0 && pos.x < 6400 && pos.y >= 0 && pos.y < 6400); - return TRUE; -} - -void CDecor::ModifDecor(POINT pos, int icon, BOOL bMulti) -{// TODO: this - 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 / DIMOBJX, pos.y / DIMOBJY]->icon = icon; -} - -BOOL CDecor::IsRightBorder(POINT pos, POINT offset) -{ - -} - - -BOOL CDecor::IsFromage(POINT cel) -{ - if (!IsValidCel(cel)) return FALSE; - - int icon = m_decor[cel.x][cel.y].icon; - return (icon >= 246 && icon <= 249) || icon == 339; -} - -BOOL CDecor::IsGrotte(POINT cel) -{ - if (!IsValidCel(cel)) return FALSE; - - int icon = m_decor[x, y]->icon; - return icon = 284 || icon == 301 || icon == 337; -} - -void CDecor::AdaptMidBorder(POINT cel) -{ - if (!IsValidCel(cel)) return; - - int num = 15; - if (!IsRightBorder({ cel.x, cel.y + 1 }, { 0, -1 })) - { - num &= -2; - } - if (!IsRightBorder({ cel.x, cel.y + 1 }, { 0, 1 })) - { - num &= -3; - } - if (!IsRightBorder({ cel.x + 1, cel.y }, { -1, 0 })) - { - num &= -5; - } - if (!IsRightBorder({ cel.x - 1, cel.y }, { 1, 0 })) - { - num &= -9; - } - int num2 = m_decor[cel.x][cel.y].icon; - if (num2 == 156) - { - num2 = 35; - } - if (num2 == 252 || num2 == 253) - { - num2 = 251; - } - if (num2 == 255) - { - num2 = 254; - } - if (num2 == 362) - { - num2 = 347; - } - if (num2 == 363) - { - num2 = 348; - } - if (num2 >= 341 && num2 <= 346) - { - num2 = 341; - } - for (int i = 0; i < 144; i++) - { - if (num2 == table_adapt_decor[i]) - { - num2 = table_adapt_decor[i / 16 * 16 + num]; - if (num2 == 35 && m_random->next() % 2 == 0) - { - num2 = 156; - } - if (num2 == 251) - { - num2 = m_random->next(251, 253); - } - if (num2 == 254 && m_random->next() % 2 == 0) - { - num2 = 255; - } - if (num2 == 347 && m_random->next() % 2 == 0) - { - num2 = 362; - } - if (num2 == 348 && m_random->next() % 2 == 0) - { - num2 = 363; - } - if (num2 == 341) - { - num2 = m_random->next(341, 346); - } - m_decor[x, y]->icon = num2; - return; - } - } - num2 = m_decor[x, y]->icon; - if (num2 == -1 || (num2 >= 264 && num2 <= 282)) - { - num = 15; - if (!IsFromage(x, y + 1)) - { - num &= -2; - } - if (!IsFromage(x, y - 1)) - { - num &= -3; - } - if (!IsFromage(x + 1, y)) - { - num &= -5; - } - if (!IsFromage(x - 1, y)) - { - num &= -9; - } - num2 = table_adapt_fromage[num]; - if (num2 == 268 && m_random->next() % 2 == 0) - { - num2 = 279; - } - if (num2 == 269 && m_random->next() % 2 == 0) - { - num2 = 280; - } - if (num2 == 264 && m_random->next() % 2 == 0) - { - num2 = 281; - } - if (num2 == 265 && m_random->next() % 2 == 0) - { - num2 = 282; - } - m_decor[x, y]->icon = num2; - } - num2 = m_decor[x, y]->icon; - if (num2 == -1 || (num2 >= 285 && num2 <= 303 && num2 != 301)) - { - num = 15; - if (!IsGrotte(x, y + 1)) - { - num &= -2; - } - if (!IsGrotte(x, y - 1)) - { - num &= -3; - } - if (!IsGrotte(x + 1, y)) - { - num &= -5; - } - if (!IsGrotte(x - 1, y)) - { - num &= -9; - } - num2 = table_adapt_fromage[num + 16]; - if (num2 == 289 && m_random->next() % 2 == 0) - { - num2 == 300; - } - if (num2 == 285 && m_random->next() % 2 == 0) - { - num2 = 302; - } - if (num2 == 286 && m_random->next() % 2 == 0) - { - num2 = 303; - } - m_decor[x, y]->icon = num2; - } -} - -void CDecor::AdaptBorder(POINT cel) -{ - AdaptMidBorder(cel.x, cel.y); - AdaptMidBorder(cel.x + 1, cel.y); - AdaptMidBorder(cel.x - 1, cel.y); - AdaptMidBorder(cel.x, cel.y + 1); - AdaptMidBorder(cel.x, cel.y - 1); - int icon = m_decor[cel.x, cel.y]->icon; - if (icon != -1 && !IsPassIcon(icon)) - { - MoveObjectDelete(cel); - } - icon = m_decor[cel.x, cel.y]->icon; - if (icon == 304) - { - for (int i = 0; i < 4; i++) - { - cel.y++; - if (cel.y >= 100) - { - break; - } - icon = m_decor[cel.x, cel.y]->icon; - if (icon != -1) - { - break; - } - m_decor[cel.x, cel.y]->icon = 305; - } - } - if (icon == -1) - { - for (int i = 0; i < 4; i++) - { - cel.y++; - if (cel.y >= 100) - { - return; - } - icon = m_decor[cel.x, cel.y]->icon; - if (icon != 305) - { - return; - } - m_decor[cel.x, cel.y]->icon = -1; - } - } -} \ No newline at end of file diff --git a/decdesign.cpp b/decdesign.cpp deleted file mode 100644 index cfcaae4..0000000 --- a/decdesign.cpp +++ /dev/null @@ -1,654 +0,0 @@ -// DecDesign.cpp -// - -#include "def.h" -#include "decor.h" -#include "misc.h" - -POINT CDecor::ScreenPosToCelPos(POINT pos) -{ - if (pos.x >= 0 && pos.x < LXIMAGE && pos.y >= 0 && pos.y < LYIMAGE) { - return { - (m_posDecor.x + m_dimCelHili.x * -32 + 32 + pos.x) / 64, - (m_posDecor.y + m_dimCelHili.y * -32 + 32 + pos.y) / 64 - }; - } - else return { -1, -1 }; -} - -void CDecor::SetCelPosFromScreenPos(POINT pos) -{ - m_posCelHili = ScreenPosToCelPos(pos); -} - -void CDecor::SetFieldCC38AndStuff(int _foo, int _bar) -{ - m_dimCelHili = { 1, 1 }; - if (_foo == 2 && _bar != 3 && _bar != 9 && _bar != 10) m_dimCelHili = { 2, 2 }; - if (_foo == 3) m_iconLift = _bar; - if (_foo == 4) m_iconLift = _bar + 20; - if (_foo == 5) m_iconLift = _bar + 40; - m_2ndPositionCalculationSlot = -1; -} - -void CDecor::DeleteCel(POINT cel) -{ - m_2ndPositionCalculationSlot = -1; - - if (!IsValidCel(cel)) return; - - m_decor[cel.x][cel.y].icon = -1; - AdaptBorder(cel); - m_bigDecor[cel.x][cel.y].icon = -1; - MoveObjectDelete(cel); -} - -void CDecor::PlaceMenuItem(short *pCel, int *pTable, int lastIndex, BYTE flags, int currentIcon, BOOL bRand) -{ - if (bRand) { - *pCel = pTable[rand() % (pTable[0] + 1)]; - } - else if (!flags & 8) { - if (flags & 1) { - lastIndex++; - if (*pCel == pTable[lastIndex] && currentIcon != 0 && pTable[0] <= lastIndex) { - lastIndex = 0; - } - *pCel = pTable[lastIndex + 1]; - } - } - else { - *pCel = pTable[lastIndex + 1]; - } -} - -void CDecor::PlaceItemFromMenu1(POINT cel, int index, BYTE flags, int currentIcon) -{ - m_2ndPositionCalculationSlot = -1; - - short *pIcon = &m_decor[cel.x][cel.y].icon; - short *pIconBig = &m_bigDecor[cel.x][cel.y].icon; - - if (!IsValidCel(cel)) return; - - switch (index) { - case 0: // Tree - PlaceMenuItem(pIconBig, table_366b0, m_lastDecorIndexes[0], flags, *pIconBig, TRUE); - break; - case 1: // Palmtree - PlaceMenuItem(pIconBig, table_366c0, m_lastDecorIndexes[1], flags, *pIconBig, TRUE); - break; - case 2: // Decorative plant - PlaceMenuItem(pIconBig, table_366d8, m_lastDecorIndexes[2], flags, *pIconBig, TRUE); - break; - case 3: // Marine plant - *pIcon = Object::Marine_1; - break; - case 4: // House - PlaceMenuItem(pIconBig, table_366e8, m_lastDecorIndexes[3], flags, *pIconBig, TRUE); - break; - case 5: // Mechanical background - PlaceMenuItem(pIconBig, table_366f8, m_lastDecorIndexes[4], flags, *pIconBig, TRUE); - break; - case 6: // Kid's stuff background - PlaceMenuItem(pIconBig, table_36710, m_lastDecorIndexes[5], flags, *pIconBig, TRUE); - break; - case 7: // Green slime 2 - PlaceMenuItem(pIconBig, table_36748, m_lastDecorIndexes[6], flags, *pIconBig, TRUE); - break; - case 8: // Element for Palace - PlaceMenuItem(pIconBig, table_36520, m_lastDecorIndexes[7], flags, *pIconBig, TRUE); - break; - case 9: // Support - PlaceMenuItem(pIcon, table_36670, m_lastDecorIndexes[8], flags, *pIcon, TRUE); - break; - case 10: // Spider's web - PlaceMenuItem(pIcon, table_366a0, m_lastDecorIndexes[9], flags, *pIcon, TRUE); - break; - } -} - -void CDecor::PlaceItemFromMenu2(POINT cel, int index, BYTE flags, int currentIcon) -{ - m_2ndPositionCalculationSlot = -1; - - short *pIcon = &m_decor[cel.x][cel.y].icon; - - if (!IsValidCel(cel)) return; - - m_iconLift = index; - - switch (index) { - case 0: // Square tech-blocks - PlaceMenuItem(pIcon, table_36418, m_lastDecorIndexes[10], flags, *pIcon, TRUE); - break; - case 1: // Special tech-blocks - PlaceMenuItem(pIcon, table_36458, m_lastDecorIndexes[11], flags, *pIcon, TRUE); - break; - case 2: // Triangular tech-blocks - PlaceMenuItem(pIcon, table_36488, m_lastDecorIndexes[12], flags, *pIcon, FALSE); - break; - case 3: // Secret tech-block - PlaceMenuItem(pIcon, table_364a0, m_lastDecorIndexes[13], flags, *pIcon, FALSE); - break; - case 4: // Mechanical square - PlaceMenuItem(pIcon, table_364b0, m_lastDecorIndexes[14], flags, *pIcon, TRUE); - break; - case 5: // Special mechanical - PlaceMenuItem(pIcon, table_364d0, m_lastDecorIndexes[15], flags, *pIcon, FALSE); - break; - case 6: // Secret mechanical - PlaceMenuItem(pIcon, table_364e8, m_lastDecorIndexes[16], flags, *pIcon, FALSE); - break; - case 7: // Pipes - *pIcon = Object::Pipes_1; - break; - } - AdaptBorder(cel); -} - -void CDecor::PlaceItemFromMenu3(POINT cel, int index, BYTE flags, int currentIcon) -{ - m_2ndPositionCalculationSlot = -1; - - short *pIcon = &m_decor[cel.x][cel.y].icon; - - if (!IsValidCel(cel)) return; - - m_iconLift = index + 20; - - switch (index) { - case 0: // Square rock - PlaceMenuItem(pIcon, table_36530, m_lastDecorIndexes[20], flags, *pIcon, FALSE); - break; - case 1: // Triangular rock - PlaceMenuItem(pIcon, table_36538, m_lastDecorIndexes[21], flags, *pIcon, FALSE); - break; - case 2: // Secret rock - PlaceMenuItem(pIcon, table_36548, m_lastDecorIndexes[22], flags, *pIcon, FALSE); - break; - case 3: // Cave - // todo - break; - case 4: // Secret cave - *pIcon = Object::CaveSecret; - break; - case 5: // Cheese - *pIcon = Random(Object::CheeseSquare_1, Object::CheeseSquare_4); - break; - case 6: // Secret cheese - *pIcon = Object::CheeseSecret; - break; - case 7: // Green slime 2 - *pIcon = Object::Slime_1; - break; - case 8: // Grass - PlaceMenuItem(pIcon, table_365d0, m_lastDecorIndexes[23], flags, *pIcon, FALSE); - break; - case 9: // Water - PlaceMenuItem(pIcon, table_36630, m_lastDecorIndexes[24], flags, *pIcon, FALSE); - break; - } - AdaptBorder(cel); -} - -void CDecor::PlaceItemFromMenu4(POINT cel, int index, BYTE flags, int currentIcon) -{ - m_2ndPositionCalculationSlot = -1; - - short *pIcon = &m_decor[cel.x][cel.y].icon; - - if (!IsValidCel(cel)) return; - - m_iconLift = index + 40; - - switch (index) { - case 0: // Palace - break; - case 1: // Element for Palace - break; - case 2: // Building facade - break; - case 3: // Roof - break; - case 4: // Bricks - break; - case 5: // Furniture - break; - case 6: // Wooden wall - break; - case 7: // Kid's stuff square - break; - case 8: // Special Kid's stuff - break; - case 9: // Invisible block - break; - } - AdaptBorder(cel); -} - -void CDecor::PlaceItemFromMenu5(POINT cel, int index, BYTE flags, int currentIcon) -{ - m_2ndPositionCalculationSlot = -1; - - int mobId; - MoveObject* pMob; - - short *pIcon = &m_decor[cel.x][cel.y].icon; - - if (!IsValidCel(cel)) return; - - switch (index) { - case 0: // Bomb - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = TYPE_BOMBEDOWN; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 4 }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - pMob->channel = CHELEMENT; - pMob->icon = 0x0c; - break; - case 1: // Hanging bomb - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = TYPE_BOMBEUP; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - pMob->channel = CHELEMENT; - pMob->icon = 0x30; - break; - case 2: // Homing bomb - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = TYPE_BOMBEFOLLOW1; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX, cel.y * DIMOBJY }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - pMob->channel = CHELEMENT; - pMob->icon = 0x100; - break; - case 3: // Lava - PlaceMenuItem(pIcon, table_decor_lave, m_lastDecorIndexes[40], flags, *pIcon, FALSE); - break; - case 4: // Fan - PlaceMenuItem(pIcon, table_decor_ventillog, m_lastDecorIndexes[41], flags, *pIcon, FALSE); - break; - case 5: // Wind - PlaceMenuItem(pIcon, table_decor_ventg, m_lastDecorIndexes[42], flags, *pIcon, FALSE); - break; - case 6: // Slime trap (floor) - *pIcon = Object::SlimeTrapFloor_1; - break; - case 7: // Slime trap (ceiling) - *pIcon = Object::SlimeTrapCeiling_1; - break; - case 8: // Circular saw - PlaceMenuItem(pIcon, table_decor_scie, m_lastDecorIndexes[43], flags, *pIcon, FALSE); - break; - case 9: // Inverter - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = TYPE_INVERT; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 8 }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - pMob->channel = CHELEMENT; - pMob->icon = 0xBB; - break; - case 10: // Lightning - *pIcon = Object::LightningMachine; - break; - case 11: // Crusher - *pIcon = Object::Crusher_1; - break; - } - AdaptBorder(cel); -} - -void CDecor::PlaceItemFromMenu6(POINT cel, int index, BYTE flags, int currentIcon) -{ - m_2ndPositionCalculationSlot = -1; - - short *pIcon = &m_decor[cel.x][cel.y].icon; - - if (!IsValidCel(cel) || currentIcon == 0) return; - - switch (m_iconLift) { - - } - - switch (index) { - case 0: // Slow lift - case 1: // Normal lift - case 2: // Fast lift - case 3: // Fast/Slow lift - case 4: // Lift with conveyor belt - case 5: // Bulldozer - case 6: // Fish - case 7: // Bird - case 8: // Wasp - case 9: // Slime creature - case 10: // Moving bomb - case 11: // Heliported ennemy - case 12: // Motorized ennemy - } -} - -void CDecor::PlaceItemFromMenu7(POINT cel, int index, BYTE flags, int currentIcon) -{ - m_2ndPositionCalculationSlot = -1; - - MoveObject* pMob; - int mobId; - - short *pIcon = &m_decor[cel.x][cel.y].icon; - - if (!IsValidCel(cel)) return; - - switch (index) { - case 0: // Chest - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = TYPE_TRESOR; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 4 }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - pMob->channel = CHELEMENT; - pMob->icon = 0x00; - break; - case 1: // Egg - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = TYPE_EGG; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 8 }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - pMob->channel = CHELEMENT; - pMob->icon = 0x15; - break; - case 2: // Lollipop - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = TYPE_POWER; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 8 }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - pMob->channel = CHELEMENT; - pMob->icon = 0x88; - break; - case 3: // Shield - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = TYPE_SHIELD; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 8 }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - pMob->channel = CHELEMENT; - pMob->icon = 0x90; - break; - case 4: // Invisibility potion - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = TYPE_DRINK; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 6 }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - pMob->channel = CHELEMENT; - pMob->icon = 0xB2; - break; - case 5: // Glue supply - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = TYPE_BULLET; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 4 }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - pMob->channel = CHELEMENT; - pMob->icon = 0xB1; - break; - case 6: // Recharging device - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = TYPE_CHARGE; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 4 }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - pMob->channel = CHELEMENT; - pMob->icon = 0xEE; - break; - case 7: // Personal bomb - int type; - mobId = MoveObjectSearch(cel, -1); - if (mobId != -1 && currentIcon != 0) { - if (mobId >= TYPE_BOMBEPERSO4) { - m_lastDecorIndexes[60] = 0; - } - else { - m_lastDecorIndexes[60] = m_moveObject[mobId].type - TYPE_BOMBEPERSO1; - } - } - type = m_lastDecorIndexes[60] + TYPE_BOMBEPERSO1; - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = type; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 6 }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - switch (type) { - default: - case TYPE_BOMBEPERSO1: - pMob->channel = CHBLUPI; - break; - case TYPE_BOMBEPERSO2: - pMob->channel = CHBLUPI1; - break; - case TYPE_BOMBEPERSO3: - pMob->channel = CHBLUPI2; - break; - case TYPE_BOMBEPERSO4: - pMob->channel = CHBLUPI3; - break; - } - pMob->icon = 0x101; - break; - case 8: // Dynamite - MoveObjectDelete(cel); - mobId = MoveObjectFree(); - if (mobId == -1) return; - pMob = &m_moveObject[mobId]; - pMob->type = TYPE_DYNAMITE; - pMob->stepAdvance = 1; - pMob->stepRecede = 1; - pMob->timeStopStart = 0; - pMob->timeStopEnd = 0; - pMob->posStart = { cel.x * DIMOBJX + 2, cel.y * DIMOBJY + 6 }; - pMob->posEnd = pMob->posStart; - pMob->posCurrent = pMob->posStart; - pMob->step = STEP_STOPSTART; - pMob->time = 0; - pMob->phase = 0; - pMob->channel = CHELEMENT; - pMob->icon = 0xFC; - break; - } - AdaptBorder(cel); -} - -void CDecor::PlaceItemFromMenu8(POINT cel, int index, BYTE flags, int currentIcon) -{ - m_2ndPositionCalculationSlot = -1; - - short *pIcon = &m_decor[cel.x][cel.y].icon; - - if (!IsValidCel(cel)) return; - - switch (index) { - case 0: // Key - case 1: // Door - case 2: // Closed while not all chests have been found - case 3: // Teleporter - case 4: // Bar to hang from - case 5: // Spring - case 6: // Vanishing bloc - case 7: // Fragile bridge - case 8: // Wooden case - case 9: // Secret wooden case - } -} - -void CDecor::PlaceItemFromMenu9(POINT cel, int index, BYTE flags, int currentIcon) -{ - m_2ndPositionCalculationSlot = -1; - - short *pIcon = &m_decor[cel.x][cel.y].icon; - - if (!IsValidCel(cel)) return; - - switch (index) { - case 0: // Hovercraft - case 1: // Helicopter - case 2: // Skateboard - case 3: // Jeep - case 4: // Glue tank - } -} - -void CDecor::PlaceItemFromMenu10(POINT cel, int index, BYTE flags, int currentIcon) -{ - m_2ndPositionCalculationSlot = -1; - - short *pIcon = &m_decor[cel.x][cel.y].icon; - - if (!IsValidCel(cel)) return; - - switch (index) { - case 0: // Goal - case 1: // Yellow Blupi - case 2: // Orange Blupi - case 3: // Blue Blupi - case 4: // Green Blupi - case 5: // Door - case 6: // Level start - case 7: // Key - } -} - -char* CDecor::GetMissionTitle() -{ - return m_missionTitle; -} - -void CDecor::SetMissionTitle(char *str) -{ - strcpy(m_missionTitle, str); -} diff --git a/decio.cpp b/decio.cpp deleted file mode 100644 index f977845..0000000 --- a/decio.cpp +++ /dev/null @@ -1,218 +0,0 @@ -// DecIO.cpp -// - -#include "def.h" -#include "decor.h" -#include "misc.h" - -void CDecor::GetMissionPath(char* str, int user, int mission, BOOL bUser) -{ - if (bUser != 0) - { - sprintf(str, "data\%.3d-%.3d.blp", user, mission); - AddUserPath(str); - return; - } - sprintf(str, "data\world%.3d.blp", mission); - AddUserPath(str); - return; -} - -BOOL CDecor::CurrentWrite(int gamer, int mission, BOOL bUser) -{ - char filename[MAX_PATH]; - FILE* file = NULL; - DescFile* pBuffer = NULL; - int nb, i; - - InitDecor(); - GetMissionPath(filename, gamer, mission, bUser); - - file = fopen(filename, "wb"); - if (file == NULL) goto error; - - pBuffer = (DescFile*)malloc(sizeof(DescFile)); - if (pBuffer == NULL) goto error; - memset(pBuffer, 0, sizeof(DescFile)); - - pBuffer->cameraPos = m_posDecor; - pBuffer->worldDim = m_dimDecor; - pBuffer->music = m_music; - pBuffer->region = m_region; - - for (i = 0; i < MAXBUTTON; i++) - { - pBuffer->ButtonExist[i] = m_buttonExist[i]; - } - for (i = 0; i < 4; i++) - { - pBuffer->memoPos[i] = m_memoPos[i]; - } - -error: - if (pBuffer != NULL) free(pBuffer); - if (file != NULL) fclose(file); - return FALSE; -} - -BOOL CDecor::CurrentRead(int gamer, int mission, BOOL bUser) -{ - char filename[MAX_PATH]; - FILE* file = NULL; - DescFile* pBuffer = NULL; - int majRev, minRev; - int nb, i, x, y; - OldBlupi oldBlupi; - - Init(-1, -1); - - if (bUser) - { - sprintf(filename, "data\\user%.3d.blp", rank); - AddUserPath(filename); - } - else - { - sprintf(filename, "data\\world%.3d.blp", rank); - if (rank < 200) - { - AddCDPath(filename); - } - } - - file = fopen(filename, "rb"); - if (file == NULL) goto error; - - pBuffer = (DescFile*)malloc(sizeof(DescFile)); - if (pBuffer == NULL) goto error; - - nb = fread(pBuffer, sizeof(DescFile), 1, file); - if (nb < 1) goto error; - - majRev = pBuffer->majRev; - minRev = pBuffer->minRev; - - if (majRev == 1 && minRev == 0) goto error; - - if (majRev == 1 && minRev == 3) - { - if (pBuffer->nbDecor != MAXCELX * MAXCELY || - pBuffer->lgDecor != sizeof(Cellule) || - pBuffer->nbBlupi != MAXBLUPI || - pBuffer->lgBlupi != sizeof(OldBlupi) || - pBuffer->nbMove != MAXMOVE || - pBuffer->lgMove != sizeof(Move)) goto error; - } - else - { - if (pBuffer->nbDecor != MAXCELX * MAXCELY || - pBuffer->lgDecor != sizeof(Cellule) || - pBuffer->nbBlupi != MAXBLUPI || - pBuffer->lgBlupi != sizeof(Blupi) || - pBuffer->nbMove != MAXMOVE || - pBuffer->lgMove != sizeof(Move)) goto error; - } - - SetCoin(pBuffer->celCoin); - if (bUser) - { - world = pBuffer->world; - time = pBuffer->time; - total = pBuffer->totalTime; - } - m_celHome = pBuffer->celCoin; - m_term = pBuffer->term; - m_music = pBuffer->music; - m_region = pBuffer->region; - - if (bUser) - { - m_skill = pBuffer->skill; - } - - for (i = 0; i < MAXBUTTON; i++) - { - m_buttonExist[i] = pBuffer->buttonExist[i]; - } - - for (i = 0; i < 4; i++) - { - m_memoPos[i] = pBuffer->memoPos[i]; - } - - nb = fread(m_decor, sizeof(Cellule), MAXCELX * MAXCELY / 4, file); - if (nb < MAXCELX * MAXCELY / 4) goto error; - if (majRev == 1 && minRev < 5) - { - for (x = 0; x < MAXCELX / 2; x++) - { - for (y = 0; y < MAXCELY / 2; y++) - { - if (m_decor[x][y].objectIcon >= 128 && - m_decor[x][y].objectIcon <= 130) - { - m_decor[x][y].objectIcon -= 128 - 17; - } - } - } - } - - if (majRev == 1 && minRev == 3) - { - memset(m_blupi, 0, sizeof(Blupi) * MAXBLUPI); - for (i = 0; i < MAXBLUPI; i++) - { - nb = fread(&oldBlupi, sizeof(OldBlupi), 1, file); - if (nb != 1) goto error; - memcpy(m_blupi + i, &oldBlupi, sizeof(OldBlupi)); - ListFlush(i); - } - } - else - { - nb = fread(m_blupi, sizeof(Blupi), MAXBLUPI, file); - if (nb < MAXBLUPI) goto error; - } - - nb = fread(m_move, sizeof(Move), MAXMOVE, file); - if (nb < MAXMOVE) goto error; - - nb = fread(m_lastDrapeau, sizeof(POINT), MAXLASTDRAPEAU, file); - if (nb < MAXLASTDRAPEAU) - { - InitDrapeau(); - } - - BlupiDeselect(); - - free(pBuffer); - fclose(file); - return TRUE; - -error: - if (pBuffer != NULL) free(pBuffer); - if (file != NULL) fclose(file); - - Flush(); - return FALSE; -} - -BOOL CDecor::SomethingMissionPath(int gamer, int mission, BOOL bUser) -{ - -} - -BOOL CDecor::MissionStart(int gamer, int mission, BOOL bUser) -{ - -} - -BOOL CDecor::Read(int gamer, int mission, BOOL *pbMission, BOOL *pbPrivate) -{ - -} - -BOOL CDecor::Write(int gamer, int mission, char* param3) -{ - -} diff --git a/decmove.cpp b/decmove.cpp deleted file mode 100644 index a751cb5..0000000 --- a/decmove.cpp +++ /dev/null @@ -1,2214 +0,0 @@ -// DecMove.cpp -// - -#include "def.h" -#include "decor.h" -#include "misc.h" - -BOOL CDecor::TestPath(RECT rect, POINT start, POINT end) -{ - int num = abs(end.x - start.x); - int num2 = abs(end.y - start.y); - - POINT tinyPoint = start; - if (num > num2) - { - RECT rect2; - if (end.x > start.x) - { - for (int i = 0; i <= num; i++) - { - int j = i * (end.y - start.y) / num; - rect2.left = rect.left + i; - rect2.right = rect.right + i; - rect2.top = rect.top + j; - rect2.bottom = rect.bottom + j; - if (DecorDetect(rect2)) - { - end = tinyPoint; - return FALSE; - } - tinyPoint.x = start.x + i; - tinyPoint.y = start.y + j; - } - } - if (end.x < start.x) - { - for (int i = 0; i >= -num; i--) - { - int j = i * (start.y - end.y) / num; - rect2.left = rect.left + i; - rect2.right = rect.right + i; - rect2.top = rect.top + j; - rect2.bottom = rect.bottom + j; - if (DecorDetect(rect2)) - { - end = tinyPoint; - return FALSE; - } - tinyPoint.x = start.x + i; - tinyPoint.y = start.y + j; - } - } - } - else - { - RECT rect2; - if (end.y > start.y) - { - for (int j = 0; j <= num2; j++) - { - int i = j * (end.x - start.x) / num2; - rect2.left = rect.left + i; - rect2.right = rect.right + i; - rect2.top = rect.top + j; - rect2.bottom = rect.bottom + j; - if (DecorDetect(rect2)) - { - end = tinyPoint; - return FALSE; - } - tinyPoint.x = start.x + i; - tinyPoint.y = start.y + j; - } - } - if (end.y < start.y) - { - for (int j = 0; j >= -num2; j--) - { - int i = j * (start.x - end.x) / num2; - rect2.left = rect.left + i; - rect2.right = rect.right + i; - rect2.top = rect.top + j; - rect2.bottom = rect.bottom + j; - if (DecorDetect(rect2)) - { - end = tinyPoint; - return FALSE; - } - tinyPoint.x = start.x + i; - tinyPoint.y = start.y + j; - } - } - } - return TRUE; -} - - -void CDecor::MoveObjectPollution() -{ -} - -void CDecor::MoveObjectPlouf(POINT pos) -{ - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i].type == 14) - { - return; - } - } - pos.y -= 45; - PlaySound(23, pos); - ObjectStart(pos, 14, 0); -} - -void CDecor::MoveObjectTiplouf(POINT pos) -{ - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i].type == 35) - { - return; - } - } - if (m_blupiDir == 2) - { - pos.x += 5; - } - else - { - pos.x -= 5; - } - pos.y -= 45; - PlaySound(64, pos); - ObjectStart(pos, 35, 0); -} - -void CDecor::MoveObjectBlup(POINT pos) -{ - PlaySound(24, pos); - pos.y -= 20; - int num = 0; - POINT tinyPoint = pos; - while (tinyPoint.y > 0) - { - int icon = m_decor[(tinyPoint.x + 16) / 64, tinyPoint.y / 64]->icon; - if (icon != 91 && icon != 92) - { - break; - } - num++; - tinyPoint.y -= 64; - } - num--; - if (num <= 0) - { - return; - } - int num2 = MoveObjectFree(); - if (num2 == -1) - { - return; - } - m_moveObject[num2]->type = 15; - m_moveObject[num2]->phase = 0; - m_moveObject[num2]->posCurrent.x = pos.x; - m_moveObject[num2]->posCurrent.y = pos.y; - m_moveObject[num2]->posStart = m_moveObject[num2]->posCurrent; - m_moveObject[num2]->posEnd.x = pos.x; - m_moveObject[num2]->posEnd.y = pos.y - num * 64; - m_moveObject[num2]->timeStopStart = 0; - m_moveObject[num2]->stepAdvance = num * 10; - m_moveObject[num2]->step = 2; - m_moveObject[num2]->time = 0; - MoveObjectStepIcon(num2); -} - - -void CDecor::FlushBalleTraj() -{ - for (int i = 0; i < 1300; i++) - { - m_balleTraj[i] = 0; - } -} - -void CDecor::SetBalleTraj(POINT pos) -{ - if (pos.x < 0 || pos.x >= 100 || pos.y < 0 || pos.y >= 100) - { - return; - } - int num = pos.y * 13; - num += pos.x / 8; - int num2 = pos.x & 7; - m_balleTraj[num] |= 1 << num2; -} - -BOOL CDecor::IsBalleTraj(POINT pos) -{ - pos.x = (pos.x + 32) / 64; - pos.y = (pos.y + 32) / 64; - if (pos.x < 0 || pos.x >= 100 || pos.y < 0 || pos.y >= 100) - { - return FALSE; - } - int num = pos.y * 13; - num += pos.x / 8; - int num2 = pos.x & 7; - return (m_balleTraj[num] & 1 << num2) != 0; -} - -void CDecor::FlushMoveTraj() -{ - for (int i = 0; i < 1300; i++) - { - m_moveTraj[i] = 0; - } -} - -void CDecor::SetMoveTraj(POINT pos) -{ - - if (pos.x < 0 || pos.x >= 100 || pos.y < 0 || pos.y >= 100) - { - return; - } - int num = pos.y * 13; - num += pos.x / 8; - int num2 = pos.x & 7; - m_moveTraj[num] |= 1 << num2; -} - -BOOL CDecor::IsMoveTraj(POINT pos) -{ - pos.x = (pos.x + 32) / 64; - pos.y = (pos.y + 32) / 64; - if (pos.x < 0 || pos.x >= 100 || pos.y < 0 || pos.y >= 100) - { - return FALSE; - } - int num = pos.y * 13; - num += pos.x / 8; - int num2 = pos.x & 7; - return (m_moveTraj[num] & 1 << num2) != 0; -} - -int CDecor::SearchDistRight(POINT pos, POINT dir, int type) -{ - int num = 0; - if (type == 36 || type == 39 || type == 41 || type == 42 || type == 93) - { - return 500; - } - pos.x = (pos.x + 32) / 64; - pos.y = (pos.y + 32) / 64; - while (pos.x >= 0 && pos.x < 100 && pos.y >= 0 && pos.y < 100 && !IsBlocIcon(m_decor[pos.x, pos.y]->icon)) - { - if (type == 23) - { - SetBalleTraj(pos); - } - num += 64; - pos.x += dir.x; - pos.y += dir.y; - } - if ((type == 34 || type == 38) && num >= 64) - { - num -= 64; - } - if (type == 23 && num >= 10) - { - num -= 10; - } - return num; -} - - -void CDecor::StartSploutchGlu(POINT pos) -{ - POINT pos2; - pos2.x = pos.x; - pos2.y = pos.y; - ObjectStart(pos2, 98, 0); - pos2.x = pos.x + 15; - pos2.y = pos.y + 20; - ObjectStart(pos2, 99, 0); - pos2.x = pos.x - 20; - pos2.y = pos.y + 18; - ObjectStart(pos2, 99, 0); - pos2.x = pos.x + 23; - pos2.y = pos.y - 18; - ObjectStart(pos2, 99, 0); - pos2.x = pos.x - 15; - pos2.y = pos.y - 18; - ObjectStart(pos2, 99, 0); - pos2.x = pos.x + 32; - pos2.y = pos.y + 10; - ObjectStart(pos2, 100, 0); - pos2.x = pos.x - 28; - pos2.y = pos.y + 15; - ObjectStart(pos2, 100, 0); - StopSound(16); - StopSound(18); - StopSound(29); - StopSound(31); - PlaySound(51, pos); -} - -int CDecor::ObjectStart(POINT pos, int type, int speed) -{ - int num = MoveObjectFree(); - if (num == -1) - { - return -1; - } - m_moveObject[num].type = type; - m_moveObject[num].phase = 0; - m_moveObject[num].posCurrent = pos; - m_moveObject[num].posStart = pos; - m_moveObject[num].posEnd = pos; - MoveObjectStopIcon(num); - if (speed != 0) - { - POINT tinyPoint = pos; - int num2 = speed; - int num3 = 0; - if (num2 > 50) - { - num2 -= 50; - POINT dir; - dir.x = 0; - dir.y = 1; - num3 = SearchDistRight(tinyPoint, dir, type); - tinyPoint.y += num3; - } - else if (num < -50) - { - num2 += 50; - POINT dir; - dir.x = 0; - dir.y = -1; - num3 = SearchDistRight(tinyPoint, dir, type); - tinyPoint.y -= num3; - } - else if (num2 > 0) - { - POINT dir; - dir.x = 1; - dir.y = 0; - num3 = SearchDistRight(tinyPoint, dir, type); - tinyPoint.x += num3; - } - else if (num2 < 0) - { - POINT dir; - dir.x = -1; - dir.y = 0; - num3 = SearchDistRight(tinyPoint, dir, type); - tinyPoint.x -= num3; - } - if (num3 == 0) - { - if (type == 23) - { - m_moveObject[num].type = 0; - return num; - } - } - else - { - m_moveObject[num].posEnd = tinyPoint; - m_moveObject[num].timeStopStart = 0; - m_moveObject[num].stepAdvance = abs(num2 * num3 / 64); - m_moveObject[num].step = 2; - m_moveObject[num].time = 0; - } - } - MoveObjectPriority(num); - return num; -} - -BOOL CDecor::ObjectDelete(POINT pos, int type) -{ - int num = MoveObjectSearch(pos, type); - if (num == -1) - { - 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; - } - ByeByeAdd(m_moveObject[num].channel, m_moveObject[num].icon, m_moveObject[num].posCurrent, num2, animationSpeed); - } - m_moveObject[num].type = 0; - return TRUE; -} - -void CDecor::MoveObjectStep() -{ - m_blupiVector.x = 0; - m_blupiVector.y = 0; - m_blupiTransport = -1; - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i].type != 0) - { - MoveObjectStepLine(i); - MoveObjectStepIcon(i); - if (m_moveObject[i].type == 4 || - m_moveObject[i].type == 33 || - m_moveObject[i].type == 32) - int num = MovePersoDetect(m_moveObject[i].posCurrent); - if (num != -1) - { - POINT posCurrent = m_moveObject[i].posCurrent; - posCurrent.x -= 34; - posCurrent.y -= 34; - ObjectStart(posCurrent, 8, 0); - PlaySound(10, m_moveObject[i].posCurrent); - m_decorAction = 1; - m_decorPhase = 0; - posCurrent = m_moveObject[i].posCurrent; - posCurrent.x += 2; - posCurrent.y += BLUPIOFFY; - ObjectDelete(m_moveObject[i].posCurrent, m_moveObject[i].type); - ObjectStart(posCurrent, 37, 0); - ObjectDelete(m_moveObject[num].posCurrent, m_moveObject[num].type); - } - if (BlupiElectro(m_moveObject[i].posCurrent)) - { - POINT posCurrent = m_moveObject[i].posCurrent; - posCurrent.x += 2; - posCurrent.y += BLUPIOFFY; - ObjectDelete(m_moveObject[i].posCurrent, m_moveObject[i].type); - ObjectStart(posCurrent, 38, 55); - PlaySound(59, posCurrent); - } - } - } -} - -void CDecor::MoveObjectStepLine(int i) -{ - MoveObject moveObject; - POINT tinyPoint; - BOOL flag = FALSE; - RECT tinyRect; - if (m_moveObject[i].type == 1 || m_moveObject[i].type == 47 || m_moveObject[i].type == 48 && !m_blupiSuspend) - { - RECT src; - src.left = m_blupiPos.x + 20; - src.right = m_blupiPos.x + 60 - 20; - src.top = m_blupiPos.y + 60 - 2; - src.bottom = m_blupiPos.y + 60 - 1; - tinyRect.left = m_moveObject[i].posCurrent.x; - tinyRect.right = m_moveObject[i].posCurrent.x + 64; - tinyRect.top = m_moveObject[i].posCurrent.y; - tinyRect.bottom = m_moveObject[i].posCurrent.y + 16; - RECT tinyRect2; - flag = IntersectRect(tinyRect2, tinyRect, src); - tinyPoint = m_moveObject[i].posCurrent; - } - POINT posCurrent; - if (m_blupiFocus && !m_blupiHide && m_moveObject[i].type == 97) - { - posCurrent = m_moveObject[i].posCurrent; - if (posCurrent.x < m_blupiPos.x) - { - posCurrent.x++; - } - if (posCurrent.x > m_blupiPos.x) - { - posCurrent.x--; - } - if (posCurrent.y < m_blupiPos.y) - { - posCurrent.y++; - } - if (posCurrent.y > m_blupiPos.y) - { - posCurrent.y--; - } - tinyRect.left = posCurrent.x + 10; - tinyRect.right = posCurrent.x + 60 - 10; - tinyRect.top = posCurrent.y + 10; - tinyRect.bottom = posCurrent.y + 60 - 10; - if (TestPath(tinyRect, m_moveObject[i].posCurrent, posCurrent)) - { - m_moveObject[i].posCurrent = posCurrent; - m_moveObject[i].posStart = posCurrent; - m_moveObject[i].posEnd = posCurrent; - } - else - { - ObjectDelete(m_moveObject[i].posCurrent, m_moveObject[i].type); - posCurrent.x -= 34; - posCurrent.y -= 34; - ObjectStart(posCurrent, 9, 0); - PlaySound(10, posCurrent); - m_decorAction = 1; - m_decorPhase = 0; - } - } - if (m_moveObject[i].posStart.x != m_moveObject[i].posEnd.x || m_moveObject[i].posStart.y != m_moveObject[i].posEnd.y) - { - if (m_moveObject[i].step == 1) - { - if (m_moveObject[i].time < m_moveObject[i].timeStopStart) - { - moveObject = m_moveObject; - moveObject[i]->time = moveObject[i]->time + 1; - } - else - { - m_moveObject[i].step = 2; - m_moveObject[i].time = 0; - } - } - else if (m_moveObject[i].step == 2) - { - if (m_moveObject[i].posCurrent.x != m_moveObject[i].posEnd.x || m_moveObject[i].posCurrent.x != m_moveObject[i].posEnd.y) - { - MoveObject[] moveObject2 = m_moveObject; - moveObject2[i]->time = moveObject2[i]->time + 1; - if (m_moveObject[i].stepAdvance != 0) - { - m_moveObject[i].posCurrent.x = (m_moveObject[i].posEnd.x - m_moveObject[i].posStart.x) * m_moveObject[i].time / m_moveObject[i].stepAdvance + m_moveObject[i].posStart.x; - m_moveObject[i].posCurrent.y = (m_moveObject[i].posEnd.y - m_moveObject[i].posStart.y) * m_moveObject[i].time / m_moveObject[i].stepAdvance + m_moveObject[i].posStart.y; - } - - } - else if (m_moveObject[i].type == 15 || m_moveObject[i].type == 23) - { - m_moveObject[i].type = 0; - } - else if (m_moveObject[i].type == 34) - { - m_moveObject[i].posStart = m_moveObject[i].posCurrent; - m_moveObject[i].posEnd = m_moveObject[i].posCurrent; - m_moveObject[i].step = 3; - m_moveObject[i].time = 0; - } - else - { - m_moveObject[i].step = 3; - m_moveObject[i].time = 0; - } - } - else if (m_moveObject[i].step == 3) - { - if (m_moveObject[i].time < m_moveObject[i].timeStopEnd) - { - MoveObject[] moveObject3 = m_moveObject; - moveObject3[i]->time = moveObject3[i]->time + 1; - } - else - { - m_moveObject[i].step = 4; - m_moveObject[i].time = 0; - } - } - else if (m_moveObject[i].step == 4) - { - if (m_moveObject[i].posCurrent.x != m_moveObject[i].posStart.x || m_moveObject[i].posCurrent.y != m_moveObject[i].posStart.y) - { - MoveObject[] moveObject4 = m_moveObject; - moveObject4[i]->time = moveObject4[i]->time + 1; - if (m_moveObject[i].stepRecede != 0) - { - m_moveObject[i].posCurrent.x = (m_moveObject[i].posStart.x - m_moveObject[i].posEnd.x) * - m_moveObject[i].time / m_moveObject[i].stepRecede + m_moveObject[i].posEnd.x; - m_moveObject[i].posCurrent.y = (m_moveObject[i].posStart.y - m_moveObject[i].posEnd.y) * - m_moveObject[i].time / m_moveObject[i].stepRecede + m_moveObject[i].posEnd.y; - } - } - else - { - m_moveObject[i].step = 1; - m_moveObject[i].time = 0; - } - } - } - if (m_moveObject[i].type == 22 && m_moveObject[i].step == 3) - { - m_moveObject[i].type = 0; - } - posCurrent = m_moveObject[i].posCurrent; - if (m_moveObject[i].type == 1 || m_moveObject[i].type == 47 || m_moveObject[i].type == 48) - { - posCurrent.y -= 64; - } - posCurrent.x = (posCurrent.x + 32) / 64; - posCurrent.y = (posCurrent.y + 32) / 64; - SetMoveTraj(posCurrent); - if (flag) - { - m_blupiVector.x = m_moveObject[i].posCurrent.x - tinyPoint.x; - m_blupiVector.y = m_moveObject[i].posCurrent.y - (m_blupiPos.y + 60 - BLUPIFLOOR); - if (m_moveObject[i].type == 47) - { - m_blupiVector.x = m_blupiVector.x + 2; - } - if (m_moveObject[i].type == 48) - { - m_blupiVector.x = m_blupiVector.x - 2; - } - if (m_blupiTimeNoAsc == 0) - { - m_blupiTransport = i; - } - } -} - -void CDecor::MoveObjectStepIcon(int i) -{ - if (m_moveObject[i]->type == 47) - { - m_moveObject[i]->icon = table_chenille[m_moveObject[i]->phase / 1 % 6]; - } - if (m_moveObject[i]->type == 48) - { - m_moveObject[i]->icon = table_chenillei[m_moveObject[i]->phase / 1 % 6]; - } - if (m_moveObject[i]->type == 2) - { - m_moveObject[i]->icon = 12 + m_moveObject[i]->phase / 2 % 9; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 3) - { - m_moveObject[i]->icon = 48 + m_moveObject[i]->phase / 2 % 9; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 16) - { - m_moveObject[i]->icon = 69 + m_moveObject[i]->phase / 1 % 9; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 96) - { - m_moveObject[i]->icon = table_follow1[m_moveObject[i]->phase / 1 % 26]; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 97) - { - m_moveObject[i]->icon = table_follow2[m_moveObject[i]->phase / 1 % 5]; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 200) - { - m_moveObject[i]->icon = 257 + m_moveObject[i]->phase / 1 % 6; - m_moveObject[i]->channel = 2; - } - if (m_moveObject[i]->type == 201) - { - m_moveObject[i]->icon = 257 + m_moveObject[i]->phase / 1 % 6; - m_moveObject[i]->channel = 11; - } - if (m_moveObject[i]->type == 202) - { - m_moveObject[i]->icon = 257 + m_moveObject[i]->phase / 1 % 6; - m_moveObject[i]->channel = 12; - } - if (m_moveObject[i]->type == 203) - { - m_moveObject[i]->icon = 257 + m_moveObject[i]->phase / 1 % 6; - m_moveObject[i]->channel = 13; - } - if (m_moveObject[i]->type == 55) - { - m_moveObject[i]->icon = 252; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 56) - { - m_moveObject[i]->icon = table_dynamitef[m_moveObject[i]->phase / 1 % 100]; - m_moveObject[i]->channel = 10; - if (m_moveObject[i]->phase == 50) - { - DynamiteStart(i, 0, 0); - } - if (m_moveObject[i]->phase == 53) - { - DynamiteStart(i, -100, 8); - } - if (m_moveObject[i]->phase == 55) - { - DynamiteStart(i, 80, 10); - } - if (m_moveObject[i]->phase == 56) - { - DynamiteStart(i, -15, -100); - } - if (m_moveObject[i]->phase == 59) - { - DynamiteStart(i, 20, 70); - } - if (m_moveObject[i]->phase == 62) - { - DynamiteStart(i, 30, -50); - } - if (m_moveObject[i]->phase == 64) - { - DynamiteStart(i, -40, 30); - } - if (m_moveObject[i]->phase == 67) - { - DynamiteStart(i, -180, 10); - } - if (m_moveObject[i]->phase == 69) - { - DynamiteStart(i, 200, -10); - } - if (m_moveObject[i]->phase >= 70) - { - m_moveObject[i]->type = 0; - } - } - if (m_moveObject[i]->type == 5) - { - if (m_moveObject[i]->phase / 3 % 22 < 11) - { - m_moveObject[i]->icon = m_moveObject[i]->phase / 3 % 11; - } - else - { - m_moveObject[i]->icon = 11 - m_moveObject[i]->phase / 3 % 11; - } - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 6) - { - m_moveObject[i]->icon = 21 + m_moveObject[i]->phase / 4 % 8; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 7) - { - m_moveObject[i]->icon = 29 + m_moveObject[i]->phase / 3 % 8; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 21) - { - m_moveObject[i]->icon = table_cle[m_moveObject[i]->phase / 3 % 12]; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 49) - { - m_moveObject[i]->icon = table_cle1[m_moveObject[i]->phase / 3 % 12]; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 50) - { - m_moveObject[i]->icon = table_cle2[m_moveObject[i]->phase / 3 % 12]; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 51) - { - m_moveObject[i]->icon = table_cle3[m_moveObject[i]->phase / 3 % 12]; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 24) - { - m_moveObject[i]->icon = table_skate[m_moveObject[i]->phase / 1 % 34]; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 25) - { - m_moveObject[i]->icon = table_shield[m_moveObject[i]->phase / 2 % 16]; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 26) - { - m_moveObject[i]->icon = table_power[m_moveObject[i]->phase / 2 % 8]; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 40) - { - m_moveObject[i]->icon = table_invert[m_moveObject[i]->phase / 2 % 20]; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 31) - { - m_moveObject[i]->icon = table_charge[m_moveObject[i]->phase / 2 % 6]; - m_moveObject[i]->channel = 1; - } - if (m_moveObject[i]->type == 27) - { - m_moveObject[i]->icon = table_magictrack[m_moveObject[i]->phase / 1 % 24]; - m_moveObject[i]->channel = 10; - if (m_moveObject[i]->phase >= 24) - { - m_moveObject[i]->type = 0; - } - } - if (m_moveObject[i]->type == 57) - { - m_moveObject[i]->icon = table_shieldtrack[m_moveObject[i]->phase / 1 % 20]; - m_moveObject[i]->channel = 10; - if (m_moveObject[i]->phase >= 20) - { - m_moveObject[i]->type = 0; - } - } - if (m_moveObject[i]->type == 39) - { - m_moveObject[i]->icon = table_tresortrack[m_moveObject[i]->phase / 1 % 11]; - m_moveObject[i]->channel = 10; - if (m_moveObject[i]->phase >= 11) - { - m_moveObject[i]->type = 0; - } - } - if (m_moveObject[i]->type == 58 && m_moveObject[i]->phase >= 20) - { - m_moveObject[i]->type = 0; - } - if (m_moveObject[i]->type == 8) - { - if (m_moveObject[i]->phase >= table_explo1->length) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_explo1[m_moveObject[i]->phase]; - m_moveObject[i]->channel = 9; - } - } - if (m_moveObject[i]->type == 9) - { - if (m_moveObject[i]->phase >= 20) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_explo2[m_moveObject[i]->phase % 20]; - m_moveObject[i]->channel = 9; - } - } - if (m_moveObject[i]->type == 10) - { - if (m_moveObject[i]->phase >= 20) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_explo3[m_moveObject[i]->phase / 1 % 20]; - m_moveObject[i]->channel = 9; - } - } - if (m_moveObject[i]->type == 11) - { - if (m_moveObject[i]->phase >= 9) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_explo4[m_moveObject[i]->phase / 1 % 9]; - m_moveObject[i]->channel = 9; - } - } - if (m_moveObject[i]->type == 90) - { - if (m_moveObject[i]->phase >= 12) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_explo5[m_moveObject[i]->phase / 1 % 12]; - m_moveObject[i]->channel = 9; - } - } - if (m_moveObject[i]->type == 91) - { - if (m_moveObject[i]->phase >= 6) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_explo6[m_moveObject[i]->phase / 1 % 6]; - m_moveObject[i]->channel = 9; - } - } - if (m_moveObject[i]->type == 92) - { - if (m_moveObject[i]->phase >= 128) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_explo7[m_moveObject[i]->phase / 1 % 128]; - m_moveObject[i]->channel = 9; - } - } - if (m_moveObject[i]->type == 93) - { - if (m_moveObject[i]->phase >= 5) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_explo8[m_moveObject[i]->phase / 1 % 5]; - m_moveObject[i]->channel = 9; - } - } - if (m_moveObject[i]->type == 98) - { - if (m_moveObject[i]->phase >= 10) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_sploutch1[m_moveObject[i]->phase / 1 % 10]; - m_moveObject[i]->channel = 9; - } - } - if (m_moveObject[i]->type == 99) - { - if (m_moveObject[i]->phase >= 13) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_sploutch2[m_moveObject[i]->phase / 1 % 13]; - m_moveObject[i]->channel = 9; - } - } - if (m_moveObject[i]->type == 100) - { - if (m_moveObject[i]->phase >= 18) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_sploutch3[m_moveObject[i]->phase / 1 % 18]; - m_moveObject[i]->channel = 9; - } - } - if (m_moveObject[i]->type == 53) - { - if (m_moveObject[i]->phase >= 90) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_tentacule[m_moveObject[i]->phase / 2 % 45]; - m_moveObject[i]->channel = 9; - } - } - TinyPoint pos; - if (m_moveObject[i]->type == 52) - { - if (m_moveObject[i]->phase == 0) - { - PlaySound(72, m_moveObject[i]->posStart); - } - if (m_moveObject[i]->phase == 137) - { - PlaySound(73, m_moveObject[i]->posStart); - } - if (m_moveObject[i]->phase >= 157) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_bridge[m_moveObject[i]->phase / 1 % 157]; - m_moveObject[i]->channel = 1; - pos->X = m_moveObject[i]->posStart->X / 64; - pos->Y = m_moveObject[i]->posStart->Y / 64; - m_decor[pos->X, pos->Y]->icon = m_moveObject[i]->icon; - } - } - if (m_moveObject[i]->type == 36) - { - if (m_moveObject[i]->phase >= 16) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_pollution[m_moveObject[i]->phase / 2 % 8]; - m_moveObject[i]->channel = 10; - } - } - if (m_moveObject[i]->type == 41) - { - if (m_moveObject[i]->phase >= 16) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_invertstart[m_moveObject[i]->phase / 2 % 8]; - m_moveObject[i]->channel = 10; - } - } - if (m_moveObject[i]->type == 42) - { - if (m_moveObject[i]->phase >= 16) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_invertstop[m_moveObject[i]->phase / 2 % 8]; - m_moveObject[i]->channel = 10; - } - } - if (m_moveObject[i]->type == 14) - { - if (m_moveObject[i]->phase >= 14) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_plouf[m_moveObject[i]->phase / 2 % 7]; - m_moveObject[i]->channel = 1; - } - } - if (m_moveObject[i]->type == 35) - { - if (m_moveObject[i]->phase >= 6) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_tiplouf[m_moveObject[i]->phase / 2 % 7]; - m_moveObject[i]->channel = 1; - } - } - if (m_moveObject[i]->type == 15) - { - m_moveObject[i]->icon = table_blup[m_moveObject[i]->phase / 2 % 20]; - m_moveObject[i]->channel = 1; - } - if (m_moveObject[i]->type == 4) - { - if (m_moveObject[i]->posStart->X > m_moveObject[i]->posEnd->X) - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_bulldozer_turn2l[m_moveObject[i]->time % 22]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_bulldozer_turn2r[m_moveObject[i]->time % 22]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_bulldozer_left[m_moveObject[i]->time % 8]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_bulldozer_right[m_moveObject[i]->time % 8]; - } - } - else - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_bulldozer_turn2r[m_moveObject[i]->time % 22]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_bulldozer_turn2l[m_moveObject[i]->time % 22]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_bulldozer_right[m_moveObject[i]->time % 8]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_bulldozer_left[m_moveObject[i]->time % 8]; - } - } - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 17) - { - if (m_moveObject[i]->posStart.x > m_moveObject[i]->posEnd.x) - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_poisson_turn2l[m_moveObject[i]->time % 48]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_poisson_turn2r[m_moveObject[i]->time % 48]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_poisson_left[m_moveObject[i]->time % 8]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_poisson_right[m_moveObject[i]->time % 8]; - } - } - else - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_poisson_turn2r[m_moveObject[i]->time % 48]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_poisson_turn2l[m_moveObject[i]->time % 48]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_poisson_right[m_moveObject[i]->time % 8]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_poisson_left[m_moveObject[i]->time % 8]; - } - } - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 20) - { - if (m_moveObject[i]->posStart.x > m_moveObject[i]->posEnd.x) - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_oiseau_turn2l[m_moveObject[i]->time % 10]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_oiseau_turn2r[m_moveObject[i]->time % 10]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_oiseau_left[m_moveObject[i]->time % 8]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_oiseau_right[m_moveObject[i]->time % 8]; - } - } - else - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_oiseau_turn2r[m_moveObject[i]->time % 10]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_oiseau_turn2l[m_moveObject[i]->time % 10]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_oiseau_right[m_moveObject[i]->time % 8]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_oiseau_left[m_moveObject[i]->time % 8]; - } - } - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 44) - { - if (m_moveObject[i]->posStart.x > m_moveObject[i]->posEnd.x) - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_guepe_turn2l[m_moveObject[i]->time % 5]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_guepe_turn2r[m_moveObject[i]->time % 5]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_guepe_left[m_moveObject[i]->time % 6]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_guepe_right[m_moveObject[i]->time % 6]; - } - } - else - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_guepe_turn2r[m_moveObject[i]->time % 5]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_guepe_turn2l[m_moveObject[i]->time % 5]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_guepe_right[m_moveObject[i]->time % 6]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_guepe_left[m_moveObject[i]->time % 6]; - } - } - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 54) - { - if (m_moveObject[i]->posStart.x > m_moveObject[i]->posEnd.x) - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_creature_turn2[m_moveObject[i]->time % 152]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_creature_turn2[m_moveObject[i]->time % 152]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_creature_left[m_moveObject[i]->time % 8]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_creature_right[m_moveObject[i]->time % 8]; - } - } - else - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_creature_turn2[m_moveObject[i]->time % 152]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_creature_turn2[m_moveObject[i]->time % 152]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_creature_right[m_moveObject[i]->time % 8]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_creature_left[m_moveObject[i]->time % 8]; - } - } - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 32) - { - if (m_moveObject[i]->posStart.x > m_moveObject[i]->posEnd.x) - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_blupih_turn2l[m_moveObject[i]->time % 26]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_blupih_turn2r[m_moveObject[i]->time % 26]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_blupih_left[m_moveObject[i]->time % 8]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_blupih_right[m_moveObject[i]->time % 8]; - } - } - else - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_blupih_turn2r[m_moveObject[i]->time % 26]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_blupih_turn2l[m_moveObject[i]->time % 26]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_blupih_right[m_moveObject[i]->time % 8]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_blupih_left[m_moveObject[i]->time % 8]; - } - } - if ((m_moveObject[i]->step == 1 || m_moveObject[i]->step == 3) && m_moveObject[i]->time == 21) - { - pos.x = m_moveObject[i]->posCurrent.x; - pos.y = m_moveObject[i]->posCurrent.y + 40; - if (ObjectStart(pos, 23, 55) != -1) - { - PlaySound(52, pos); - } - } - } - if (m_moveObject[i]->type == 33) - { - if (m_moveObject[i]->posStart.x > m_moveObject[i]->posEnd.x) - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_blupit_turn2l[m_moveObject[i]->time % 24]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_blupit_turn2r[m_moveObject[i]->time % 24]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_blupit_left[m_moveObject[i]->time % 8]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_blupit_right[m_moveObject[i]->time % 8]; - } - } - else - { - if (m_moveObject[i]->step == 1) - { - m_moveObject[i]->icon = table_blupit_turn2r[m_moveObject[i]->time % 24]; - } - if (m_moveObject[i]->step == 3) - { - m_moveObject[i]->icon = table_blupit_turn2l[m_moveObject[i]->time % 24]; - } - if (m_moveObject[i]->step == 2) - { - m_moveObject[i]->icon = table_blupit_right[m_moveObject[i]->time % 8]; - } - if (m_moveObject[i]->step == 4) - { - m_moveObject[i]->icon = table_blupit_left[m_moveObject[i]->time % 8]; - } - } - if ((m_moveObject[i]->step == 1 || m_moveObject[i]->step == 3) && m_moveObject[i]->time == 3) - { - int speed; - if ((m_moveObject[i]->posStart.x < m_moveObject[i]->posEnd.x && m_moveObject[i]->step == 1) || (m_moveObject[i]->posStart.x > m_moveObject[i]->posEnd.x && m_moveObject[i]->step == 3)) - { - pos.x = m_moveObject[i]->posCurrent.x - 30; - pos.y = m_moveObject[i]->posCurrent.x + BLUPIOFFY; - speed = -5; - } - else - { - pos.x = m_moveObject[i]->posCurrent.x + 30; - pos.y = m_moveObject[i]->posCurrent.y + BLUPIOFFY; - speed = 5; - } - if (ObjectStart(pos, 23, speed) != -1) - { - PlaySound(52, pos); - } - } - if ((m_moveObject[i]->step == 1 || m_moveObject[i]->step == 3) && m_moveObject[i]->time == 21) - { - int speed; - if ((m_moveObject[i]->posStart.x < m_moveObject[i]->posEnd.x && m_moveObject[i]->step == 1) || (m_moveObject[i]->posStart.x > m_moveObject[i]->posEnd.x && m_moveObject[i]->step == 3)) - { - pos.x = m_moveObject[i]->posCurrent.x + 30; - pos.y = m_moveObject[i]->posCurrent.y + BLUPIOFFY; - speed = 5; - } - else - { - pos.x = m_moveObject[i]->posCurrent.x - 30; - pos.y = m_moveObject[i]->posCurrent.y + BLUPIOFFY; - speed = -5; - } - if (ObjectStart(pos, 23, speed) != -1) - { - PlaySound(52, pos); - } - } - } - if (m_moveObject[i]->type == 34) - { - m_moveObject[i]->icon = table_glu[m_moveObject[i]->phase / 1 % 25]; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 37) - { - if (m_moveObject[i]->phase >= 70) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_clear[m_moveObject[i]->phase / 1 % 70]; - m_moveObject[i]->channel = 10; - } - } - if (m_moveObject[i]->type == 38) - { - if (m_moveObject[i]->phase >= 90) - { - m_moveObject[i]->type = 0; - } - else - { - m_moveObject[i]->icon = table_electro[m_moveObject[i]->phase / 1 % 90]; - if (m_moveObject[i]->phase < 30) - { - m_moveObject[i]->channel = 12; - } - else - { - m_moveObject[i]->channel = 10; - } - } - } - if (m_moveObject[i]->type == 13) - { - m_moveObject[i]->icon = 68; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 46) - { - m_moveObject[i]->icon = 208; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 19) - { - m_moveObject[i]->icon = 89; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 28) - { - m_moveObject[i]->icon = 167; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 23) - { - m_moveObject[i]->icon = 176; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 29) - { - m_moveObject[i]->icon = 177; - m_moveObject[i]->channel = 10; - } - if (m_moveObject[i]->type == 30) - { - m_moveObject[i]->icon = 178; - m_moveObject[i]->channel = 10; - } - MoveObject[] moveObject = m_moveObject; - moveObject[i]->phase = moveObject[i]->phase + 1; - if (m_moveObject[i]->phase > 32700) - { - m_moveObject[i]->phase = 0; - } -} - -void CDecor::DynamiteStart(int i, int dx, int dy) -{ - POINT posStart = m_moveObject[i].posStart; - posStart.x -= 34; - posStart.y -= 34; - posStart.x += dx; - posStart.y -= dy; - ObjectStart(posStart, 8, 0); - if (dx == 0 && dy == 0) - { - PlaySound(10, posStart); - m_decorAction = 1; - m_decorPhase = 0; - } - RECT src; - src.left = posStart.x; - src.right = posStart.x + 128; - src.top = posStart.y; - src.bottom = posStart.y + 128; - POINT tinyPoint; - for (int j = 0; j < 2; j++) - { - tinyPoint.x = posStart.x / 64; - for (int k = 0; k < 2; j++) - { - if (tinyPoint.x >= 0 && tinyPoint.x < 100 && tinyPoint.y >= 0 && tinyPoint.y < 100) - { - int icon = m_decor[tinyPoint.x, tinyPoint.y]->icon; - if (icon == 378 || icon == 379 || icon == 404 || icon == 410) - { - POINT pos; - pos.x = tinyPoint.x * 64; - pos.y = tinyPoint.y * 64; - ModifDecor(pos, -1); - } - } - tinyPoint.x++; - } - tinyPoint.y++; - } - for (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 == 6 || m_moveObject[i].type == 12 || m_moveObject[i].type == 13 || m_moveObject[i].type == 16 || m_moveObject[i].type == 17 || - m_moveObject[i].type == 19 || m_moveObject[i].type == 20 || m_moveObject[i].type == 24 || m_moveObject[i].type == 25 || m_moveObject[i].type == 26 || m_moveObject[i].type == 28 || - m_moveObject[i].type == 30 || m_moveObject[i].type == 32 || m_moveObject[i].type == 33 || m_moveObject[i].type == 34 || m_moveObject[i].type == 40 || m_moveObject[i].type == 44 || - m_moveObject[i].type == 46 || m_moveObject[i].type == 52 || m_moveObject[i].type == 54 || m_moveObject[i].type == 200 || m_moveObject[i].type == 201 || m_moveObject[i].type == 202 || - m_moveObject[i].type == 203) - { - RECT src2; - src2.left = m_moveObject[i].posCurrent.x; - src2.right = m_moveObject[i].posCurrent.x + 60; - src2.top = m_moveObject[i].posCurrent.y; - src2.bottom = m_moveObject[i].posCurrent.y + 20; - RECT tinyRect; - if (IntersectRect(tinyRect, src2, src)) - { - if (m_moveObject[i].type == 12) - { - SearchLinkCaisse(i, TRUE); - for (int l = 0; l < m_nbLinkCaisse; l++) - { - int channel = m_moveObject[m_linkCaisse[l]]->channel; - int icon2 = m_moveObject[m_linkCaisse[l]]->icon; - POINT posCurrent = m_moveObject[m_linkCaisse[l]]->posCurrent; - double num = (double)Random(7, 23); - if (m_random->next(0, 100) % 2 == 0) - { - num = -num; - } - ByeByeAdd(channel, icon2, posCurrent, num, 1.0); - m_moveObject[m_linkCaisse[l]]->type = 0; - } - ObjectDelete(m_moveObject[i].posCurrent, m_moveObject[i].type); - UpdateCaisse(); - } - else - { - ObjectDelete(m_moveObject[i].posCurrent, m_moveObject[i].type); - } - } - } - } - if (m_blupiFocus && !m_blupiShield && !m_blupiHide && !m_bSuperBlupi && m_blupiPos.x > posStart.x - 30 && m_blupiPos.x < posStart.x + 30 + 64 && m_blupiPos.y > posStart.y - 30 && m_blupiPos.y < posStart.y + 30 + 64) - { - BlupiDead(11, -1); - m_blupiAir = TRUE; - } - -} - -int CDecor::AscenseurDetect(RECT rect, POINT oldpos, POINT newpos) -{ - if (m_blupiTimeNoAsc != 0) - { - return -1; - } - int num = newpos.y - oldpos.y; - int num2; - if (num < 0) - { - num2 = -30; - } - else - { - num2 = 30; - } - num = abs(num); - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i].type == 1 || m_moveObject[i].type == 47 || m_moveObject[i].type == 48) - { - RECT src; - src.left = m_moveObject[i]->posCurrent.x; - src.right = m_moveObject[i]->posCurrent.x + 64; - src.top = m_moveObject[i]->posCurrent.y; - src.bottom = m_moveObject[i]->posCurrent.y + 16; - if (num < 30) - { - RECT tinyRect; - if (IntersectRect(tinyRect, src, rect)) - { - return i; - } - } - else - { - RECT src2 = rect; - src2.top -= num / 30 * num2; - src2.bottom -= num / 30 * num2; - for (int j = 0; j <= num / 30; j++) - { - RECT tinyRect; - if (IntersectRect(tinyRect, src, src2)) - { - return i; - } - src2.top += num2; - src2.bottom += num; - } - } - - } - } - return -1; -} - -void CDecor::AscenseurVertigo(int i, BOOL* pbVertigoLeft, BOOL* pbVertigoRight) -{ - bVertigoLeft = FALSE; - bVertigoRight = FALSE; - if (m_blupiPos.x + 20 + 4 < m_moveObject[i]->posCurrent.x) - { - bVertigoLeft = TRUE; - } - if (m_blupiPos.x + 60 - 20 - 4 > m_moveObject[i]->posCurrent.x + 64) - { - bVertigoRight = TRUE; - } - if (AscenseurShift(i)) - { - if (bVertigoLeft) - { - bVertigoLeft = FALSE; - bVertigoRight = TRUE; - m_blupiTimeNoAsc = 10; - return; - } - if (bVertigoRight) - { - bVertigoRight = FALSE; - bVertigoLeft = TRUE; - m_blupiTimeNoAsc = 10; - } - } -} - -BOOL CDecor::AscenseurShift(int i) -{ - return i != -1 && m_moveObject[i]->icon >= 311 && m_moveObject[i]->icon <= 316; -} - -void CDecor::AscenseurSynchro(int i) -{ - for (i = 0; i < MAXMOVEOBJECT; i++) - { - m_moveObject[i]->posCurrent = m_moveObject[i]->posStart; - m_moveObject[i]->step = 1; - m_moveObject[i]->time = 0; - m_moveObject[i]->phase = 0; - } -} - -void CDecor::UpdateCaisse() -{ - m_nbRankCaisse = 0; - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i].type == TYPE_CAISSE) - { - m_rankCaisse[m_nbRankCaisse++] = i; - } - } -} - -BOOL CDecor::TestPushCaisse(int i, POINT pos, BOOL bPop) -{ - POINT move; - - move.x = pos.x - m_moveObject[i].posCurrent.x; - move.y = 0; - SearchLinkCaisse(i, bPop); - int y = m_moveObject[i].posCurrent.y; - for (int j = 0; j < m_nbLinkCaisse; j++) - { - i = m_linkCaisse[j]; - if (!TestPushOneCaisse(i, move, y)) - { - return FALSE; - } - } - for (int j = 0; j < m_nbLinkCaisse; j++) - { - i = m_linkCaisse[j]; - int num = i; - m_moveObject[num].posCurrent.x = m_moveObject[num].posCurrent.x + move.x; - m_moveObject[num].posStart.x = m_moveObject[num].posStart.x + move.x; - int num2 = i; - m_moveObject[num].posEnd.x = m_moveObject[num].posEnd.x + move.x; - } - return TRUE; -} - -BOOL CDecor::TestPushOneCaisse(int i, POINT move, int b) -{ - -} - -void CDecor::SearchLinkCaisse(int rank, BOOL bPop) -{ - m_nbLinkCaisse = 0; - AddLinkCaisse(rank); - POINT posCurrent = m_moveObject; - - BOOL flag; - do - { - flag = FALSE; - for (int i = 0; i < m_nbLinkCaisse; i++) - { - int num = m_linkCaisse[i]; - if (m_moveObject[num]->posCurrent.y <= - posCurrent.y && (!bPop || (m_moveObject - [num]->posCurrent.x >= posCurrent.x - 32 && - m_moveObject[num]->posCurrent.x <= - posCurrent.x + 32))) - { - RECT src; - src.left = m_moveObject[num]->posCurrent.x - 1; - src.top = m_moveObject[num]->posCurrent.y - 1; - src.right = src.left + 64 + 1; - src.bottom = src.top + 64 + 1; - for (int j = 0; j < m_nbRankCaisse; j++) - { - int num2 = m_rankCaisse[j]; - if (num2 != num && m_moveObject[num2]->posCurrent.y <= posCurrent.y && (!bPop || (m_moveObject[num2]->posCurrent.x >= posCurrent.x - 32 && m_moveObject[num2]->posCurrent.x <= posCurrent.x + 32))) - { - RECT src2; - src2.left = m_moveObject[num2]->posCurrent.x - 1; - src2.top = m_moveObject[num2]->posCurrent.y - 1; - src2.right = src2.left + 64 + 1; - src2.bottom = src2.top + 64 + 1; - RECT tinyRect; - if (IntersectRect(tinyRect, src2, src) && AddLinkCaisse(num2)) - { - flag = TRUE; - } - } - } - } - } - } while (flag); -} - -BOOL CDecor::AddLinkCaisse(int rank) -{ - for (int i = 0; i < m_nbLinkCaisse; i++) - { - if (m_linkCaisse[i] == rank) - { - return FALSE; - } - } - m_linkCaisse[m_nbLinkCaisse] = rank; - m_nbLinkCaisse++; - return TRUE; -} - -int CDecor::CaisseInFront() -{ - POINT tinyPoint; - if (m_blupiDir == 1) - { - tinyPoint.x = m_blupiPos.x + 16 - 32; - tinyPoint.y = m_blupiPos.y; - } - else - { - tinyPoint.x = m_blupiPos.x + 60 - 16 + 32; - tinyPoint.y = m_blupiPos.y; - } - for (int i = 0; i < m_nbRankCaisse; i++) - { - int num = m_rankCaisse[i]; - if (tinyPoint.x > m_moveObject[num]->posCurrent.x && - tinyPoint.x < m_moveObject[num]->posCurrent.x + 64 && - tinyPoint.y > m_moveObject[num]->posCurrent.y && - tinyPoint.y < m_moveObject[num]->posCurrent.y + 64) - { - return num; - } - } - return -1; -} - -int CDecor::CaisseGetMove(int max) -{ - max -= (m_nbLinkCaisse - 1) / 2; - if (max < 1) - { - max = 1; - } - if (m_blupiPower) - { - max *= 2; - } - if (m_blupiPhase < 20) - { - max = max * m_blupiPhase / 20; - if (max == 0) - { - max++; - } - } - return max; -} - -int CDecor::MockeryDetect(POINT pos) -{ - if (m_blupiTimeMockery > 0) - { - return 0; - } - if (m_blupiAir) - { - POINT tinyPoint; - tinyPoint.x = pos.x + 30; - tinyPoint.y = pos.y + 30 + 64; - if (tinyPoint.x >= 0 && tinyPoint.x < 6400 && tinyPoint.y >= 0 && tinyPoint.y < 6400) - { - int icon = m_decor[tinyPoint.x / 64, tinyPoint.y / 64]->icon; - if (icon == 68 || icon == 317) - { - return 64; - } - } - } - RECT src; - src.left = pos.x; - src.right = pos.x + 60; - src.top = pos.y + 11; - src.bottom = pos.y + 60; - if (m_blupiAir) - { - src.bottom += 90; - } - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i]->type == 2 || - m_moveObject[i]->type == 16 || - m_moveObject[i]->type == 96 || - m_moveObject[i]->type == 97 || - m_moveObject[i]->type == 4 || - m_moveObject[i]->type == 20 || - m_moveObject[i]->type == 44 || - m_moveObject[i]->type == 54 || - m_moveObject[i]->type == 23 || - m_moveObject[i]->type == 32 || - m_moveObject[i]->type == 33) - { - RECT src2; - src2.left = m_moveObject[i]->posCurrent.x; - src2.right = m_moveObject[i]->posCurrent.x + 60; - src2.top = m_moveObject[i]->posCurrent.y + 36; - src2.bottom = m_moveObject[i]->posCurrent.y + 60; - RECT tinyRect; - if (IntersectRect(tinyRect, src2, src)) - { - if (m_moveObject[i]->type == 54) - { - return 83; - } - if (m_blupiDir == 2) - { - if (pos.x >= src2.left) - { - return 64; - } - if (m_moveObject[i]->type == 2) - { - return 0; - } - return 63; - } - else - { - if (pos.x < src2.left) - { - return 64; - } - if (m_moveObject[i]->type == 2) - { - return 0; - } - return 63; - } - } - } - } - return 0; -} - -BOOL CDecor::BlupiElectro(POINT pos) -{ - if (m_blupiCloud) - { - return FALSE; - } - RECT src; - src.left = pos.x + 16; - src.right = pos.x + 60 - 16; - src.top = pos.y + 11; - src.bottom = pos.y + 60 - 2; - RECT src2; - src2.left = m_blupiPos.x - 16 - 40; - src2.right = m_blupiPos.x + 60 + 16 + 40; - src2.top = m_blupiPos.y + 11 - 40; - src2.bottom = m_blupiPos.y + 60 - 2 + 40; - RECT tinyRect; - return IntersectRect(tinyRect, src, src2); -} - -void CDecor::MoveObjectFollow(POINT pos) -{ - if (m_blupiHide) - { - return; - } - RECT src = BlupiRect(pos); - src.left = pos.x + 16; - src.right = pos.x + 60 - 16; - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i]->type == 96) - { - RECT src2; - src2.left = m_moveObject[i]->posCurrent.x - 100; - src2.right = m_moveObject[i]->posCurrent.x + 60 + 100; - src2.top = m_moveObject[i]->posCurrent.y - 100; - src2.bottom = m_moveObject[i]->posCurrent.y + 60 + 100; - RECT tinyRect; - if (IntersectRect(tinyRect, src2, src)) - { - m_moveObject[i]->type = 97; - PlaySound(92, m_moveObject[i]->posCurrent); - } - } - } -} - -int CDecor::MoveObjectDetect(POINT pos, BOOL* pbNear) -{ - RECT src = BlupiRect(pos); - src.left = pos.x + 16; - src.right = pos.x + 60 - 16; - RECT src2; - src2.left = src.left - 20; - src2.right = src.right + 20; - src2.top = src.top - 40; - src2.bottom = src.bottom + 30; - - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i]->type != 0 && - m_moveObject[i]->type != 27 && - m_moveObject[i]->type != 57 && - m_moveObject[i]->type != 39 && - m_moveObject[i]->type != 58 && - m_moveObject[i]->type != 34 && - m_moveObject[i]->type != 37 && - m_moveObject[i]->type != 38 && - (m_blupiAction != 14 && m_blupiAction != 29) || - m_moveObject[i]->type != 12) - { - RECT src3; - - } - } -} - -int CDecor::MoveAscenseurDetect(POINT pos, int height) -{ - if (m_blupiTimeNoAsc != 0) - { - return -1; - } - RECT src; - src.left = pos.x + 12; - src.right = pos.x + 60 - 12; - src.top = pos.y + 60 - 2; - src.bottom = pos.y + 60 + height - 1; - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i]->type == 1 || m_moveObject[i]->type == 47 || m_moveObject[i]->type == 48) - { - RECT src2; - src2.left = m_moveObject[i]->posCurrent.x; - src2.right = m_moveObject[i]->posCurrent.x + 64; - src2.top = m_moveObject[i]->posCurrent.y; - src2.bottom = m_moveObject[i]->posCurrent.y + 16; - RECT tinyRect; - if (IntersectRect(tinyRect, src2, src)) - { - return i; - } - } - } - return -1; -} - -int CDecor::MoveChargeDetect(POINT pos) -{ - RECT src; - src.left = pos.x + 16; - src.right = pos.x + 60 - 16; - src.top = pos.y + 11; - src.bottom = pos.y + 60 - 2; - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i]->type == 31) - { - RECT src2; - src2.left = m_moveObject[i]->posCurrent.x - 10; - src2.right = m_moveObject[i]->posCurrent.x + 60 + 10; - src2.top = m_moveObject[i]->posCurrent.y + 36; - src2.bottom = m_moveObject[i]->posCurrent.y + 60; - RECT tinyRect; - if (IntersectRect(tinyRect, src2, src)) - { - return i; - } - } - } - return -1; -} - -int CDecor::MovePersoDetect(POINT pos) -{ - RECT src; - src.left = pos.x + 16; - src.right = pos.x + 60 - 16; - src.top = pos.y + 11; - src.bottom = pos.y + 60 - 2; - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i]->type >= 200 && m_moveObject[i]->type <= 203) - { - RECT src2; - src2.left = m_moveObject[i]->posCurrent.x - 16; - src2.right = m_moveObject[i]->posCurrent.x + 60 + 16; - src2.top = m_moveObject[i]->posCurrent.y + 36; - src2.bottom = m_moveObject[i]->posCurrent.y + 60; - RECT tinyRect; - if (IntersectRect(tinyRect, src2, src)) - { - return i; - } - } - } - return -1; -} - -int CDecor::MoveBalleDetect(POINT pos) -{ - -} - -int CDecor::MoveObjectDelete(POINT cel) -{ - int result = -1; - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i]->type != 0) - { - if (cel.x == m_moveObject[i]->posStart.x / 64 && cel.y == m_moveObject[i]->posStart.y / 64) - { - result = m_moveObject[i]->type; - m_moveObject[i]->type = 0; - } - else if (cel.x == m_moveObject[i]->posEnd.x / 64 && cel.y == m_moveObject[i]->posEnd.y / 64) - { - result = m_moveObject[i]->type; - m_moveObject[i]->type = 0; - } - } - } - return result; -} - -int CDecor::MoveObjectFree() -{ - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i]->type == 0) - { - m_moveObject[i]->type = 0; - return i; - } - } - return -1; -} - -int CDecor::SortGetType(int type) -{ - if (type == 2 || type == 3 || type == 96 || type == 97) - { - return 1; - } - if (type == 12) - { - return 2; - } - return 3; -} - -void CDecor::MoveObjectSort() -{ - MoveObject src = default(MoveObject); - int num = 0; - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i]->type != 0) - { - MoveObjectCopy(m_moveObject[num++], m_moveObject[i]); - } - } - for (int i = num; i < MAXMOVEOBJECT; i++) - { - m_moveObject[i]->type = 0; - } - if (num <= 1) - { - return; - } - BOOL flag; - do - { - flag = FALSE; - for (int i = 0; i < num - 1; i++) - { - if (SortGetType(m_moveObject[i]->type) > SortGetType(m_moveObject[i + 1]->type)) - { - MoveObjectCopy(src, m_moveObject[i]); - MoveObjectCopy(m_moveObject[i], m_moveObject[i + 1]); - MoveObjectCopy(m_moveObject[i + 1], src); - flag = TRUE; - } - } - } while (flag); - UpdateCaisse(); - m_nbLinkCaisse = 0; -} - -void CDecor::MoveObjectPriority(int i) -{ - -} - -int CDecor::MoveObjectSearch(POINT pos, int type) -{ - for (int i = 0; i < MAXMOVEOBJECT; i++) - { - if (m_moveObject[i]->type != 0 && (type == -1 || - m_moveObject[i]->type == type)) - { - if (m_moveObject[i]->type == 23 && - m_moveObject[i]->posStart.x != m_moveObject[i]->posEnd.x) - { - if (m_moveObject[i]->posCurrent.x >= pos.x - 100 && - m_moveObject[i]->posCurrent.x <= pos.x + 100 && - m_moveObject[i]->posCurrent.y == pos.y) - { - return i; - } - } - else if (m_moveObject[i]->type == 23 && - m_moveObject[i]->posStart.y != m_moveObject[i]->posEnd.y) - { - if (m_moveObject[i]->posCurrent.y >= pos.y - 100 && - m_moveObject[i]->posCurrent.y <= pos.y + 100 && - m_moveObject[i]->posCurrent.x == pos.x) - { - return i; - } - } - else if (m_moveObject[i]->posCurrent.x == pos.x && - m_moveObject[i]->posCurrent.y == pos.y) - { - return i; - } - } - } - return -1; -} diff --git a/decnet.cpp b/decnet.cpp deleted file mode 100644 index 85e2145..0000000 --- a/decnet.cpp +++ /dev/null @@ -1,197 +0,0 @@ -// DecNet.cpp -// - -#include "def.h" -#include "decor.h" -#include "misc.h" -#include "network.h" - -void CDecor::NetStopCloud(int rank) -{ - NetMessage msg; - - msg.data1 = 0; - msg.x = 0; - msg.y = 0; - msg.type = MESS_STOPCLOUD; - msg.channel = rank; - NetMessagePush(&msg); - return; -} - -void CDecor::NetPlaySound(short channel, POINT pos) -{ - NetMessage msg; - - msg.y = pos.y; - msg.x = pos.x; - msg.type = MESS_PLAYSOUND; - msg.data1 = 0; - msg.channel = channel; - NetMessagePush(&msg); - return; -} - -void CDecor::NetStopSound(short channel) -{ - NetMessage msg; - - msg.data1 = 0; - msg.x = 0; - msg.y = 0; - msg.type = MESS_STOPSOUND; - msg.channel = channel; - NetMessagePush(&msg); -} - -void CDecor::NetDataFlush() -{ - for (int i = 0; i < MAXNETPLAYER; i++) - { - m_netPos[i].x = 0; - m_netPos[i].y = 0; - m_netIcons[i] = -1; - m_netUnk1[i] = 0; - m_netUnk2[i] = 0; - m_netUnk3[i] = 0; - m_netPlayerPacketsReceived[i] = 0; - m_netPlayerPacketsReceived2[i] = 0; - m_netTimeSincePacket[i] = 0; - m_netVitesses[i].x = 0; - m_netVitesses[i].y = 0; - m_netUnk4[i].x = 0; - m_netUnk4[i].y = 0; - } - m_netPacketsSent = 0; - m_netPacketsSent2 = 0; - m_netPacketsReceived = 0; - m_netPacketsReceived2 = 0; - m_netPacketIcon = -1; - NetMessageIndexFlush(); -} - -void CDecor::NetFUN_155e0(BYTE _foo, short _bar) -{ - char data[4]{ 4, _foo, _bar & 0xff, _bar >> 8 }; - m_pNetwork->Send(&data, 4, DPSEND_GUARANTEED); - return; -} - -void CDecor::TreatNetData() -{ - -} - -void CDecor::DoNetSmooth(int player) -{ - -} - -void CDecor::NetFUN_15d50() -{ - -} - -void CDecor::FUN_15da0(int index, short step) -{ - -} - - -void CDecor::NetPlayerCollide(POINT pos, int* out) -{ - tagRECT rect1; - RECT rect2; - RECT rect3; - //TODO - -} - -void CDecor::NetMessageIndexFlush() -{ - m_netMessageIndex1 = 0; - m_netMessageIndex2 = 0; - m_netMessageIndex3 = 0; - return; -} - -BOOL CDecor::NetMessagePush(NetMessage* message) -{ - NetMessage* messages; - BYTE data; - short pos; - int i; - - if (m_netMessageIndex1 == MAXNETMESSAGE) return FALSE; - - CopyMemory(&m_netMessages[m_netMessageIndex2], message, sizeof(NetMessage)); - m_netMessageIndex1++; - m_netMessageIndex2++; - if (m_netMessageIndex2 == MAXNETMESSAGE) - { - m_netMessageIndex2 = 0; - } - return TRUE; -} - -BOOL CDecor::NetMessagePop(NetMessage* message) -{ - if (m_netMessageIndex1 == 0) return FALSE; - - CopyMemory(message, &m_netMessages[m_netMessageIndex3], sizeof(NetMessage)); - m_netMessageIndex1--; - m_netMessageIndex3++; - if (m_netMessageIndex3 == MAXNETMESSAGE) - { - m_netMessageIndex3 = 0; - } - return TRUE; -} - -void CDecor::NotifFlush() -{ - for (int i = 0; i < MAXNOTIF; i++) - { - m_notifText[i][0] = '\0'; - } - - m_notifTime = 0; -} - -void CDecor::NotifPop() -{ - for (int i = MAXNOTIF; i > 0; --i) - { - strcpy() - m_notifText[MAXNOTIF - 1][0] = '\0'; - m_notifTime = NOTIFDELAY; // idk - } -} - -void CDecor::NotifPush(char *str) -{ - int i; - for (i = 0; i < MAXNOTIF; i++) - { - if (m_notifText[i][0] != '\0') break; - } - if (i >= MAXNOTIF) - { - NotifPop(); - i = MAXNOTIF - 1; - } - strcpy(m_notifText[i], str); - m_notifTime = NOTIFDELAY; - m_pSound->PlayImage(SOUND_TRESOR, { LXIMAGE / 2, LYIMAGE / 2 }, -1); -} - -void CDecor::NotifStep() -{ - if (m_notifTime == 0) - { - NotifPop(); - } - else { - m_notifTime--; - } -} \ No newline at end of file diff --git a/obstacle.h b/obstacle.h deleted file mode 100644 index 87ac4ac..0000000 --- a/obstacle.h +++ /dev/null @@ -1,589 +0,0 @@ -#pragma once -#define Q_EMPTY \ - 0,0,0,0, \ - 0,0,0,0, \ - 0,0,0,0, \ - 0,0,0,0 -#define Q_FULL \ - 1,1,1,1, \ - 1,1,1,1, \ - 1,1,1,1, \ - 1,1,1,1 -#define Q_TRIANGLE_RIGHT \ - 1,1,1,1, \ - 0,1,1,1, \ - 0,0,0,1, \ - 0,0,0,0 -#define Q_TRIANGLE_LEFT \ - 1,1,1,1, \ - 1,1,1,0, \ - 1,0,0,0, \ - 0,0,0,0 -#define Q_TOP_HALF \ - 1,1,1,1, \ - 1,1,1,1, \ - 0,0,0,0, \ - 0,0,0,0 -#define Q_TOP_QUARTER \ - 1,1,1,1, \ - 0,0,0,0, \ - 0,0,0,0, \ - 0,0,0,0 -#define Q_TOP_3_QUARTERS \ - 1,1,1,1, \ - 1,1,1,1, \ - 1,1,1,1, \ - 0,0,0,0 -#define Q_PILLAR \ - 0,1,1,0, \ - 0,1,1,0, \ - 0,1,1,0, \ - 0,1,1,0 - -extern short table_decor_quart[] -{ - Q_FULL, // 0 - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_TRIANGLE_RIGHT, - - Q_TRIANGLE_RIGHT, // 16 - Q_TRIANGLE_LEFT, - Q_TRIANGLE_LEFT, - - 1,1,1,1, - 1,1,1,1, - 0,0,1,1, - 0,0,0,0, - - 1,1,1,1, - 1,1,1,1, - 1,1,0,0, - 1,1,0,0, - - 1,1,1,1, - 1,1,1,1, - 1,1,0,0, - 0,0,0,0, - - Q_EMPTY, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_TOP_HALF, - Q_TOP_QUARTER, - Q_FULL, - Q_FULL, - - Q_FULL, // 32 - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_TOP_3_QUARTERS, - Q_TOP_HALF, - Q_TOP_QUARTER, - - Q_FULL, // 48 - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - - Q_FULL, // 64 - Q_FULL, - Q_FULL, - Q_FULL, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_TRIANGLE_LEFT, - Q_TRIANGLE_RIGHT, - Q_EMPTY, - Q_EMPTY, - Q_FULL, - Q_FULL, - - Q_FULL, // 80 - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_EMPTY, - Q_EMPTY, - - 1,1,1,1, - 1,1,1,1, - 1,1,1,1, - 1,1,0,0, - - 1,1,1,1, - 1,1,1,1, - 1,1,0,0, - 1,1,0,0, - - 1,1,1,1, - 1,1,1,1, - 1,1,1,1, - 0,1,1,1, - - 1,1,1,1, - 1,1,1,1, - 0,0,1,1, - 0,0,1,1, - - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - - Q_FULL, // 96 - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - - 1,1,1,1, - 1,1,1,1, - 1,1,1,0, - 1,1,1,0, - - 1,1,1,1, - 1,1,1,1, - 0,1,1,1, - 0,1,1,1, - - Q_EMPTY, - Q_EMPTY, - - Q_EMPTY, // 112 - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - - 0,0,0,1, - 0,0,0,1, - 0,0,0,1, - 0,0,0,1, - - Q_EMPTY, - - Q_EMPTY, // 128 - - 1,0,0,0, - 1,0,0,0, - 1,0,0,0, - 1,0,0,0, - - Q_EMPTY, - Q_EMPTY, - - 0,0,0,0, - 0,0,0,0, - 0,0,0,0, - 1,1,1,1, - - Q_EMPTY, - Q_EMPTY, - Q_TOP_QUARTER, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - - Q_FULL, // 144 - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_TRIANGLE_LEFT, - Q_TRIANGLE_RIGHT, - Q_FULL, - Q_FULL, - Q_EMPTY, - Q_EMPTY, - - Q_EMPTY, // 160 - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - - Q_EMPTY, // 176 - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_PILLAR, - Q_PILLAR, - Q_EMPTY, - Q_EMPTY, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - - Q_FULL, // 192 - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - - Q_EMPTY, // 208 - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - - Q_FULL, // 224 - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - - Q_EMPTY, // 240 - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_TOP_3_QUARTERS, - Q_TOP_3_QUARTERS, - - 1,1,1,1, - 1,1,1,1, - 1,1,1,0, - 0,0,0,0, - - Q_FULL, - Q_FULL, - - Q_TOP_3_QUARTERS, // 256 - Q_FULL, - Q_FULL, - Q_TOP_3_QUARTERS, - Q_TOP_3_QUARTERS, - Q_FULL, - Q_FULL, - Q_FULL, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - - Q_EMPTY, // 272 - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_FULL, - Q_FULL, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - - Q_EMPTY, // 288 - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_FULL, - Q_EMPTY, - Q_EMPTY, - - Q_FULL, // 304 - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_TOP_HALF, - Q_TOP_HALF, - Q_TOP_HALF, - Q_TOP_HALF, - Q_TOP_HALF, - Q_TOP_HALF, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - - Q_EMPTY, // 320 - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_TOP_QUARTER, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - - 1,1,1,1, - 1,1,1,1, - 0,1,1,0, - 0,1,1,0, - - 1,1,1,1, - 1,1,1,1, - 0,1,1,0, - 0,1,1,0, - - 1,1,1,1, - 1,1,1,1, - 0,1,1,0, - 0,1,1,0, - - 1,1,1,1, - 1,1,1,1, - 0,1,1,0, - 0,1,1,0, - - Q_PILLAR, - Q_PILLAR, - - Q_PILLAR, // 336 - Q_EMPTY, - Q_FULL, - Q_EMPTY, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - - Q_FULL, // 352 - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_TOP_QUARTER, - Q_TOP_QUARTER, - Q_TOP_QUARTER, - Q_EMPTY, - - Q_EMPTY, // 368 - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_FULL, - Q_FULL, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - - Q_EMPTY, // 384 - Q_EMPTY, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_FULL, - Q_EMPTY, - Q_EMPTY, - - Q_EMPTY, // 400 - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - - Q_EMPTY, // 416 - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_EMPTY, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - - Q_PILLAR, // 432 - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR, - Q_PILLAR -}; \ No newline at end of file diff --git a/RCa19860 b/resource/RCa19860 similarity index 100% rename from RCa19860 rename to resource/RCa19860 diff --git a/RCb19860 b/resource/RCb19860 similarity index 100% rename from RCb19860 rename to resource/RCb19860 diff --git a/RCc19860 b/resource/RCc19860 similarity index 100% rename from RCc19860 rename to resource/RCc19860 diff --git a/RCd19860 b/resource/RCd19860 similarity index 100% rename from RCd19860 rename to resource/RCd19860 diff --git a/arrow.cur b/resource/arrow.cur similarity index 100% rename from arrow.cur rename to resource/arrow.cur diff --git a/arrowdl.cur b/resource/arrowdl.cur similarity index 100% rename from arrowdl.cur rename to resource/arrowdl.cur diff --git a/arrowdow.cur b/resource/arrowdow.cur similarity index 100% rename from arrowdow.cur rename to resource/arrowdow.cur diff --git a/arrowdr.cur b/resource/arrowdr.cur similarity index 100% rename from arrowdr.cur rename to resource/arrowdr.cur diff --git a/arrowlef.cur b/resource/arrowlef.cur similarity index 100% rename from arrowlef.cur rename to resource/arrowlef.cur diff --git a/arrowrig.cur b/resource/arrowrig.cur similarity index 100% rename from arrowrig.cur rename to resource/arrowrig.cur diff --git a/arrowul.cur b/resource/arrowul.cur similarity index 100% rename from arrowul.cur rename to resource/arrowul.cur diff --git a/arrowup.cur b/resource/arrowup.cur similarity index 100% rename from arrowup.cur rename to resource/arrowup.cur diff --git a/arrowur.cur b/resource/arrowur.cur similarity index 100% rename from arrowur.cur rename to resource/arrowur.cur diff --git a/blupi-d.aps b/resource/blupi-d.aps similarity index 100% rename from blupi-d.aps rename to resource/blupi-d.aps diff --git a/blupi-d.rc b/resource/blupi-d.rc similarity index 100% rename from blupi-d.rc rename to resource/blupi-d.rc diff --git a/blupi-e.aps b/resource/blupi-e.aps similarity index 100% rename from blupi-e.aps rename to resource/blupi-e.aps diff --git a/blupi-e.rc b/resource/blupi-e.rc similarity index 100% rename from blupi-e.rc rename to resource/blupi-e.rc diff --git a/blupi-f.aps b/resource/blupi-f.aps similarity index 100% rename from blupi-f.aps rename to resource/blupi-f.aps diff --git a/blupi-f.rc b/resource/blupi-f.rc similarity index 100% rename from blupi-f.rc rename to resource/blupi-f.rc diff --git a/blupi.ico b/resource/blupi.ico similarity index 100% rename from blupi.ico rename to resource/blupi.ico diff --git a/blupi.rct b/resource/blupi.rct similarity index 100% rename from blupi.rct rename to resource/blupi.rct diff --git a/empty.cur b/resource/empty.cur similarity index 100% rename from empty.cur rename to resource/empty.cur diff --git a/fill.cur b/resource/fill.cur similarity index 100% rename from fill.cur rename to resource/fill.cur diff --git a/map.cur b/resource/map.cur similarity index 100% rename from map.cur rename to resource/map.cur diff --git a/resource2.h b/resource/resource2.h similarity index 100% rename from resource2.h rename to resource/resource2.h diff --git a/resrc1.h b/resource/resrc1.h similarity index 100% rename from resrc1.h rename to resource/resrc1.h diff --git a/rstemp.rct b/resource/rstemp.rct similarity index 100% rename from rstemp.rct rename to resource/rstemp.rct diff --git a/speedy.aps b/resource/speedy.aps similarity index 100% rename from speedy.aps rename to resource/speedy.aps diff --git a/speedy.rc b/resource/speedy.rc similarity index 100% rename from speedy.rc rename to resource/speedy.rc diff --git a/speedyblupi.aps b/resource/speedyblupi.aps similarity index 100% rename from speedyblupi.aps rename to resource/speedyblupi.aps diff --git a/speedyblupi.rc b/resource/speedyblupi.rc similarity index 100% rename from speedyblupi.rc rename to resource/speedyblupi.rc diff --git a/wait.cur b/resource/wait.cur similarity index 100% rename from wait.cur rename to resource/wait.cur diff --git a/speedyblupi.dsp b/speedyblupi.dsp deleted file mode 100644 index b0f1b31..0000000 --- a/speedyblupi.dsp +++ /dev/null @@ -1,335 +0,0 @@ -# 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 diff --git a/speedyblupi.dsw b/speedyblupi.dsw deleted file mode 100644 index 9aa939d..0000000 --- a/speedyblupi.dsw +++ /dev/null @@ -1,29 +0,0 @@ -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> -{{{ -}}} - -############################################################################### - diff --git a/speedyblupi.ncb b/speedyblupi.ncb deleted file mode 100644 index c8baf70bb8728e7208c10f2de4acc0de30ab4683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 189440 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 diff --git a/speedyblupi.opt b/speedyblupi.opt deleted file mode 100644 index a695f542aa0119c832d266525ad0ed24905e30d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48640 zcmeI5Piz!b9LHZdm9xNW7336AmVNGQ zpZUCL4?pI;`SFJ(x4-y$)g3V{9TIh7d?F?yf$|#UrQFmkP(Lvt^Zr%lQN;8Z5%>pl zO<>*XpaoDpB-gwFib64{5sE`{ofqP|2wDu`5fDqDrO+~{1$qjSeoy1N0$K^Jf>uM% zKx?42&^k!^9mjP8^eprov=Q0_ZHBf$TcPJ6>AM}*R;Ufy0kuO(r~}#w?SiD=9$fcA z`=I^M0q6zjAoL=12$FtBaP5S;pcIsbx}hHED0B>xeo`+Xe-b(cy$qd(&Oom~y-*({ z{m$Wf9_oi)g)Ts^L9ast&>N8Sn=h$XnE2<21n#_ut0hJ-!|Ky=JTd;g)Xvf@@m~7Y z?O%Vck@xSr_G5HQToJY?iHy*Mj+yjf9vMjYo$hl@h+6jUg@pa_Fr)E)GBY$_~-^FUjZ<51!<9CakFmSJu!h@tm7+?Or%CTjtrjO;)$s4~0 z>nG zK%iM$&MwKWm`H#GNPq-LfCNZ@1W14cNPq-LfCL_M0!zn#A44#2biUoj;qgDl5MZ2l z^V&ZC-57$N^KM=j#(x?^Aa>r(t7rV1F$9O_-MsAa_s0;L9KG>rJTm-oJhBx*x8}9+ zNXuvO$QI;ptcgcHMEM@%zd}BN^1aC4M*d5b|A~P5^>y*cC)eJs`wRJ-$X`df@Y45z z{LMiAmq6b44PM_G|7c9C7o)l6Vduz-VMo^8sQo~OB;B+CKP!e;7QEC={*Ml0cR?`B zlK=^j011!)36KB@kN^pg011%5|Cj*df8iFN@xO4q82>|TFc9;5*zvz8qJyVSo{+D$ zGLZlYkN^pg011!)36KB@kN^pg011$QOMvmea1R3Gf8lsB{x`SrzkBV!?#GVgBK9TA zebKX}4cLE-*BL|YKVC08_4Xeh$1eKg;!St|w~js7IqW~rio7UeKe#d5;Ha1TztzrX z^|Oj5Vw-fDHhwkj?&Z_?0ORitjGw~2W^ng5P7N?{|3kQ=ko-g6|KY&+b=dzM-1{9% zh{GGWT1( zzwvzL-ezhMiMI6hb@gHodt9W>W~@QoIqv9%nLCn$dW|YEz#1HI>)y~&%Pg0?+WKfq z`b2+&QPlF~oPHk{<*0tj-kC^%1W14cNPq-LfCNZ@1W14cNZ<(|!1!OdMP&Rh952TI z9!>o3;FPxj5udAxWi-byi+0;38J~+~EXy2f)5?~#;;xm;`*xGE?{cuFI^^|>QwuC( z&@WJ3mMdL)c4=CDrN>6~=3uVP(&UUhQ=e*H^vsy++@_V>57c;;p_%TTsX9w@R6k|M zF^j%yG^i*hSs(P3dfch8nv;S!$ZdJDDtAb5u)Lp96NahF*usaKH2|QD|`Y(AZR~hfMw4^sY zUP>+I{2>~Y<+h4C`fvqG#5LUVCYcRljSgiDII3R=7?Ud%aSgXs@Q+`0A7=`-V4eg> zfCNZ@1W14cNPq-LfCL^P0mlEr!Dsw0952TI<~IK4fB$)6!hMG>mA8BHxxT!a4Q>h! zw}kX20TLhq5+DH*AOR8}0TLhq5+DH*c+3ef{ugcm8UG8%i}Am?jsK-_=3o}5Ee_(J zF062i1@EN~aQ@*5If{4wVj8DRY8bzO(Tl>tIf&s>3(lX6qDeg@Pk^kZ^;zlUjbDxb zY(8PnpPa3~u=W3C{Km@H!F_u2i{X*}jH6vj`k4+tv(wM)^5-bunPegX5+DH*AOR8} z0TLhq5+DH*AORA1vIsE#8*V)r{|(2B@!z?P|3+|jVvQJW*oUy+=Tnv{wIj97{Zh`9 z(uZfPL)XpF(!kXpE#5Xz*}=W(?T*gwj=h~bQ?1FpJ-b_z$#i>bXHT-LwY|NwJ+;5R zXMehT&pSeFM{9X-WF6#(NdHFW4s;1+Qr8eSz9pTQNPq-LfCNZ@1W14cNPq-LfCNZ@ b1SSbE{x`{@njGVQ)li!BVf=4y" 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 -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 -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) diff --git a/speedyblupi.sln b/speedyblupi.sln deleted file mode 100644 index a75a76b..0000000 --- a/speedyblupi.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26730.12 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "speedyblupi", "speedyblupi.vcxproj", "{E892DD4F-D6B7-4A19-8EC3-AB2625A8A523}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E892DD4F-D6B7-4A19-8EC3-AB2625A8A523}.Debug|x64.ActiveCfg = Debug|x64 - {E892DD4F-D6B7-4A19-8EC3-AB2625A8A523}.Debug|x64.Build.0 = Debug|x64 - {E892DD4F-D6B7-4A19-8EC3-AB2625A8A523}.Debug|x86.ActiveCfg = Debug|Win32 - {E892DD4F-D6B7-4A19-8EC3-AB2625A8A523}.Debug|x86.Build.0 = Debug|Win32 - {E892DD4F-D6B7-4A19-8EC3-AB2625A8A523}.Release|x64.ActiveCfg = Release|x64 - {E892DD4F-D6B7-4A19-8EC3-AB2625A8A523}.Release|x64.Build.0 = Release|x64 - {E892DD4F-D6B7-4A19-8EC3-AB2625A8A523}.Release|x86.ActiveCfg = Release|Win32 - {E892DD4F-D6B7-4A19-8EC3-AB2625A8A523}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {330B6445-ECF1-4B81-AA61-15954FA4F694} - EndGlobalSection -EndGlobal diff --git a/speedyblupi.vcxproj b/speedyblupi.vcxproj deleted file mode 100644 index 49c93ed..0000000 --- a/speedyblupi.vcxproj +++ /dev/null @@ -1,253 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - {E892DD4F-D6B7-4A19-8EC3-AB2625A8A523} - Win32Proj - speedyblupi - 10.0.19041.0 - speedyblupi - - - - Application - true - v141 - MultiByte - - - Application - false - v141 - true - MultiByte - - - Application - true - v141 - MultiByte - - - Application - false - v141 - true - MultiByte - - - - - - - - - - - - - - - - - - - - - true - - - true - - - false - - - false - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - false - false - dxsdk3\sdk\inc;%(AdditionalIncludeDirectories) - PlaySound;DrawText - - - Windows - true - winmm.lib;ddraw.lib;dsound.lib;dplay.lib;%(AdditionalDependencies) - dxsdk3\sdk\lib - - - - - - - Level3 - Disabled - _CRT_SECURE_NO_WARNINGS;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - false - false - dxsdk3\sdk\inc;%(AdditionalIncludeDirectories) - PlaySound;DrawText - - - Windows - true - winmm.lib;ddraw.lib;dsound.lib;%(AdditionalDependencies) - dxsdk3\sdk\lib - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - false - dxsdk3\sdk\inc;%(AdditionalIncludeDirectories) - PlaySound;DrawText - - - Windows - true - true - true - winmm.lib;ddraw.lib;dsound.lib;%(AdditionalDependencies) - dxsdk3\sdk\lib - - - - - Level3 - - - MaxSpeed - true - true - _CRT_SECURE_NO_WARNINGS;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - false - dxsdk3\sdk\inc;%(AdditionalIncludeDirectories) - PlaySound;DrawText - - - Windows - true - true - true - winmm.lib;ddraw.lib;dsound.lib;%(AdditionalDependencies) - dxsdk3\sdk\lib - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - true - true - true - - - true - true - true - true - - - - - - - - - - \ No newline at end of file diff --git a/speedyblupi.vcxproj.filters b/speedyblupi.vcxproj.filters deleted file mode 100644 index 99e11b7..0000000 --- a/speedyblupi.vcxproj.filters +++ /dev/null @@ -1,203 +0,0 @@ - - - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {7afac595-449b-49eb-b3fd-d4a7328dbbc0} - - - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - Sources - - - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Resource Files - - - Data - - - Resource Files - - - - - Resource Files - - - Resource Files - - - Resource Files - - - - - Resource Files - - - \ No newline at end of file diff --git a/speedyblupi.vcxproj.user b/speedyblupi.vcxproj.user deleted file mode 100644 index be25078..0000000 --- a/speedyblupi.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/blupi.cpp b/src/blupi.cpp index 3e05896..abc57cf 100644 --- a/src/blupi.cpp +++ b/src/blupi.cpp @@ -3,10 +3,9 @@ #define WIN32_LEAN_AND_MEAN -#pragma once - #include #include +#include #include #include #include @@ -27,8 +26,6 @@ #include "misc.h" #include "network.h" -#pragma warning (disable : 4996) - // Define Globals #define NAME "Blupi" diff --git a/src/button.cpp b/src/button.cpp index 8ddfb18..48616b1 100644 --- a/src/button.cpp +++ b/src/button.cpp @@ -1,20 +1,18 @@ // Button.cpp // -#include -#include -#include -#include +//#include +//#include +//#include +//#include -#include +//#include + +#include "button.h" +#include "misc.h" #include "def.h" #include "pixmap.h" #include "sound.h" -#include "decor.h" -#include "button.h" -#include "misc.h" - -using namespace std; ////////////////////////////////////////////////////////// diff --git a/src/button.h b/src/button.h index 834266e..83f02a7 100644 --- a/src/button.h +++ b/src/button.h @@ -1,10 +1,9 @@ #pragma once -// #include -#include +//#include #include "decor.h" -#include "sound.h" #include "pixmap.h" +#include "sound.h" class CButton { diff --git a/src/ddutil.h b/src/ddutil.h index 86c1d1d..406ba8e 100644 --- a/src/ddutil.h +++ b/src/ddutil.h @@ -9,8 +9,6 @@ #define DIRECTDRAW_VERSION 0x0500 -using namespace std; - #pragma once #include diff --git a/src/decblupi.cpp b/src/decblupi.cpp index 3314f6e..450af53 100644 --- a/src/decblupi.cpp +++ b/src/decblupi.cpp @@ -1,10 +1,10 @@ // DecBlupi.cpp // -#include "DEF.H" -#include "DECOR.H" -#include "MISC.H" -#include "RESOURCE.H" +#include "misc.h" +#include "decor.h" +#include "misc.h" +//#include "resource.h" #include "dectables.h" int CDecor::GetBlupiChannelStandard() diff --git a/src/decio.cpp b/src/decio.cpp index f0edfc3..43609f2 100644 --- a/src/decio.cpp +++ b/src/decio.cpp @@ -57,7 +57,7 @@ BOOL CDecor::Write(int gamer, int mission, BOOL bUser) pBuffer->music = m_music; pBuffer->region = m_region; blupiDir = m_blupiStartDir; - strcpy(pBuffer->libelle, m_missionTitle); + strcpy(pBuffer->name, m_missionTitle); blupiPos = m_blupiStartPos; for (i = 0; i < 4; i++) @@ -129,7 +129,7 @@ BOOL CDecor::Read(int gamer, int mission, BOOL bUser) m_region = pBuffer->region; if (0 < majRev && minRev > 2) { - strcpy(m_missionTitle,pBuffer->libelle); + strcpy(m_missionTitle,pBuffer->name); } startDir = m_blupiStartDir; blupiDir = pBuffer->blupiDir; @@ -194,7 +194,7 @@ BOOL CDecor::MissionStart(int gamer, int mission, BOOL bUser) { char filename[MAX_PATH]; FILE* file = NULL; - DescFile* pBuffer = NULL; + DescSave* pBuffer = NULL; int nb, i, x, y; int majRev, minRev; @@ -204,28 +204,119 @@ BOOL CDecor::MissionStart(int gamer, int mission, BOOL bUser) file = fopen(filename, "wb"); if (file == NULL) goto error; - pBuffer = (DescFile*)malloc(sizeof(DescFile)); + pBuffer = (DescSave*)malloc(sizeof(DescSave)); if (pBuffer == NULL) goto error; - memset(pBuffer, 0, sizeof(DescFile)); - + + memset(pBuffer, 0, sizeof(DescSave)); + pBuffer->lg = sizeof(DescSave); pBuffer->majRev = 1; pBuffer->minRev = 4; - memcpy(pBuffer->reserve1, m_decor, sizeof(Cellule)); - memcpy(pBuffer->reserve1, m_bigDecor, sizeof(m_bigDecor)); - memcpy(pBuffer->reserve1, m_balleTraj, sizeof(m_balleTraj)); - memcpy(pBuffer->reserve1, m_moveTraj, sizeof(m_moveTraj)); - memcpy(pBuffer->reserve1, m_moveObject, sizeof(m_moveObject)); + pBuffer->reserve1[0] = 0; + memcpy(pBuffer->decor, m_decor, sizeof(pBuffer->decor)); + memcpy(pBuffer->bigDecor, m_bigDecor, sizeof(pBuffer->bigDecor)); + memcpy(pBuffer->balleTraj, m_balleTraj, sizeof(pBuffer->balleTraj)); + memcpy(pBuffer->moveTraj, m_moveTraj, sizeof(pBuffer->moveTraj)); + memcpy(pBuffer->moveObject, m_moveObject, sizeof(pBuffer->moveObject)); pBuffer->posDecor = m_posDecor; pBuffer->dimDecor = m_dimDecor; - pBuffer->world = m_mission; + pBuffer->phase = m_phase; + pBuffer->term = m_term; pBuffer->music = m_music; pBuffer->region = m_region; - pBuffer->blupiPos[2] = m_blupiPos; - pBuffer->blupiPos[3] = m_blupiValidPos; - pBuffer->blupiDir[3] = m_blupiStartDir[3]; - pBuffer->libelle[99] = m_missionTitle[99]; + pBuffer->time = m_time; + memcpy(pBuffer->missionTitle, m_missionTitle, sizeof(pBuffer->missionTitle)); + pBuffer->nbRankCaisse = m_nbRankCaisse; + memcpy(pBuffer->rankCaisse, m_rankCaisse, sizeof(pBuffer->rankCaisse)); + pBuffer->nbLinkCaisse = m_nbLinkCaisse; + memcpy(pBuffer->linkCaisse, m_linkCaisse, sizeof(pBuffer->linkCaisse)); + pBuffer->blupiPos = m_blupiPos; + pBuffer->blupiValidPos = m_blupiValidPos; + pBuffer->blupiAction = m_blupiAction; + pBuffer->blupiDir = m_blupiDir; + pBuffer->blupiPhase = m_blupiPhase; + pBuffer->blupiVitesse = m_blupiVitesse; + pBuffer->blupiIcon = m_blupiIcon; + pBuffer->blupiSec = m_blupiSec; + pBuffer->blupiChannel = m_blupiChannel; + pBuffer->blupiVector = m_blupiVector; + pBuffer->blupiTransport = m_blupiTransport; + pBuffer->blupiFocus = m_blupiFocus; + pBuffer->blupiAir = m_blupiAir; + pBuffer->blupiHelico = m_blupiHelico; + pBuffer->blupiOver = m_blupiOver; + pBuffer->blupiJeep = m_blupiJeep; + pBuffer->blupiTank = m_blupiTank; + pBuffer->blupiSkate = m_blupiSkate; + pBuffer->blupiNage = m_blupiNage; + pBuffer->blupiSurf = m_blupiSurf; + pBuffer->blupiVent = m_blupiVent; + pBuffer->blupiSuspend = m_blupiSuspend; + pBuffer->blupiJumpAie = m_blupiJumpAie; + pBuffer->blupiShield = m_blupiShield; + pBuffer->blupiPower = m_blupiPower; + pBuffer->blupiCloud = m_blupiCloud; + pBuffer->blupiHide = m_blupiHide; + pBuffer->blupiInvert = m_blupiInvert; + pBuffer->blupiBalloon = m_blupiBalloon; + pBuffer->blupiEcrase = m_blupiEcrase; + pBuffer->blupiPosHelico = m_blupiPosHelico; + pBuffer->blupiPosMagic = m_blupiPosMagic; + pBuffer->blupiRestart = m_blupiRestart; + pBuffer->blupiFront = m_blupiFront; + pBuffer->blupiBullet = m_blupiBullet; + pBuffer->blupiCle = m_blupiCle; + pBuffer->blupiPerso = m_blupiPerso; + pBuffer->blupiDynamite = m_blupiDynamite; + pBuffer->blupiNoBarre = m_blupiNoBarre; + pBuffer->blupiTimeShield = m_blupiTimeShield; + pBuffer->blupiTimeFire = m_blupiTimeFire; + pBuffer->blupiTimeNoAsc = m_blupiTimeNoAsc; + pBuffer->blupiTimeOuf = m_blupiTimeOuf; + pBuffer->blupiActionOuf = m_blupiActionOuf; + pBuffer->blupiFifoNb = m_blupiFifoNb; + memcpy(pBuffer->blupiFifoPos, m_blupiFifoPos, sizeof(pBuffer->blupiFifoPos)); + memcpy(pBuffer->blupiStartPos, m_blupiStartPos, sizeof(pBuffer->blupiStartPos)); + pBuffer->blupiStartDir[0] = m_blupiStartDir[0]; + pBuffer->blupiStartDir[1] = m_blupiStartDir[1]; + pBuffer->blupiStartDir[2] = m_blupiStartDir[2]; + pBuffer->blupiStartDir[3] = m_blupiStartDir[3]; + pBuffer->jaugeHide[0] = m_jauges[0].GetHide(); + pBuffer->jaugeHide[1] = m_jauges[1].GetHide(); + pBuffer->jaugeType[0] = m_jauges[0].GetType(); + pBuffer->jaugeType[1] = m_jauges[1].GetType(); + pBuffer->jaugeLevel[0] = m_jauges[0].GetLevel(); + pBuffer->jaugeLevel[1] = m_jauges[1].GetLevel(); + pBuffer->blupiLevel = m_blupiLevel; + pBuffer->energyUnused = m_blupiEnergyUnused; + pBuffer->bHelicoMarch = m_bHelicoMarch; + pBuffer->bHelicoStop = m_bHelicoStop; + pBuffer->bJeepMarch = m_bJeepMarch; + pBuffer->bJeepStop = m_bJeepStop; + pBuffer->bFoundCle = m_bFoundCle; + pBuffer->bPrivate = m_bPrivate; + pBuffer->bCheatDoors = m_bCheatDoors; + pBuffer->bSuperBlupi = m_bSuperBlupi; + pBuffer->bDrawSecret = m_bDrawSecret; + pBuffer->bJoystick = m_bJoystick; + pBuffer->mission = m_mission; + memcpy(pBuffer->doors, m_doors, sizeof(pBuffer->doors)); + pBuffer->nbVies = m_nbVies; + pBuffer->nbTresor = m_nbTresor; + pBuffer->totalTresor = m_totalTresor; + pBuffer->goalPhase = m_goalPhase; + pBuffer->d8f8 = m_D8F8; + pBuffer->scrollPoint = m_scrollPoint; + pBuffer->scrollAdd = m_scrollAdd; + pBuffer->voyageIcon = m_voyageIcon; + pBuffer->voyageChannel = m_voyageChannel; + pBuffer->voyagePhase = m_voyagePhase; + pBuffer->voyageTotal = m_voyageTotal; + pBuffer->voyageStart = m_voyageStart; + pBuffer->voyageEnd = m_voyageEnd; + pBuffer->decorAction = m_decorAction; + pBuffer->decorPhase = m_decorPhase; - if (fwrite(pBuffer, sizeof(DescFile), 1, file) >= 1) + if (fwrite(pBuffer, sizeof(DescSave), 1, file) >= 1) { free(pBuffer); fclose(file); diff --git a/src/decmove.cpp b/src/decmove.cpp index 02e2e7a..bfc3b47 100644 --- a/src/decmove.cpp +++ b/src/decmove.cpp @@ -7,94 +7,7 @@ #include "dectables.h" -BOOL CDecor::TestPath(RECT rect, POINT start, POINT end) -{ - int num = abs(end.x - start.x); - int num2 = abs(end.y - start.y); - POINT tinyPoint = start; - if (num > num2) - { - RECT rect2; - if (end.x > start.x) - { - for (int i = 0; i <= num; i++) - { - int j = i * (end.y - start.y) / num; - rect2.left = rect.left + i; - rect2.right = rect.right + i; - rect2.top = rect.top + j; - rect2.bottom = rect.bottom + j; - if (DecorDetect(rect2)) - { - end = tinyPoint; - return FALSE; - } - tinyPoint.x = start.x + i; - tinyPoint.y = start.y + j; - } - } - if (end.x < start.x) - { - for (int i = 0; i >= -num; i--) - { - int j = i * (start.y - end.y) / num; - rect2.left = rect.left + i; - rect2.right = rect.right + i; - rect2.top = rect.top + j; - rect2.bottom = rect.bottom + j; - if (DecorDetect(rect2)) - { - end = tinyPoint; - return FALSE; - } - tinyPoint.x = start.x + i; - tinyPoint.y = start.y + j; - } - } - } - else - { - RECT rect2; - if (end.y > start.y) - { - for (int j = 0; j <= num2; j++) - { - int i = j * (end.x - start.x) / num2; - rect2.left = rect.left + i; - rect2.right = rect.right + i; - rect2.top = rect.top + j; - rect2.bottom = rect.bottom + j; - if (DecorDetect(rect2)) - { - end = tinyPoint; - return FALSE; - } - tinyPoint.x = start.x + i; - tinyPoint.y = start.y + j; - } - } - if (end.y < start.y) - { - for (int j = 0; j >= -num2; j--) - { - int i = j * (start.x - end.x) / num2; - rect2.left = rect.left + i; - rect2.right = rect.right + i; - rect2.top = rect.top + j; - rect2.bottom = rect.bottom + j; - if (DecorDetect(rect2)) - { - end = tinyPoint; - return FALSE; - } - tinyPoint.x = start.x + i; - tinyPoint.y = start.y + j; - } - } - } - return TRUE; -} void CDecor::MoveObjectPollution() @@ -490,7 +403,7 @@ void CDecor::MoveObjectStepLine(int i) tinyRect.top = m_moveObject[i].posCurrent.y; tinyRect.bottom = m_moveObject[i].posCurrent.y + 16; RECT tinyRect2; - flag = IntersectRect(tinyRect2, tinyRect, src); + flag = IntersectRect(&tinyRect2, &tinyRect, &src); tinyPoint = m_moveObject[i].posCurrent; } POINT posCurrent; @@ -517,7 +430,7 @@ void CDecor::MoveObjectStepLine(int i) tinyRect.right = posCurrent.x + 60 - 10; tinyRect.top = posCurrent.y + 10; tinyRect.bottom = posCurrent.y + 60 - 10; - if (TestPath(tinyRect, m_moveObject[i].posCurrent, posCurrent)) + if (TestPath(tinyRect, m_moveObject[i].posCurrent, &posCurrent)) { m_moveObject[i].posCurrent = posCurrent; m_moveObject[i].posStart = posCurrent; @@ -1550,7 +1463,7 @@ void CDecor::DynamiteStart(int i, int dx, int dy) src2.top = m_moveObject[i].posCurrent.y; src2.bottom = m_moveObject[i].posCurrent.y + 20; RECT tinyRect; - if (IntersectRect(tinyRect, src2, src)) + if (IntersectRect(&tinyRect, &src2, &src)) { if (m_moveObject[i].type == 12) { @@ -1614,7 +1527,7 @@ int CDecor::AscenseurDetect(RECT rect, POINT oldpos, POINT newpos) if (num < 30) { RECT tinyRect; - if (IntersectRect(tinyRect, src, rect)) + if (IntersectRect(&tinyRect, &src, &rect)) { return i; } @@ -1627,7 +1540,7 @@ int CDecor::AscenseurDetect(RECT rect, POINT oldpos, POINT newpos) for (int j = 0; j <= num / 30; j++) { RECT tinyRect; - if (IntersectRect(tinyRect, src, src2)) + if (IntersectRect(&tinyRect, &src, &src2)) { return i; } @@ -1769,7 +1682,7 @@ void CDecor::SearchLinkCaisse(int rank, BOOL bPop) src2.right = src2.left + 64 + 1; src2.bottom = src2.top + 64 + 1; RECT tinyRect; - if (IntersectRect(tinyRect, src2, src) && AddLinkCaisse(num2)) + if (IntersectRect(&tinyRect, &src2, &src) && AddLinkCaisse(num2)) { flag = TRUE; } @@ -1892,7 +1805,7 @@ int CDecor::MockeryDetect(POINT pos) src2.top = m_moveObject[i].posCurrent.y + 36; src2.bottom = m_moveObject[i].posCurrent.y + 60; RECT tinyRect; - if (IntersectRect(tinyRect, src2, src)) + if (IntersectRect(&tinyRect, &src2, &src)) { if (m_moveObject[i].type == 54) { @@ -1945,7 +1858,7 @@ BOOL CDecor::BlupiElectro(POINT pos) src2.top = m_blupiPos.y + 11 - 40; src2.bottom = m_blupiPos.y + 60 - 2 + 40; RECT tinyRect; - return IntersectRect(tinyRect, src, src2); + return IntersectRect(&tinyRect, &src, &src2); } void CDecor::MoveObjectFollow(POINT pos) @@ -1967,7 +1880,7 @@ void CDecor::MoveObjectFollow(POINT pos) src2.top = m_moveObject[i].posCurrent.y - 100; src2.bottom = m_moveObject[i].posCurrent.y + 60 + 100; RECT tinyRect; - if (IntersectRect(tinyRect, src2, src)) + if (IntersectRect(&tinyRect, &src2, &src)) { m_moveObject[i].type = 97; PlaySound(92, m_moveObject[i].posCurrent); @@ -2028,7 +1941,7 @@ int CDecor::MoveAscenseurDetect(POINT pos, int height) src2.top = m_moveObject[i].posCurrent.y; src2.bottom = m_moveObject[i].posCurrent.y + 16; RECT tinyRect; - if (IntersectRect(tinyRect, src2, src)) + if (IntersectRect(&tinyRect, &src2, &src)) { return i; } @@ -2054,7 +1967,7 @@ int CDecor::MoveChargeDetect(POINT pos) src2.top = m_moveObject[i].posCurrent.y + 36; src2.bottom = m_moveObject[i].posCurrent.y + 60; RECT tinyRect; - if (IntersectRect(tinyRect, src2, src)) + if (IntersectRect(&tinyRect, &src2, &src)) { return i; } @@ -2080,7 +1993,7 @@ int CDecor::MovePersoDetect(POINT pos) src2.top = m_moveObject[i].posCurrent.y + 36; src2.bottom = m_moveObject[i].posCurrent.y + 60; RECT tinyRect; - if (IntersectRect(tinyRect, src2, src)) + if (IntersectRect(&tinyRect, &src2, &src)) { return i; } diff --git a/src/decor.cpp b/src/decor.cpp index 6f5a14c..24ad50b 100644 --- a/src/decor.cpp +++ b/src/decor.cpp @@ -1,13 +1,13 @@ // Decor.cpp // -#include -#include -#include -#include +//#include +//#include +//#include +//#include #include #include "def.h" -#include "resource.h" +//#include "resource.h" #include "pixmap.h" #include "sound.h" #include "decor.h" @@ -16,9 +16,7 @@ #include "event.h" #include "dectables.h" #include "jauge.h" -#include "network.h" - - +//#include "network.h" /////////////////////////////////////////////////////////////////////////////// diff --git a/src/decor.h b/src/decor.h index 049d52b..e1232ce 100644 --- a/src/decor.h +++ b/src/decor.h @@ -2,9 +2,9 @@ #pragma once #include "DEF.H" -#include "JAUGE.H" -#include "SOUND.H" -#include "PIXMAP.H" +#include "jauge.h" +#include "sound.h" +#include "pixmap.h" #include "network.h" ///////////////////////////////////////////////////////////////////////////// @@ -82,6 +82,124 @@ typedef struct } DescFile; +typedef struct +{ + int lg; + int majRev; + int minRev; + int reserve1[50]; + short decor[100][100]; + short bigDecor[100][100]; + char balleTraj[100][13]; + char moveTraj[100][13]; + MoveObject moveObject[200]; + int reserve2[50]; + POINT posDecor; + POINT dimDecor; + int phase; + int term; + int music; + int region; + int time; + char missionTitle[100]; + int reserve3[50]; + int nbRankCaisse; + int rankCaisse[200]; + int nbLinkCaisse; + int linkCaisse[200]; + int reserve4[50]; + POINT blupiPos; + POINT blupiValidPos; + int blupiAction; + int blupiDir; + int blupiPhase; + POINT blupiVitesse; + int blupiIcon; + int blupiSec; + int blupiChannel; + POINT blupiVector; + int blupiTransport; + BOOL blupiFocus; + BOOL blupiAir; + BOOL blupiHelico; + BOOL blupiJeep; + BOOL blupiTank; + BOOL blupiSkate; + BOOL blupiNage; + BOOL blupiSurf; + BOOL blupiVent; + BOOL blupiSuspend; + BOOL blupiJumpAie; + BOOL blupiShield; + BOOL blupiPower; + BOOL blupiCloud; + BOOL blupiHide; + POINT blupiPosHelico; + POINT blupiPosMagic; + BOOL blupiRestart; + BOOL blupiFront; + int blupiBullet; + int blupiCle; + int blupiPerso; + int blupiNoBarre; + int blupiTimeShield; + int blupiTimeFire; + int blupiTimeOuf; + int blupiActionOuf; + int blupiFifoNb; + POINT blupiFifoPos[10]; + BOOL blupiInvert; + BOOL blupiBalloon; + BOOL blupiOver; + BOOL blupiEcrase; + int blupiTimeNoAsc; + int blupiDynamite; + int reserve5[41]; + POINT blupiStartPos[4]; + int blupiStartDir[4]; + int reserve6[50]; + BOOL jaugeHide[2]; + BOOL jaugeType[2]; + BOOL jaugeLevel[2]; + int blupiLevel; + int energyUnused; + int reserve7[50]; + BOOL bHelicoMarch; + BOOL bHelicoStop; + BOOL bJeepMarch; + BOOL bJeepStop; + int reserve8[50]; + BOOL bFoundCle; + BOOL bPrivate; + BOOL bCheatDoors; + BOOL bSuperBlupi; + BOOL bDrawSecret; + BOOL bJoystick; + int idklol; + int mission; + char doors[200]; + int nbVies; + int nbTresor; + int totalTresor; + int goalPhase; + int reserve9[50]; + int d8f8; + POINT scrollPoint; + POINT scrollAdd; + int reserve10[50]; + int voyageIcon; + int voyageChannel; + int voyagePhase; + int voyageTotal; + POINT voyageStart; + POINT voyageEnd; + int reserve11[50]; + int decorAction; + int decorPhase; + int reserve12[50]; +} +DescSave; + class CDecor { public: @@ -298,6 +416,8 @@ public: void OpenGoldsWin(); void DoorsLost(); + BOOL DeleteMission(int user, int mission, BOOL bUser); + inline BOOL IsValidCel(POINT cel); inline void MoveObjectCopy(MoveObject src, MoveObject dest); inline void StopVehicleSound(); diff --git a/src/def.h b/src/def.h index 10eb3d7..1110509 100644 --- a/src/def.h +++ b/src/def.h @@ -3,7 +3,8 @@ #pragma once -#include +#include +#include // prevent WinAPI from overriding our functions #undef PlaySound diff --git a/src/event.cpp b/src/event.cpp index 2aef1a4..70db0d0 100644 --- a/src/event.cpp +++ b/src/event.cpp @@ -1,41 +1,31 @@ // Event.cpp // -#pragma once - -using namespace std; - #include #include #include -#include +//#include #include #include -#include #include "def.h" #include "resource.h" -#include "pixmap.h" -#include "sound.h" +//#include "pixmap.h" +//#include "sound.h" #include "decor.h" #include "movie.h" -#include "button.h" -#include "menu.h" -#include "jauge.h" +//#include "button.h" +//#include "menu.h" +//#include "jauge.h" #include "event.h" #include "text.h" #include "misc.h" #include "network.h" -#pragma warning (disable : 4996) -#pragma warning (disable : 4700) - #define DEF_TIME_HELP 10000 #define DEF_TIME_DEMO 1000 #define MAXDEMO 2000 #define MAXINDEX 20 - - typedef struct { short majRev; @@ -2500,7 +2490,7 @@ BOOL CEvent::DrawButtons() if (m_phase == WM_PHASE_INIT) { - DrawText(m_pPixmap, { 414, 446 }, (char*)"Version 2.2", FONTLITTLE); + DrawText(m_pPixmap, { 414, 446 }, "Version 2.2", FONTLITTLE); } for (int i = 0; table[m_index].buttons[i].message != 0; i++) @@ -2782,8 +2772,8 @@ BOOL CEvent::DrawButtons() SetEnable(WM_BUTTON6, 0); SetEnable(WM_BUTTON14, 0); } - SetState(WM_BUTTON5, (m_pPixmap->GetTrueColor() == FALSE)); - SetState(WM_BUTTON6, (m_pPixmap->GetTrueColor() != FALSE)); + SetState(WM_BUTTON5, (m_pPixmap->GetTrueColorBack() == FALSE)); + SetState(WM_BUTTON6, (m_pPixmap->GetTrueColorBack() != FALSE)); SetState(WM_BUTTON13, (m_jauges->GetHide() == FALSE)); SetState(WM_BUTTON14, (m_jauges->GetHide() != FALSE)); for (int j = 0; j < 6; j++) @@ -3217,12 +3207,12 @@ BOOL CEvent::TreatEventBase(UINT message, WPARAM wParam, LPARAM lParam) { if (m_phase == WM_PHASE_SERVICE) { - ChangePhase(WM_PHASE_DPLAY_DO_SERVICE); + ChangePhase(WM_PHASE_DP_DOSERVICE); return TRUE; } if (m_phase == WM_PHASE_CREATE) { - ChangePhase(WM_PHASE_DPLAY_CREATE); + ChangePhase(WM_PHASE_DP_DOCREATE); return TRUE; } if (m_phase == WM_PHASE_MULTI) @@ -3443,8 +3433,8 @@ BOOL CEvent::TreatEventBase(UINT message, WPARAM wParam, LPARAM lParam) m_multi -= i; if (m_multi < 1) m_multi = 1; - m_b6D34 = m_pDecor->Read(m_gamer, m_multi + 200, FALSE); - if (m_b6D34) DrawMap(); + m_bDrawMap = m_pDecor->Read(m_gamer, m_multi + 200, FALSE); + if (m_bDrawMap) DrawMap(); NetSendLobby(); NetAdjustLobbyButtons(); @@ -3473,8 +3463,8 @@ BOOL CEvent::TreatEventBase(UINT message, WPARAM wParam, LPARAM lParam) m_multi += i; if (m_multi > 12) m_multi = 12; - m_b6D34 = m_pDecor->Read(m_gamer, m_multi + 200, FALSE); - if (m_b6D34) DrawMap(); + m_bDrawMap = m_pDecor->Read(m_gamer, m_multi + 200, FALSE); + if (m_bDrawMap) DrawMap(); NetSendLobby(); NetAdjustLobbyButtons(); @@ -3496,10 +3486,6 @@ BOOL CEvent::TreatEventBase(UINT message, WPARAM wParam, LPARAM lParam) return ChangePhase(WM_PHASE_INFO); } break; - case WM_MOVIE: - StartMovie("movie\\essai.avi"); - ChangePhase(WM_PHASE_INIT); - return FALSE; case WM_DECOR1: SetState(WM_DECOR1, 1); SetState(WM_DECOR2, 0); @@ -4122,7 +4108,7 @@ BOOL CEvent::ChangePhase(UINT phase) { m_bShowMouse = FALSE; } - if (phase == WM_PHASE_1544) + if (phase == WM_PHASE_QUITPLAYTEST) { m_pDecor->Read(m_gamer, 999, TRUE); phase = WM_PHASE_BUILD; @@ -4166,7 +4152,7 @@ BOOL CEvent::ChangePhase(UINT phase) DemoRecStop(); } - if (phase == WM_PHASE_DOQUIT) + if (phase == WM_PHASE_QUITPLAY) { if (!m_bPrivate) { @@ -4443,7 +4429,7 @@ BOOL CEvent::ChangePhase(UINT phase) m_bNamesExist[i] = TRUE; strcpy(m_gamerNameList[i], m_gamerName); - m_pDecor->InitalizeDoors(door); + m_pDecor->InitializeDoors(door); int num = 0; for (j = 0; j < 200; j++) { @@ -5527,15 +5513,15 @@ void CEvent::ChangeButtons(int message) m_pSound->SuspendMusic(); } } - if (message == WM_BUTTON5 && m_pPixmap->GetTrueColor()) + if (message == WM_BUTTON5 && m_pPixmap->GetTrueColorBack()) { - m_pPixmap->SetTrueColor(0); + m_pPixmap->SetTrueColorBack(0); SetState(WM_BUTTON5, 1); SetState(WM_BUTTON6, 0); } - if (message == WM_BUTTON6 && !m_pPixmap->GetTrueColor()) + if (message == WM_BUTTON6 && !m_pPixmap->GetTrueColorBack()) { - m_pPixmap->SetTrueColor(1); + m_pPixmap->SetTrueColorBack(1); SetState(WM_BUTTON5, 0); SetState(WM_BUTTON6, 1); } @@ -5658,4 +5644,14 @@ die: // original code relies on undefined behavior specific to older msvc : // if (srcFile->_flag & _IOERR) // while (!(destFile->_flag & _IOERR)) +} + +void CEvent::DrawMap() +{ + // TODO +} + +void CEvent::NetAdjustLobbyButtons() +{ + // TODO } \ No newline at end of file diff --git a/src/event.h b/src/event.h index 9dce7f5..011af94 100644 --- a/src/event.h +++ b/src/event.h @@ -1,7 +1,5 @@ // Event.h - - ///////////////////////////////////////////////////////////////////////////// #pragma once @@ -9,7 +7,7 @@ #include "movie.h" #include "menu.h" #include "button.h" - +#include "text.h" typedef struct { diff --git a/src/jauge.cpp b/src/jauge.cpp index 9b0c305..3a172cd 100644 --- a/src/jauge.cpp +++ b/src/jauge.cpp @@ -1,15 +1,12 @@ // Jauge.cpp // -using namespace std; -#pragma once - #include -#include -#include +//#include +//#include #include // #include -#include +//#include #include "def.h" #include "pixmap.h" #include "sound.h" diff --git a/src/jauge.h b/src/jauge.h index 38fe673..fb44f53 100644 --- a/src/jauge.h +++ b/src/jauge.h @@ -3,7 +3,7 @@ #pragma once ////////////////////////////////////////////////////////////////////////// -// #include + #include "pixmap.h" #include "sound.h" diff --git a/src/menu.h b/src/menu.h index fc9c7d7..76b58a3 100644 --- a/src/menu.h +++ b/src/menu.h @@ -2,7 +2,6 @@ #pragma once -// #include #include "decor.h" #include "pixmap.h" diff --git a/src/misc.cpp b/src/misc.cpp index a92a01d..a7444b9 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -29,13 +29,13 @@ void InitHInstance(HINSTANCE hInstance) void OutputDebug(const char *pMessage) { #ifdef _DEBUG - OutputDebugStringA(pMessage); + OutputDebugString(pMessage); #endif } void LoadString(UINT nID, char *pBuffer, int lgBuffer) { - LoadStringA(g_hInstance, nID, pBuffer, lgBuffer); + LoadString(g_hInstance, nID, pBuffer, lgBuffer); } void ChangeSprite(int sprite) diff --git a/src/misc.h b/src/misc.h index 42b875b..978a4c2 100644 --- a/src/misc.h +++ b/src/misc.h @@ -1,12 +1,13 @@ // misc.h // -#pragma once -// #include +#include + +#pragma once extern void InitHInstance(HINSTANCE hInstance); extern void OutputDebug(const char *pMessage); -extern void LoadString(UINT nID, char *pBuffer, int lgBuffer); +extern void LoadString(unsigned nID, char *pBuffer, int lgBuffer); extern void ChangeSprite(int sprite); extern POINT ConvLongToPos(LPARAM lParam); diff --git a/src/movie.cpp b/src/movie.cpp index bf46536..1196e8f 100644 --- a/src/movie.cpp +++ b/src/movie.cpp @@ -1,10 +1,6 @@ // movie.cpp // -using namespace std; - -#pragma once - #include #include #include @@ -19,8 +15,6 @@ using namespace std; #include "movie.h" #include "misc.h" -#pragma warning (disable : 4996) - //---------------------------------------------------------------------------- #define AVI_VIDEO "avivideo" diff --git a/src/movie.h b/src/movie.h index 3dbbf4f..2cdda7d 100644 --- a/src/movie.h +++ b/src/movie.h @@ -3,8 +3,6 @@ #pragma once -// #include - class CMovie { public: diff --git a/src/pixmap.cpp b/src/pixmap.cpp index 177e4be..caadbe1 100644 --- a/src/pixmap.cpp +++ b/src/pixmap.cpp @@ -15,7 +15,6 @@ #define DIRECTDRAW_VERSION 0x0500 - ///////////////////////////////////////////////////////////////////////////// @@ -431,17 +430,22 @@ BOOL CPixmap::InitSysPalette() return TRUE; } -BOOL CPixmap::GetTrueColor() +BOOL CPixmap::GetTrueColorBack() { return m_bTrueColorBack; } +BOOL CPixmap::GetTrueColorDecor() +{ + return m_bTrueColorDecor; +} + void CPixmap::SetBenchmarkSuccess(BOOL bSuccess) { m_bBenchmarkSuccess = bSuccess; } -void CPixmap::SetTrueColor(BOOL bTrueColor) +void CPixmap::SetTrueColorBack(BOOL bTrueColor) { m_bTrueColorBack = bTrueColor; } @@ -801,7 +805,7 @@ BOOL CPixmap::Cache(int channel, char *pFilename, POINT totalDim, POINT iconDim, // Cache une image globale. -BOOL CPixmap::Cache2(int channel, LPCSTR pFilename, POINT totalDim, POINT iconDim, BOOL bUsePalette) +BOOL CPixmap::Cache(int channel, char* pFilename, POINT totalDim, POINT iconDim, BOOL bUsePalette) { HRESULT hErr; @@ -902,14 +906,14 @@ BOOL CPixmap::BackgroundCache(int channel, const char* pFilename, POINT totalDim { strcpy(file, "image16\\"); strcat(file, pFilename); - if (Cache2(channel, file, totalDim, iconDim, FALSE)) + if (Cache(channel, file, totalDim, iconDim, FALSE)) { return TRUE; } } strcpy(file, "image08\\"); strcat(file, pFilename); - return Cache2(channel, file, totalDim, iconDim, bUsePalette); + return Cache(channel, file, totalDim, iconDim, bUsePalette); } BOOL CPixmap::CacheAll(BOOL cache, HWND hWnd, BOOL bFullScreen, BOOL bTrueColor, BOOL bTrueColorDecor, int mouseType, const char* pFilename, int region) diff --git a/src/pixmap.h b/src/pixmap.h index 0911091..f36c438 100644 --- a/src/pixmap.h +++ b/src/pixmap.h @@ -63,9 +63,9 @@ public: void MouseBackClear(); void MouseBackDraw(); void SetBenchmarkSuccess(BOOL bSuccess); - void SetTrueColor(BOOL bTrueColor); + void SetTrueColorBack(BOOL bTrueColor); void SetTrueColorDecor(BOOL bTrueColorDecor); - BOOL GetTrueColor(); + BOOL GetTrueColorBack(); BOOL GetTrueColorDecor(); protected: diff --git a/src/resource.h b/src/resource.h index fbb324d..f64b6ef 100644 --- a/src/resource.h +++ b/src/resource.h @@ -2,6 +2,8 @@ // Microsoft Visual C++ generated include file. // Used by Eggbert 2.rc // +#pragma once + #define TX_ACTION_GO 1 #define TX_ACTION_STOP 2 #define TX_ACTION_MANGE 3 @@ -37,7 +39,6 @@ #define TX_ACTION_REPEAT 33 #define TX_ACTION_QARMURE 34 #define TX_ACTION_FABARMURE 35 -<<<<<<<< HEAD:src/resource.h #define TX_IONAMEEX 100 #define TX_IOFREE 101 #define TX_OWNMISSION 102 @@ -116,8 +117,6 @@ #define TX_SAVE_CGAME 270 #define TX_GAMESAVED 288 #define TX_NOTINDEMO 289 - -======== #define TX_IONAMEEX 100 #define TX_IOFREE 101 #define TX_OWNMISSION 102 @@ -247,7 +246,6 @@ #define TX_MISSIONFREE 272 #define TX_GAMESAVED 288 #define TX_NOTINDEMO 289 ->>>>>>>> upstream/Overhaul:resource.h #define TX_REPEAT_CULTIVE 500 #define TX_REPEAT_FLEUR 501 #define TX_REPEAT_FLEURQ 502 diff --git a/src/resource1.h b/src/resource1.h index eaa8950..514be47 100644 --- a/src/resource1.h +++ b/src/resource1.h @@ -2,6 +2,7 @@ // Microsoft Visual C++ generated include file. // Used by Eggbert2.rc // +#pragma once #define IDS_STRING101 101 #define IDS_STRING102 102 #define IDC_CURSOR1 102 diff --git a/src/sound.h b/src/sound.h index 2652be4..b057918 100644 --- a/src/sound.h +++ b/src/sound.h @@ -1,12 +1,10 @@ // sound.h // -using namespace std; - #pragma once -#include -// +//#include + #include "dsound.h" #include diff --git a/src/text.cpp b/src/text.cpp index 9e08aa2..0824195 100644 --- a/src/text.cpp +++ b/src/text.cpp @@ -1,19 +1,16 @@ // Text.cpp -#include -#include -#include +//#include +//#include +//#include #include #include "def.h" #include "pixmap.h" #include "text.h" #include "texttables.h" -#pragma warning (disable: 4996) - ///////////////////////////////////////////////////////////////////////////// - // Retourne l'offset pour un caract�re donn�. int GetOffset(char c)