diff options
author | Eugene Sandulenko | 2014-01-14 13:14:33 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2014-01-14 13:14:33 +0200 |
commit | f8d835d0af013370b80c0944f43d2f15f4d928a0 (patch) | |
tree | 28ad5d5624e20369ef2bba7c1f7c6cd9b254419a /engines | |
parent | 0c0ed9fdd814e6dbf8dd0851b42e7ca1c12f6ae5 (diff) | |
download | scummvm-rg350-f8d835d0af013370b80c0944f43d2f15f4d928a0.tar.gz scummvm-rg350-f8d835d0af013370b80c0944f43d2f15f4d928a0.tar.bz2 scummvm-rg350-f8d835d0af013370b80c0944f43d2f15f4d928a0.zip |
FULLPIPE: Implement FullpipeEngine::updateMap()
Diffstat (limited to 'engines')
-rw-r--r-- | engines/fullpipe/constants.h | 76 | ||||
-rw-r--r-- | engines/fullpipe/fullpipe.cpp | 15 | ||||
-rw-r--r-- | engines/fullpipe/scenes.cpp | 329 | ||||
-rw-r--r-- | engines/fullpipe/stateloader.cpp | 4 |
4 files changed, 405 insertions, 19 deletions
diff --git a/engines/fullpipe/constants.h b/engines/fullpipe/constants.h index bfae414099..00ae4258cd 100644 --- a/engines/fullpipe/constants.h +++ b/engines/fullpipe/constants.h @@ -86,8 +86,78 @@ namespace Fullpipe { #define PIC_IN1_GAMETITLE 5169 #define PIC_IN1_PIPETITLE 5167 #define PIC_INV_MENU 991 +#define PIC_MAP_A01 5263 +#define PIC_MAP_A02 5264 +#define PIC_MAP_A03 5265 +#define PIC_MAP_A04 5266 +#define PIC_MAP_A05 5267 +#define PIC_MAP_A06 5268 +#define PIC_MAP_A07 5269 +#define PIC_MAP_A08 5270 +#define PIC_MAP_A09 5271 +#define PIC_MAP_A10 5272 +#define PIC_MAP_A11 5273 +#define PIC_MAP_A12 5274 #define PIC_MAP_A13 5275 +#define PIC_MAP_A14 5276 +#define PIC_MAP_P01 5277 +#define PIC_MAP_P02 5278 +#define PIC_MAP_P03 5279 +#define PIC_MAP_P04 5280 +#define PIC_MAP_P05 5281 +#define PIC_MAP_P06 5282 +#define PIC_MAP_P07 5283 +#define PIC_MAP_P08 5284 +#define PIC_MAP_P09 5285 +#define PIC_MAP_P10 5286 +#define PIC_MAP_P11 5287 +#define PIC_MAP_P12 5288 +#define PIC_MAP_P13 5289 +#define PIC_MAP_P14 5290 +#define PIC_MAP_P15 5291 +#define PIC_MAP_P16 5292 +#define PIC_MAP_P17 5293 +#define PIC_MAP_P18 5294 #define PIC_MAP_S01 5223 +#define PIC_MAP_S02 5224 +#define PIC_MAP_S03 5225 +#define PIC_MAP_S04 5226 +#define PIC_MAP_S05 5227 +#define PIC_MAP_S06 5228 +#define PIC_MAP_S07 5229 +#define PIC_MAP_S08 5231 +#define PIC_MAP_S09 5230 +#define PIC_MAP_S10 5232 +#define PIC_MAP_S11 5233 +#define PIC_MAP_S12 5234 +#define PIC_MAP_S13 5235 +#define PIC_MAP_S14 5236 +#define PIC_MAP_S15 5237 +#define PIC_MAP_S16 5238 +#define PIC_MAP_S17 5239 +#define PIC_MAP_S1819 5240 +#define PIC_MAP_S20 5241 +#define PIC_MAP_S21 5242 +#define PIC_MAP_S22 5243 +#define PIC_MAP_S23_1 5244 +#define PIC_MAP_S23_2 5245 +#define PIC_MAP_S24 5246 +#define PIC_MAP_S25 5247 +#define PIC_MAP_S26 5248 +#define PIC_MAP_S27 5249 +#define PIC_MAP_S28 5250 +#define PIC_MAP_S29 5251 +#define PIC_MAP_S30 5252 +#define PIC_MAP_S31_1 5253 +#define PIC_MAP_S31_2 5254 +#define PIC_MAP_S32_1 5255 +#define PIC_MAP_S32_2 5256 +#define PIC_MAP_S33 5257 +#define PIC_MAP_S34 5258 +#define PIC_MAP_S35 5259 +#define PIC_MAP_S36 5260 +#define PIC_MAP_S37 5261 +#define PIC_MAP_S38 5262 #define QU_INTR_STARTINTRO 5133 #define SC_1 301 #define SC_2 302 @@ -745,6 +815,12 @@ namespace Fullpipe { #define ST_MUG17_EMPTY 2739 #define ST_SMG_SIT 1399 +// Scene 18 +#define PIC_SC18_RTRUBA 1520 + +// Scene 19 +#define PIC_SC19_RTRUBA3 1515 + // Scene 20 #define ANI_GRANDMA_20 2427 #define MSG_SC20_UPDATELOCKABLE 5217 diff --git a/engines/fullpipe/fullpipe.cpp b/engines/fullpipe/fullpipe.cpp index 4cfa330a09..1c319d3660 100644 --- a/engines/fullpipe/fullpipe.cpp +++ b/engines/fullpipe/fullpipe.cpp @@ -451,21 +451,6 @@ void FullpipeEngine::setObjectState(const char *name, int state) { var->setSubVarAsInt(name, state); } -void FullpipeEngine::updateMapPiece(int mapId, int update) { - for (int i = 0; i < 200; i++) { - int hiWord = (_mapTable[i] >> 16) & 0xffff; - - if (hiWord == mapId) { - _mapTable[i] |= update; - return; - } - if (!hiWord) { - _mapTable[i] = (mapId << 16) | update; - return; - } - } -} - void FullpipeEngine::disableSaves(ExCommand *ex) { warning("STUB: FullpipeEngine::disableSaves()"); } diff --git a/engines/fullpipe/scenes.cpp b/engines/fullpipe/scenes.cpp index 32c26cca6d..0136ea9487 100644 --- a/engines/fullpipe/scenes.cpp +++ b/engines/fullpipe/scenes.cpp @@ -993,6 +993,335 @@ void FullpipeEngine::processArcade(ExCommand *ex) { warning("STUB: FullpipeEngine::processArcade()"); } +void FullpipeEngine::updateMapPiece(int mapId, int update) { + for (int i = 0; i < 200; i++) { + int hiWord = (_mapTable[i] >> 16) & 0xffff; + + if (hiWord == mapId) { + _mapTable[i] |= update; + return; + } + if (!hiWord) { + _mapTable[i] = (mapId << 16) | update; + return; + } + } +} + +void FullpipeEngine::updateMap(PreloadItem *pre) { + switch (pre->sceneId) { + case SC_29: + updateMapPiece(PIC_MAP_S29, 1); + + if (pre->keyCode == TrubaUp) + updateMapPiece(PIC_MAP_A05, 1); + + break; + + case SC_30: + updateMapPiece(PIC_MAP_S30, 1); + + if (pre->keyCode == TrubaLeft) + updateMapPiece(PIC_MAP_P09, 1); + + if (pre->keyCode == TrubaRight) + updateMapPiece(PIC_MAP_A04, 1); + + break; + + case SC_31: + updateMapPiece(PIC_MAP_S31_2, 1); + + if (getObjectState("Кактус") == getObjectEnumState("Кактус", "Вырос")) + updateMapPiece(PIC_MAP_S31_1, 1); + + if (pre->keyCode == TrubaRight) + updateMapPiece(PIC_MAP_P09, 1); + + break; + + case SC_32: + updateMapPiece(PIC_MAP_S32_2, 1); + + if (getObjectState("Кактус") == getObjectEnumState("Кактус", "Вырос")) + updateMapPiece(PIC_MAP_S32_1, 1); + + break; + + case SC_33: + updateMapPiece(PIC_MAP_S33, 1); + break; + + case SC_34: + updateMapPiece(PIC_MAP_S34, 1); + + if (pre->keyCode == TrubaUp) + updateMapPiece(PIC_MAP_A03, 1); + + break; + + case SC_35: + updateMapPiece(PIC_MAP_S35, 1); + + if (pre->keyCode == TrubaLeft) + updateMapPiece(PIC_MAP_A02, 1); + + if (pre->keyCode == TrubaDown) + updateMapPiece(PIC_MAP_A03, 1); + + break; + + case SC_36: + updateMapPiece(PIC_MAP_S36, 1); + break; + + case SC_37: + updateMapPiece(PIC_MAP_S37, 1); + updateMapPiece(PIC_MAP_A01, 1); + break; + + case SC_38: + updateMapPiece(PIC_MAP_S38, 1); + + switch (pre->preloadId1) { + case SC_15: + updateMapPiece(PIC_MAP_P16, 1); + break; + + case SC_1: + updateMapPiece(PIC_MAP_P10, 1); + break; + + case SC_10: + updateMapPiece(PIC_MAP_P17, 1); + break; + + case SC_19: + updateMapPiece(PIC_MAP_P12, 1); + break; + } + break; + + case SC_28: + updateMapPiece(PIC_MAP_S28, 1); + + if (pre->keyCode == TrubaRight) + updateMapPiece(PIC_MAP_A06, 1); + + break; + + case SC_22: + updateMapPiece(PIC_MAP_S22, 1); + break; + + case SC_23: + if (getObjectState("Верхний люк_23") == getObjectEnumState("Верхний люк_23", "Открыт")) { + updateMapPiece(PIC_MAP_S23_1, 0); + updateMapPiece(PIC_MAP_S23_2, 1); + updateMapPiece(PIC_MAP_P07, 1); + } else { + updateMapPiece(PIC_MAP_S23_1, 1); + updateMapPiece(PIC_MAP_S23_2, 0); + } + break; + + case SC_24: + updateMapPiece(PIC_MAP_S24, 1); + + if (pre->keyCode == TrubaUp) + updateMapPiece(PIC_MAP_A08, 1); + + if (pre->keyCode == TrubaDown) { + updateMapPiece(PIC_MAP_P13, 1); + updateMapPiece(PIC_MAP_A07, 1); + } + break; + + case SC_25: + updateMapPiece(PIC_MAP_S25, 1); + break; + + case SC_26: + updateMapPiece(PIC_MAP_S26, 1); + + if (pre->keyCode == TrubaLeft) + updateMapPiece(PIC_MAP_A06, 1); + + if (pre->keyCode == TrubaUp) { + updateMapPiece(PIC_MAP_P13, 1); + updateMapPiece(PIC_MAP_A07, 1); + } + + break; + + case SC_27: + updateMapPiece(PIC_MAP_S27, 1); + break; + + case SC_21: + updateMapPiece(PIC_MAP_S21, 1); + + if (pre->keyCode == TrubaLeft) { + updateMapPiece(PIC_MAP_P15, 1); + updateMapPiece(PIC_MAP_A09, 1); + } + + if (pre->keyCode == TrubaDown) + updateMapPiece(PIC_MAP_A08, 1); + + break; + + case SC_14: + updateMapPiece(PIC_MAP_S14, 1); + break; + + case SC_15: + updateMapPiece(PIC_MAP_S15, 1); + + if (pre->keyCode == TrubaUp) { + updateMapPiece(PIC_MAP_P08, 1); + updateMapPiece(PIC_MAP_A14, 1); + } + + break; + + case SC_16: + updateMapPiece(PIC_MAP_S16, 1); + break; + + case SC_17: + updateMapPiece(PIC_MAP_S17, 1); + break; + + case SC_18: + updateMapPiece(PIC_MAP_S1819, 1); + + if (pre->keyCode == PIC_SC18_RTRUBA) + updateMapPiece(PIC_MAP_P14, 1); + + break; + + case SC_19: + updateMapPiece(PIC_MAP_S1819, 1); + + if (pre->keyCode == PIC_SC19_RTRUBA3) { + updateMapPiece(PIC_MAP_P15, 1); + updateMapPiece(PIC_MAP_A09, 1); + } + + break; + + case SC_20: + updateMapPiece(PIC_MAP_S20, 1); + break; + + case SC_13: + updateMapPiece(PIC_MAP_S13, 1); + + if (pre->keyCode == TrubaUp) { + updateMapPiece(PIC_MAP_P06, 1); + updateMapPiece(PIC_MAP_A10, 1); + } + break; + + case SC_7: + updateMapPiece(PIC_MAP_S07, 1); + + if (pre->keyCode == TrubaLeft) + updateMapPiece(PIC_MAP_P18, 1); + + break; + + case SC_8: + updateMapPiece(PIC_MAP_S08, 1); + + if (pre->keyCode == TrubaUp) + updateMapPiece(PIC_MAP_P11, 1); + + if (pre->keyCode == TrubaRight) + updateMapPiece(PIC_MAP_P18, 1); + + return; + + case SC_9: + updateMapPiece(PIC_MAP_S09, 1); + + if (pre->keyCode == TrubaDown) + updateMapPiece(PIC_MAP_P11, 1); + + return; + + case SC_10: + updateMapPiece(PIC_MAP_S10, 1); + + if (pre->keyCode == TrubaRight) + updateMapPiece(PIC_MAP_P02, 1); + + break; + + case SC_11: + updateMapPiece(PIC_MAP_S11, 1); + + if (pre->keyCode == TrubaLeft) + updateMapPiece(PIC_MAP_P02, 1); + + break; + + case SC_12: + updateMapPiece(PIC_MAP_S12, 1); + break; + + case SC_6: + updateMapPiece(PIC_MAP_S06, 1); + + if (pre->keyCode == TrubaUp) + updateMapPiece(PIC_MAP_A12, 1); + + break; + + case SC_1: + updateMapPiece(PIC_MAP_S01, 1); + + if (pre->keyCode == TrubaUp) + updateMapPiece(PIC_MAP_P01, 1); + + if (pre->keyCode == TrubaLeft) + updateMapPiece(PIC_MAP_A13, 1); + break; + + case SC_2: + updateMapPiece(PIC_MAP_S02, 1); + + if (pre->keyCode == TrubaLeft) + updateMapPiece(PIC_MAP_P01, 1); + + break; + + case SC_3: + updateMapPiece(PIC_MAP_S03, 1); + break; + + case SC_4: + updateMapPiece(PIC_MAP_S04, 1); + + if (pre->keyCode == TrubaRight) + updateMapPiece(PIC_MAP_P04, 1); + + break; + + case SC_5: + updateMapPiece(PIC_MAP_S05, 1); + + if (pre->keyCode == TrubaLeft) { + updateMapPiece(PIC_MAP_P04, 1); + } + + if (pre->keyCode == TrubaUp) { + updateMapPiece(PIC_MAP_P05, 1); + updateMapPiece(PIC_MAP_A11, 1); + } + } +} } // End of namespace Fullpipe diff --git a/engines/fullpipe/stateloader.cpp b/engines/fullpipe/stateloader.cpp index fdf38ada1f..ccf77ff81a 100644 --- a/engines/fullpipe/stateloader.cpp +++ b/engines/fullpipe/stateloader.cpp @@ -328,8 +328,4 @@ bool PicAniInfo::load(MfcArchive &file) { return true; } -void FullpipeEngine::updateMap(PreloadItem *pre) { - warning("STUB: FullpipeEngine::updateMap()"); -} - } // End of namespace Fullpipe |