[Scummvm-cvs-logs] CVS: scummvm/kyra kyra.cpp,1.103,1.104 kyra.h,1.58,1.59 script_v1.cpp,1.53,1.54 staticres.cpp,1.31,1.32
Johannes Schickel
lordhoto at users.sourceforge.net
Sat Dec 31 09:26:06 CET 2005
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/kyra debugger.cpp,1.2,1.3 kyra.cpp,1.102,1.103 kyra.h,1.57,1.58 script_v1.cpp,1.52,1.53
- Next message: [Scummvm-cvs-logs] CVS: engine-data kyra.dat,1.9,1.10
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/kyra
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29898
Modified Files:
kyra.cpp kyra.h script_v1.cpp staticres.cpp
Log Message:
Implemented:
- cmd_drinkPotionAnimation
- cmd_fillFlaskWithWater
- cmd_getIdolGem
- cmd_itemOnGroundHere
- cmd_queryCrystalState
- cmd_setCrystalState
- cmd_setBrandonScaleXAndY
- cmd_resetScaleMode
- cmd_getScaleDepthTableValue
- cmd_setScaleDepthTableValue
- cmd_brandonHealingSequence
Index: kyra.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/kyra.cpp,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -d -r1.103 -r1.104
--- kyra.cpp 31 Dec 2005 15:41:37 -0000 1.103
+++ kyra.cpp 31 Dec 2005 17:25:47 -0000 1.104
@@ -189,9 +189,18 @@
_itemList_Size = _takenList_Size = _placedList_Size = _droppedList_Size = _noDropList_Size = 0;
_putDownFirst = _waitForAmulet = _blackJewel = _poisonGone = _healingTip = 0;
_putDownFirst_Size = _waitForAmulet_Size = _blackJewel_Size = _poisonGone_Size = _healingTip_Size = 0;
+ _thePoison = _fluteString = _wispJewelStrings = _magicJewelString = _flaskFull = _fullFlask = 0;
+ _thePoison_Size = _fluteString_Size = _wispJewelStrings_Size = 0;
+ _magicJewelString_Size = _flaskFull_Size = _fullFlask_Size = 0;
_defaultShapeTable = _healingShapeTable = _healingShape2Table = 0;
_defaultShapeTableSize = _healingShapeTableSize = _healingShape2TableSize = 0;
+ _posionDeathShapeTable = _fluteAnimShapeTable = 0;
+ _posionDeathShapeTableSize = _fluteAnimShapeTableSize = 0;
+ _winterScrollTable = _winterScroll1Table = _winterScroll2Table = 0;
+ _winterScrollTableSize = _winterScroll1TableSize = _winterScroll2TableSize = 0;
+ _drinkAnimationTable = _brandonToWispTable = _magicAnimationTable = _brandonStoneTable = 0;
+ _drinkAnimationTableSize = _brandonToWispTableSize = _magicAnimationTableSize = _brandonStoneTableSize = 0;
// Setup mixer
if (!_mixer->isReady()) {
@@ -352,6 +361,7 @@
_noDrawShapesFlag = 0;
_cauldronState = 0;
+ _crystalState[0] = _crystalState[1] = -1;
_brandonStatusBit = 0;
_brandonStatusBit0x02Flag = _brandonStatusBit0x20Flag = 10;
@@ -1420,6 +1430,78 @@
_screen->showMouse();
}
+void KyraEngine::seq_fillFlaskWithWater(int item, int type) {
+ debug(9, "seq_fillFlaskWithWater(%d, %d)", item, type);
+ int newItem = -1;
+ static const uint8 flaskTable1[] = { 0x46, 0x48, 0x4A, 0x4C };
+ static const uint8 flaskTable2[] = { 0x47, 0x49, 0x4B, 0x4D };
+
+ if (item >= 60 && item <= 77) {
+ assert(_flaskFull);
+ characterSays(_flaskFull[0], 0, -2);
+ } else if (item == 78) {
+ assert(type >= 0 && type < ARRAYSIZE(flaskTable1));
+ newItem = flaskTable1[type];
+ } else if (item == 79) {
+ assert(type >= 0 && type < ARRAYSIZE(flaskTable2));
+ newItem = flaskTable2[type];
+ }
+
+ if (newItem == -1)
+ return;
+
+ _screen->hideMouse();
+ setMouseItem(newItem);
+ _screen->showMouse();
+ _itemInHand = newItem;
+ assert(_fullFlask);
+ assert(type < _fullFlask_Size && type >= 0);
+ characterSays(_fullFlask[type], 0, -2);
+}
+
+void KyraEngine::seq_playDrinkPotionAnim(int unk1, int unk2, int flags) {
+ debug(9, "seq_playDrinkPotionAnim(%d, %d, %d)", unk1, unk2, flags);
+ // XXX
+ _screen->hideMouse();
+ checkAmuletAnimFlags();
+ _currentCharacter->facing = 5;
+ animRefreshNPC(0);
+ assert(_drinkAnimationTable);
+ setupShapes123(_drinkAnimationTable, 9, flags);
+ setBrandonAnimSeqSize(5, 54);
+
+ for (int i = 123; i <= 131; ++i) {
+ _currentCharacter->currentAnimFrame = i;
+ animRefreshNPC(0);
+ delayWithTicks(5);
+ }
+ // snd_playSoundEffect(0x34);
+ for (int i = 0; i < 2; ++i) {
+ _currentCharacter->currentAnimFrame = 130;
+ animRefreshNPC(0);
+ delayWithTicks(7);
+ _currentCharacter->currentAnimFrame = 131;
+ animRefreshNPC(0);
+ delayWithTicks(7);
+ }
+
+ if (unk2) {
+ // XXX
+ }
+
+ for (int i = 131; i >= 123; --i) {
+ _currentCharacter->currentAnimFrame = i;
+ animRefreshNPC(0);
+ delayWithTicks(5);
+ }
+
+ resetBrandonAnimSeqSize();
+ _currentCharacter->currentAnimFrame = 7;
+ animRefreshNPC(0);
+ freeShapes123();
+ _screen->showMouse();
+}
+
bool KyraEngine::seq_skipSequence() const {
debug(9, "KyraEngine::seq_skipSequence()");
return _quitFlag || _abortIntroFlag;
Index: kyra.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/kyra.h,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -d -r1.58 -r1.59
--- kyra.h 31 Dec 2005 15:41:37 -0000 1.58
+++ kyra.h 31 Dec 2005 17:25:47 -0000 1.59
@@ -573,6 +573,8 @@
void seq_makeBrandonNormal2();
void seq_makeBrandonWisp();
void seq_dispelMagicAnimation();
+ void seq_fillFlaskWithWater(int item, int type);
+ void seq_playDrinkPotionAnim(int unk1, int unk2, int flags);
void wsa_processFrame(WSAMovieV1 *wsa, int frameNum, uint8 *dst);
@@ -686,6 +688,7 @@
int8 _foyerItemTable[3];
int8 _cauldronState;
+ int8 _crystalState[2];
uint16 _brandonStatusBit;
int _brandonStatusBit0x02Flag;
@@ -805,6 +808,8 @@
char **_fluteString;
char **_wispJewelStrings;
char **_magicJewelString;
+ char **_flaskFull;
+ char **_fullFlask;
int _itemList_Size;
int _takenList_Size;
@@ -820,6 +825,8 @@
int _fluteString_Size;
int _wispJewelStrings_Size;
int _magicJewelString_Size;
+ int _flaskFull_Size;
+ int _fullFlask_Size;
char **_characterImageTable;
int _characterImageTableSize;
Index: script_v1.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/script_v1.cpp,v
retrieving revision 1.53
retrieving revision 1.54
diff -u -d -r1.53 -r1.54
--- script_v1.cpp 31 Dec 2005 15:41:37 -0000 1.53
+++ script_v1.cpp 31 Dec 2005 17:25:47 -0000 1.54
@@ -1441,7 +1441,8 @@
}
int KyraEngine::cmd_drinkPotionAnimation(ScriptState *script) {
- warning("STUB: cmd_drinkPotionAnimation");
+ debug(3, "cmd_drinkPotionAnimation(0x%X) (%d, %d, %d)", script);
+ seq_playDrinkPotionAnim(stackPos(0), stackPos(1), stackPos(2));
return 0;
}
@@ -1594,7 +1595,8 @@
}
int KyraEngine::cmd_fillFlaskWithWater(ScriptState *script) {
- warning("STUB: cmd_fillFlaskWithWater");
+ debug(3, "cmd_fillFlaskWithWater(0x%X) (%d, %d)", script, stackPos(0), stackPos(1));
+ seq_fillFlaskWithWater(stackPos(0), stackPos(1));
return 0;
}
@@ -1636,8 +1638,8 @@
}
int KyraEngine::cmd_getIdolGem(ScriptState *script) {
- warning("STUB: cmd_getIdolGem");
- return 0;
+ debug(3, "cmd_getIdolGem(0x%X) (%d)", script, stackPos(0));
+ return _idolGemsTable[stackPos(0)];;
}
int KyraEngine::cmd_setIdolGem(ScriptState *script) {
@@ -1697,7 +1699,13 @@
}
int KyraEngine::cmd_itemOnGroundHere(ScriptState *script) {
- warning("STUB: cmd_itemOnGroundHere");
+ debug(3, "cmd_itemOnGroundHere(0x%X) (%d, %d)", script, stackPos(0), stackPos(1));
+ assert(stackPos(0) < _roomTableSize);
+ Room *curRoom = &_roomTable[stackPos(0)];
+ for (int i = 0; i < 12; ++i) {
+ if (curRoom->itemsTable[i] == stackPos(1))
+ return 1;
+ }
return 0;
}
@@ -1713,13 +1721,23 @@
}
int KyraEngine::cmd_queryCrystalState(ScriptState *script) {
- warning("STUB: cmd_queryCrystalState");
- return 0;
+ debug(3, "cmd_queryCrystalState(0x%X) (%d)", script, stackPos(0));
+ if (!stackPos(0)) {
+ return _crystalState[0];
+ } else if (stackPos(0) == 1) {
+ return _crystalState[1];
+ }
+ return -1;
}
int KyraEngine::cmd_setCrystalState(ScriptState *script) {
- warning("STUB: cmd_setCrystalState");
- return 0;
+ debug(3, "cmd_setCrystalState(0x%X) (%d)", script, stackPos(0), stackPos(1));
+ if (!stackPos(0)) {
+ _crystalState[0] = stackPos(1);
+ } else if (stackPos(0) == 1) {
+ _crystalState[1] = stackPos(1);
+ }
+ return stackPos(1);
}
int KyraEngine::cmd_setPaletteRange(ScriptState *script) {
@@ -1738,23 +1756,29 @@
}
int KyraEngine::cmd_setBrandonScaleXAndY(ScriptState *script) {
- warning("STUB: cmd_setBrandonScaleXAndY");
+ debug(3, "cmd_setBrandonScaleXAndY(0x%X) (%d, %d)", script, stackPos(0), stackPos(1));
+ _brandonScaleX = stackPos(0);
+ _brandonScaleY = stackPos(1);
return 0;
}
int KyraEngine::cmd_resetScaleMode(ScriptState *script) {
- warning("STUB: cmd_resetScaleMode");
+ debug(3, "cmd_setBrandonScaleXAndY(0x%X) ()", script);
+ _scaleMode = 0;
return 0;
}
int KyraEngine::cmd_getScaleDepthTableValue(ScriptState *script) {
- warning("STUB: cmd_getScaleDepthTableValue");
- return 0;
+ debug(3, "cmd_getScaleDepthTableValue(0x%X) (%d)", script, stackPos(0));
+ assert(stackPos(0) < ARRAYSIZE(_scaleTable));
+ return _scaleTable[stackPos(0)];
}
int KyraEngine::cmd_setScaleDepthTableValue(ScriptState *script) {
- warning("STUB: cmd_setScaleDepthTableValue");
- return 0;
+ debug(3, "cmd_setScaleDepthTableValue(0x%X) (%d, %d)", script, stackPos(0), stackPos(1));
+ assert(stackPos(0) < ARRAYSIZE(_scaleTable));
+ _scaleTable[stackPos(0)] = stackPos(1);
+ return stackPos(1);
}
int KyraEngine::cmd_message(ScriptState *script) {
@@ -1814,7 +1838,8 @@
}
int KyraEngine::cmd_brandonHealingSequence(ScriptState *script) {
- warning("STUB: cmd_brandonHealingSequence");
+ debug(3, "cmd_brandonHealingSequence(0x%X) ()", script);
+ seq_brandonHealing();
return 0;
}
Index: staticres.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/staticres.cpp,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- staticres.cpp 29 Dec 2005 22:18:40 -0000 1.31
+++ staticres.cpp 31 Dec 2005 17:25:47 -0000 1.32
@@ -26,7 +26,7 @@
namespace Kyra {
-#define RESFILE_VERSION 9
+#define RESFILE_VERSION 10
#define GAME_FLAGS (GF_FLOPPY | GF_TALKIE | GF_DEMO | GF_AUDIOCD)
#define LANGUAGE_FLAGS (GF_ENGLISH | GF_FRENCH | GF_GERMAN | GF_SPANISH | GF_LNGUNK)
@@ -238,6 +238,9 @@
res_loadLangTable("WISPJEWEL.", &resFile, (byte***)&_wispJewelStrings, &_wispJewelStrings_Size, loadNativeLanguage);
res_loadLangTable("MAGICJEWEL.", &resFile, (byte***)&_magicJewelString, &_magicJewelString_Size, loadNativeLanguage);
+
+ res_loadLangTable("FLASKFULL.", &resFile, (byte***)&_flaskFull, &_fullFlask_Size, loadNativeLanguage);
+ res_loadLangTable("FULLFLASK.", &resFile, (byte***)&_fullFlask, &_fullFlask_Size, loadNativeLanguage);
}
#undef loadRooms
@@ -344,6 +347,9 @@
delete [] _brandonStoneTable;
_brandonStoneTable = 0;
_brandonStoneTableSize = 0;
+
+ res_freeLangTable(&_flaskFull, &_flaskFull_Size);
+ res_freeLangTable(&_fullFlask, &_fullFlask_Size);
}
}
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/kyra debugger.cpp,1.2,1.3 kyra.cpp,1.102,1.103 kyra.h,1.57,1.58 script_v1.cpp,1.52,1.53
- Next message: [Scummvm-cvs-logs] CVS: engine-data kyra.dat,1.9,1.10
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list