[Scummvm-cvs-logs] SF.net SVN: scummvm:[39393] scummvm/trunk/engines/kyra
athrxx at users.sourceforge.net
athrxx at users.sourceforge.net
Sat Mar 14 16:06:02 CET 2009
Revision: 39393
http://scummvm.svn.sourceforge.net/scummvm/?rev=39393&view=rev
Author: athrxx
Date: 2009-03-14 15:06:02 +0000 (Sat, 14 Mar 2009)
Log Message:
-----------
LOL: magic atlas can now be picked up (but it can't be used)
Modified Paths:
--------------
scummvm/trunk/engines/kyra/gui_lol.cpp
scummvm/trunk/engines/kyra/lol.h
scummvm/trunk/engines/kyra/scene_lol.cpp
scummvm/trunk/engines/kyra/script_lol.cpp
scummvm/trunk/engines/kyra/script_tim.cpp
scummvm/trunk/engines/kyra/script_tim.h
scummvm/trunk/engines/kyra/sprites_lol.cpp
Modified: scummvm/trunk/engines/kyra/gui_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui_lol.cpp 2009-03-14 14:58:19 UTC (rev 39392)
+++ scummvm/trunk/engines/kyra/gui_lol.cpp 2009-03-14 15:06:02 UTC (rev 39393)
@@ -1398,6 +1398,13 @@
}
int LoLEngine::clickedAutomap(Button *button) {
+ if (!(_gameFlags[15] & 0x1000))
+ return 0;
+
+ // displayAutopmap();
+
+ gui_drawPlayField();
+ setPaletteBrightness(_screen->_currentPalette, _brightness, _lampOilStatus);
return 1;
}
Modified: scummvm/trunk/engines/kyra/lol.h
===================================================================
--- scummvm/trunk/engines/kyra/lol.h 2009-03-14 14:58:19 UTC (rev 39392)
+++ scummvm/trunk/engines/kyra/lol.h 2009-03-14 15:06:02 UTC (rev 39393)
@@ -500,6 +500,8 @@
uint16 _globalScriptVars[16];
// emc opcode
+ int olol_setWallType(EMCState *script);
+ int olol_getWallType(EMCState *script);
int olol_drawScene(EMCState *script);
int olol_delay(EMCState *script);
int olol_setGameFlag(EMCState *script);
@@ -534,7 +536,7 @@
int olol_getGlobalVar(EMCState *script);
int olol_setGlobalVar(EMCState *script);
int olol_triggerDoorSwitch(EMCState *script);
- int olol_updateSceneAnimations(EMCState *script);
+ int olol_updateBlockAnimations(EMCState *script);
int olol_mapShapeToBlock(EMCState *script);
int olol_resetBlockShapeAssignment(EMCState *script);
int olol_copyRegion(EMCState *script);
@@ -760,7 +762,7 @@
void drawDecorations(int index);
void drawIceShapes(int index, int iceShapeIndex);
void drawScriptShapes(int pageNum);
- void updateSceneAnimations(int block, int wall, int val);
+ void setWallType(int block, int wall, int val);
void updateSceneWindow();
void setSequenceGui(int x, int y, int w, int h, int enableFlags);
@@ -796,7 +798,7 @@
void movePartySmoothScrollTurnRight(int speed);
int smoothScrollDrawSpecialShape(int pageNum);
- void setLF2(int block);
+ void updateAutoMap(int block);
struct OpenDoorState {
uint16 block;
@@ -981,7 +983,7 @@
// monsters
void loadMonsterShapes(const char *file, int monsterIndex, int b);
void releaseMonsterShapes(int monsterIndex);
- int placeMonstersUnk(int block);
+ int disableMonstersForBlock(int block);
void setMonsterMode(MonsterInPlay *monster, int a);
void placeMonster(MonsterInPlay *monster, uint16 x, uint16 y);
int calcMonsterDirection(uint16 x1, uint16 y1, uint16 x2, uint16 y2);
Modified: scummvm/trunk/engines/kyra/scene_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/scene_lol.cpp 2009-03-14 14:58:19 UTC (rev 39392)
+++ scummvm/trunk/engines/kyra/scene_lol.cpp 2009-03-14 15:06:02 UTC (rev 39393)
@@ -84,7 +84,7 @@
runInfScript(filename);
addLevelItems();
- placeMonstersUnk(_currentBlock);
+ disableMonstersForBlock(_currentBlock);
_screen->generateGrayOverlay(_screen->_currentPalette, _screen->_grayOverlay,32, 16, 0, 0, 128, true);
@@ -643,7 +643,7 @@
}
}
- setLF2(_currentBlock);
+ updateAutoMap(_currentBlock);
}
uint16 LoLEngine::calcNewBlockPosition(uint16 curBlock, uint16 direction) {
@@ -1103,7 +1103,7 @@
return 0;
}
-void LoLEngine::setLF2(int block) {
+void LoLEngine::updateAutoMap(int block) {
if (!(_gameFlags[15] & 0x1000))
return;
_levelBlockProperties[block].flags |= 7;
@@ -1138,7 +1138,7 @@
_sceneUpdateRequired = false;
}
-void LoLEngine::updateSceneAnimations(int block, int wall, int val) {
+void LoLEngine::setWallType(int block, int wall, int val) {
if (wall == -1) {
for (int i = 0; i < 4; i++)
_levelBlockProperties[block].walls[i] = val;
Modified: scummvm/trunk/engines/kyra/script_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_lol.cpp 2009-03-14 14:58:19 UTC (rev 39392)
+++ scummvm/trunk/engines/kyra/script_lol.cpp 2009-03-14 15:06:02 UTC (rev 39393)
@@ -112,6 +112,19 @@
return false;
}
+int LoLEngine::olol_setWallType(EMCState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_setWallType(%p) (%d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2));
+ if (_wllWallFlags[stackPos(2)] & 4)
+ disableMonstersForBlock(stackPos(0));
+ setWallType(stackPos(0), stackPos(1), stackPos(2));
+ return 1;
+}
+
+int LoLEngine::olol_getWallType(EMCState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_getWallType(%p) (%d, %d)", (const void *)script, stackPos(0), stackPos(1));
+ return _levelBlockProperties[stackPos(0)].walls[stackPos(1) & 3];
+}
+
int LoLEngine::olol_drawScene(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_drawScene(%p) (%d)", (const void *)script, stackPos(0));
drawScene(stackPos(0));
@@ -555,7 +568,7 @@
case 0:
_currentBlock = b;
calcCoordinates(_partyPosX, _partyPosY, _currentBlock, 0x80, 0x80);
- setLF2(_currentBlock);
+ updateAutoMap(_currentBlock);
break;
case 1:
@@ -626,11 +639,11 @@
return 1;
}
-int LoLEngine::olol_updateSceneAnimations(EMCState *script) {
- debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_updateSceneAnimations(%p) (%d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3));
+int LoLEngine::olol_updateBlockAnimations(EMCState *script) {
+ debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_updateBlockAnimations(%p) (%d, %d, %d, %d)", (const void *)script, stackPos(0), stackPos(1), stackPos(2), stackPos(3));
int block = stackPos(0);
int wall = stackPos(1);
- updateSceneAnimations(block, wall, _levelBlockProperties[block].walls[(wall == -1) ? 0 : wall] == stackPos(2) ? stackPos(3) : stackPos(2));
+ setWallType(block, wall, _levelBlockProperties[block].walls[(wall == -1) ? 0 : wall] == stackPos(2) ? stackPos(3) : stackPos(2));
return 0;
}
@@ -1031,7 +1044,7 @@
int LoLEngine::olol_processButtonClick(EMCState *script) {
debugC(3, kDebugLevelScriptFuncs, "LoLEngine::olol_processButtonClick(%p) (%d)", (const void *)script, stackPos(0));
- _tim->resetDialogueState(_activeTim[stackPos(0)]);
+ _tim->forceDialogue(_activeTim[stackPos(0)]);
return 1;
}
@@ -1339,8 +1352,8 @@
SetOpcodeTable(_opcodes);
// 0x00
- OpcodeUnImpl();
- OpcodeUnImpl();
+ Opcode(olol_setWallType);
+ Opcode(olol_getWallType);
Opcode(olol_drawScene);
Opcode(o1_getRand);
@@ -1417,7 +1430,7 @@
OpcodeUnImpl();
// 0x34
- Opcode(olol_updateSceneAnimations);
+ Opcode(olol_updateBlockAnimations);
Opcode(olol_mapShapeToBlock);
Opcode(olol_resetBlockShapeAssignment);
Opcode(olol_copyRegion);
Modified: scummvm/trunk/engines/kyra/script_tim.cpp
===================================================================
--- scummvm/trunk/engines/kyra/script_tim.cpp 2009-03-14 14:58:19 UTC (rev 39392)
+++ scummvm/trunk/engines/kyra/script_tim.cpp 2009-03-14 15:06:02 UTC (rev 39393)
@@ -1125,7 +1125,7 @@
return res;
}
-void TIMInterpreter_LoL::resetDialogueState(TIM *tim) {
+void TIMInterpreter_LoL::forceDialogue(TIM *tim) {
if (!tim)
return;
Modified: scummvm/trunk/engines/kyra/script_tim.h
===================================================================
--- scummvm/trunk/engines/kyra/script_tim.h 2009-03-14 14:58:19 UTC (rev 39392)
+++ scummvm/trunk/engines/kyra/script_tim.h 2009-03-14 15:06:02 UTC (rev 39393)
@@ -144,7 +144,7 @@
virtual void stopBackgroundAnimation(int animIndex) {}
virtual void updateBackgroundAnimation(int animIndex) {}
- virtual void resetDialogueState(TIM *tim) {}
+ virtual void forceDialogue(TIM *tim) {}
int _drawPage2;
@@ -236,7 +236,7 @@
void stopBackgroundAnimation(int animIndex);
void updateBackgroundAnimation(int animIndex);
- void resetDialogueState(TIM *tim);
+ void forceDialogue(TIM *tim);
private:
KyraEngine_v1 *vm();
Modified: scummvm/trunk/engines/kyra/sprites_lol.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sprites_lol.cpp 2009-03-14 14:58:19 UTC (rev 39392)
+++ scummvm/trunk/engines/kyra/sprites_lol.cpp 2009-03-14 15:06:02 UTC (rev 39393)
@@ -135,7 +135,7 @@
}
}
-int LoLEngine::placeMonstersUnk(int block) {
+int LoLEngine::disableMonstersForBlock(int block) {
int i = _levelBlockProperties[block].itemMonsterIndex;
int cnt = 0;
MonsterInPlay *t = 0;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list