[Scummvm-cvs-logs] SF.net SVN: scummvm: [25324] scummvm/trunk/engines/kyra
lordhoto at users.sourceforge.net
lordhoto at users.sourceforge.net
Thu Feb 1 16:30:53 CET 2007
Revision: 25324
http://scummvm.svn.sourceforge.net/scummvm/?rev=25324&view=rev
Author: lordhoto
Date: 2007-02-01 07:30:50 -0800 (Thu, 01 Feb 2007)
Log Message:
-----------
Reworked delay handling.
Modified Paths:
--------------
scummvm/trunk/engines/kyra/sprites.cpp
scummvm/trunk/engines/kyra/sprites.h
Modified: scummvm/trunk/engines/kyra/sprites.cpp
===================================================================
--- scummvm/trunk/engines/kyra/sprites.cpp 2007-02-01 14:57:48 UTC (rev 25323)
+++ scummvm/trunk/engines/kyra/sprites.cpp 2007-02-01 15:30:50 UTC (rev 25324)
@@ -41,7 +41,6 @@
_dat = 0;
memset(_anims, 0, sizeof(_anims));
memset(_sceneShapes, 0, sizeof(_sceneShapes));
- _animDelay = 16;
_spriteDefStart = 0;
memset(_drawLayerTable, 0, sizeof(_drawLayerTable));
_sceneAnimatorBeaconFlag = 0;
@@ -159,6 +158,7 @@
_anims[i].y = READ_LE_UINT16(data);
data += 2;
_anims[i].flipX = false;
+ _anims[i].lastRefresh = _system->getMillis();
refreshSceneAnimObject(i, _anims[i].sprite, _anims[i].x, _anims[i].y, _anims[i].flipX, _anims[i].unk1 != 0);
break;
case 0xFF8D:
@@ -176,13 +176,15 @@
_anims[i].y = READ_LE_UINT16(data);
data += 2;
_anims[i].flipX = true;
+ _anims[i].lastRefresh = _system->getMillis();
refreshSceneAnimObject(i, _anims[i].sprite, _anims[i].x, _anims[i].y, _anims[i].flipX, _anims[i].unk1 != 0);
break;
case 0xFF8A:
data += 2;
debugC(6, kDebugLevelSprites, "func: Set time to wait");
debugC(6, kDebugLevelSprites, "Time %i", READ_LE_UINT16(data));
- _anims[i].nextRun = _system->getMillis() + READ_LE_UINT16(data) * _animDelay;
+ _anims[i].nextRun = _system->getMillis() + READ_LE_UINT16(data) * _engine->tickLength();
+ _anims[i].nextRun -= _system->getMillis() - _anims[i].lastRefresh;
data += 2;
break;
case 0xFFB3:
@@ -193,7 +195,8 @@
data += 2;
debugC(6, kDebugLevelSprites, "Maximum time %i", READ_LE_UINT16(data));
data += 2;
- _anims[i].nextRun = _system->getMillis() + rndNr * _animDelay;
+ _anims[i].nextRun = _system->getMillis() + rndNr * _engine->tickLength();
+ _anims[i].nextRun -= _system->getMillis() - _anims[i].lastRefresh;
break;
case 0xFF8C:
data += 2;
@@ -254,6 +257,7 @@
_anims[i].sprite = READ_LE_UINT16(data);
_anims[i].flipX = false;
data += 2;
+ _anims[i].lastRefresh = _system->getMillis();
refreshSceneAnimObject(i, _anims[i].sprite, _anims[i].x, _anims[i].y, _anims[i].flipX, _anims[i].unk1 != 0);
break;
case 0xFF91:
@@ -263,6 +267,7 @@
_anims[i].sprite = READ_LE_UINT16(data);
_anims[i].flipX = true;
data += 2;
+ _anims[i].lastRefresh = _system->getMillis();
refreshSceneAnimObject(i, _anims[i].sprite, _anims[i].x, _anims[i].y, _anims[i].flipX, _anims[i].unk1 != 0);
break;
case 0xFF92:
Modified: scummvm/trunk/engines/kyra/sprites.h
===================================================================
--- scummvm/trunk/engines/kyra/sprites.h 2007-02-01 14:57:48 UTC (rev 25323)
+++ scummvm/trunk/engines/kyra/sprites.h 2007-02-01 15:30:50 UTC (rev 25324)
@@ -45,6 +45,7 @@
uint8 *loopStart;
uint16 loopsLeft;
uint32 nextRun;
+ uint32 lastRefresh;
bool play;
uint16 width;
uint16 height;
@@ -85,7 +86,6 @@
Screen *_screen;
uint8 *_dat;
Common::RandomSource _rnd;
- uint8 _animDelay;
uint8 *_spriteDefStart;
uint8 _drawLayerTable[8];
};
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