[Scummvm-cvs-logs] CVS: scummvm/kyra animator.cpp,1.1,1.2 animator.h,1.1,1.2 kyra.cpp,1.108,1.109 kyra.h,1.61,1.62 script_v1.cpp,1.56,1.57 timer.cpp,1.1,1.2
Johannes Schickel
lordhoto at users.sourceforge.net
Tue Jan 3 11:04:03 CET 2006
- Previous message: [Scummvm-cvs-logs] CVS: scummvm TODO,1.310,1.311
- Next message: [Scummvm-cvs-logs] CVS: scummvm/gob anim.cpp,1.4,1.5 anim.h,1.5,1.6 cdrom.cpp,1.4,1.5 cdrom.h,1.2,1.3 dataio.cpp,1.11,1.12 dataio.h,1.7,1.8 draw.cpp,1.14,1.15 draw.h,1.6,1.7 driver_vga.cpp,1.12,1.13 driver_vga.h,1.6,1.7 game.cpp,1.28,1.29 game.h,1.6,1.7 global.cpp,1.9,1.10 global.h,1.8,1.9 gob.cpp,1.27,1.28 gob.h,1.11,1.12 goblin.cpp,1.24,1.25 goblin.h,1.6,1.7 init.cpp,1.12,1.13 init.h,1.4,1.5 inter.cpp,1.25,1.26 inter.h,1.4,1.5 map.cpp,1.17,1.18 map.h,1.11,1.12 mult.cpp,1.13,1.14 mult.h,1.6,1.7 pack.cpp,1.6,1.7 pack.h,1.4,1.5 palanim.cpp,1.11,1.12 palanim.h,1.4,1.5 parse.cpp,1.15,1.16 parse.h,1.4,1.5 scenery.cpp,1.20,1.21 scenery.h,1.7,1.8 sound.cpp,1.13,1.14 sound.h,1.9,1.10 timer.cpp,1.7,1.8 timer.h,1.4,1.5 util.cpp,1.18,1.19 util.h,1.6,1.7 video.cpp,1.16,1.17 video.h,1.10,1.11
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/kyra
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32128
Modified Files:
animator.cpp animator.h kyra.cpp kyra.h script_v1.cpp
timer.cpp
Log Message:
Fixed some bugs with the timers.
also implemented: cmd_dispelMagicAnimation and cmd_runWSAFrames
and implemented color fading of the kyragem in room 210.
Index: animator.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/animator.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- animator.cpp 2 Jan 2006 22:58:59 -0000 1.1
+++ animator.cpp 3 Jan 2006 19:03:08 -0000 1.2
@@ -24,14 +24,21 @@
#include "kyra/animator.h"
#include "kyra/sprites.h"
+#include "common/system.h"
+
namespace Kyra {
-ScreenAnimator::ScreenAnimator(KyraEngine *vm) {
+ScreenAnimator::ScreenAnimator(KyraEngine *vm, OSystem *system) {
_vm = vm;
_screen = vm->screen();
_initOk = false;
_updateScreen = false;
+ _system = system;
_screenObjects = _actors = _items = _sprites = _objectQueue = 0;
_noDrawShapesFlag = 0;
+
+ memset(&_kyragemFadingState, 0, sizeof(_kyragemFadingState));
+ _kyragemFadingState.gOffset = 0x13;
+ _kyragemFadingState.bOffset = 0x13;
}
ScreenAnimator::~ScreenAnimator() {
@@ -522,4 +529,74 @@
_objectQueue = objectAddHead(0, object);
}
}
+
+void ScreenAnimator::updateKyragemFading() {
+ static const uint8 kyraGemPalette[0x28] = {
+ 0x3F, 0x3B, 0x38, 0x34, 0x32, 0x2F, 0x2C, 0x29, 0x25, 0x22,
+ 0x1F, 0x1C, 0x19, 0x16, 0x12, 0x0F, 0x0C, 0x0A, 0x06, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ };
+
+ if (_system->getMillis() < _kyragemFadingState.timerCount)
+ return;
+
+ _kyragemFadingState.timerCount = _system->getMillis() + 4 * _vm->tickLength();
+ int palPos = 684;
+ for (int i = 0; i < 20; ++i) {
+ _screen->_currentPalette[palPos++] = kyraGemPalette[i + _kyragemFadingState.rOffset];
+ _screen->_currentPalette[palPos++] = kyraGemPalette[i + _kyragemFadingState.gOffset];
+ _screen->_currentPalette[palPos++] = kyraGemPalette[i + _kyragemFadingState.bOffset];
+ }
+ _screen->setScreenPalette(_screen->_currentPalette);
+ _updateScreen = true;
+ switch (_kyragemFadingState.nextOperation) {
+ case 0:
+ --_kyragemFadingState.bOffset;
+ if (_kyragemFadingState.bOffset >= 1)
+ return;
+ _kyragemFadingState.nextOperation = 1;
+ break;
+
+ case 1:
+ ++_kyragemFadingState.rOffset;
+ if (_kyragemFadingState.rOffset < 19)
+ return;
+ _kyragemFadingState.nextOperation = 2;
+ break;
+
+ case 2:
+ --_kyragemFadingState.gOffset;
+ if (_kyragemFadingState.gOffset >= 1)
+ return;
+ _kyragemFadingState.nextOperation = 3;
+ break;
+
+ case 3:
+ ++_kyragemFadingState.bOffset;
+ if (_kyragemFadingState.bOffset < 19)
+ return;
+ _kyragemFadingState.nextOperation = 4;
+ break;
+
+ case 4:
+ --_kyragemFadingState.rOffset;
+ if (_kyragemFadingState.rOffset >= 1)
+ return;
+ _kyragemFadingState.nextOperation = 5;
+ break;
+
+ case 5:
+ ++_kyragemFadingState.gOffset;
+ if (_kyragemFadingState.gOffset < 19)
+ return;
+ _kyragemFadingState.nextOperation = 0;
+ break;
+
+ default:
+ break;
+ }
+
+ _kyragemFadingState.timerCount = _system->getMillis() + 120 * _vm->tickLength();
+}
} // end of namespace Kyra
Index: animator.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/animator.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- animator.h 2 Jan 2006 22:58:59 -0000 1.1
+++ animator.h 3 Jan 2006 19:03:08 -0000 1.2
@@ -49,7 +49,7 @@
class ScreenAnimator {
public:
- ScreenAnimator(KyraEngine *vm);
+ ScreenAnimator(KyraEngine *vm, OSystem *system);
virtual ~ScreenAnimator();
operator bool() const { return _initOk; }
@@ -78,12 +78,15 @@
void clearQueue() { _objectQueue = 0; }
void addObjectToQueue(AnimObject *object);
void refreshObject(AnimObject *object);
+
+ void updateKyragemFading();
int _noDrawShapesFlag;
bool _updateScreen;
protected:
KyraEngine *_vm;
Screen *_screen;
+ OSystem *_system;
bool _initOk;
AnimObject *_screenObjects;
@@ -99,6 +102,14 @@
void preserveOrRestoreBackground(AnimObject *obj, bool restore);
AnimObject *_objectQueue;
+
+ struct KyragemState {
+ uint16 nextOperation;
+ uint16 rOffset;
+ uint16 gOffset;
+ uint16 bOffset;
+ uint32 timerCount;
+ } _kyragemFadingState;
};
} // end of namespace Kyra
Index: kyra.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/kyra.cpp,v
retrieving revision 1.108
retrieving revision 1.109
diff -u -d -r1.108 -r1.109
--- kyra.cpp 2 Jan 2006 22:58:59 -0000 1.108
+++ kyra.cpp 3 Jan 2006 19:03:09 -0000 1.109
@@ -295,7 +295,7 @@
assert(_sprites);
_seq = new SeqPlayer(this, _system);
assert(_seq);
- _animator = new ScreenAnimator(this);
+ _animator = new ScreenAnimator(this, _system);
assert(_animator);
_animator->init(5, 11, 12);
assert(*_animator);
@@ -623,7 +623,7 @@
_animator->updateAllObjectShapes();
if (_currentCharacter->sceneId == 210) {
- //XXX
+ _animator->updateKyragemFading();
}
if (amount > 0) {
@@ -668,6 +668,10 @@
while (!_quitFlag) {
int32 frameTime = (int32)_system->getMillis();
+ if (_currentCharacter->sceneId == 210) {
+ _animator->updateKyragemFading();
+ // XXX
+ }
if (_brandonStatusBit & 2) {
if (_brandonStatusBit0x02Flag)
@@ -780,10 +784,10 @@
while (_system->getMillis() < nextTime) {
_sprites->updateSceneAnims();
_animator->updateAllObjectShapes();
- //if (_currentCharacter->sceneId == 210) {
- // updateKyragemFading();
+ if (_currentCharacter->sceneId == 210) {
+ _animator->updateKyragemFading();
// seq_playEnd();
- //}
+ }
}
}
@@ -2066,7 +2070,7 @@
updateTextFade();
if (_currentCharacter->sceneId == 210) {
- // XXX game_updateKyragemFading
+ _animator->updateKyragemFading();
}
}
@@ -4892,7 +4896,7 @@
_animator->updateAllObjectShapes();
updateTextFade();
if (_currentCharacter->sceneId == 210) {
- // XXX updateKyragemFading
+ _animator->updateKyragemFading();
// XXX playEnd
// XXX
}
Index: kyra.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/kyra.h,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -d -r1.61 -r1.62
--- kyra.h 2 Jan 2006 22:58:59 -0000 1.61
+++ kyra.h 3 Jan 2006 19:03:09 -0000 1.62
@@ -177,6 +177,7 @@
ScreenAnimator *animator() { return _animator; }
TextDisplayer *text() { return _text; }
MusicPlayer *midi() { return _midi; }
+ uint32 tickLength() const { return _tickLength; }
Movie *createWSAMovie();
uint8 game() const { return _game; }
Index: script_v1.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/script_v1.cpp,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -d -r1.56 -r1.57
--- script_v1.cpp 2 Jan 2006 22:58:59 -0000 1.56
+++ script_v1.cpp 3 Jan 2006 19:03:09 -0000 1.57
@@ -509,7 +509,27 @@
}
int KyraEngine::cmd_runWSAFrames(ScriptState *script) {
- warning("STUB: cmd_runWSAFrames");
+ debug(3, "cmd_runWSAFrames(0x%X) (%d, %d, %d, %d, %d, %d)", script, stackPos(0), stackPos(1), stackPos(2), stackPos(3), stackPos(4), stackPos(5));
+ int xpos = stackPos(0);
+ int ypos = stackPos(1);
+ int delayTime = stackPos(2);
+ int startFrame = stackPos(3);
+ int endFrame = stackPos(4);
+ int wsaIndex = stackPos(5);
+ _screen->hideMouse();
+ _movieObjects[wsaIndex]->_x = xpos;
+ _movieObjects[wsaIndex]->_y = ypos;
+ _movieObjects[wsaIndex]->_drawPage = 0;
+ for (; startFrame <= endFrame; ++startFrame) {
+ uint32 nextRun = _system->getMillis() + delayTime * _tickLength;
+ _movieObjects[wsaIndex]->displayFrame(startFrame);
+ while (_system->getMillis() < nextRun) {
+ _sprites->updateSceneAnims();
+ _animator->updateAllObjectShapes();
+ delay(10);
+ }
+ }
+ _screen->showMouse();
return 0;
}
@@ -1097,7 +1117,8 @@
}
int KyraEngine::cmd_dispelMagicAnimation(ScriptState *script) {
- warning("STUB: cmd_dispelMagicAnimation");
+ debug(3, "cmd_dispelMagicAnimation(0x%X) ()", script);
+ seq_dispelMagicAnimation();
return 0;
}
Index: timer.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/kyra/timer.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- timer.cpp 2 Jan 2006 22:58:59 -0000 1.1
+++ timer.cpp 3 Jan 2006 19:03:09 -0000 1.2
@@ -93,7 +93,6 @@
(*this.*_timers[i].func)(i);
_timers[i].nextRun = _system->getMillis() + _timers[i].countdown * _tickLength;
-
}
}
if (_timers[i].nextRun < _timerNextRun)
@@ -119,8 +118,9 @@
void KyraEngine::setTimerCountdown(uint8 timer, int32 countdown) {
debug(9, "setTimerCountdown(%i, %i)", timer, countdown);
_timers[timer].countdown = countdown;
+ _timers[timer].nextRun = _system->getMillis() + countdown * _tickLength;
- uint32 nextRun = _system->getMillis() + countdown;
+ uint32 nextRun = _system->getMillis() + countdown * _tickLength;
if (nextRun < _timerNextRun)
_timerNextRun = nextRun;
}
- Previous message: [Scummvm-cvs-logs] CVS: scummvm TODO,1.310,1.311
- Next message: [Scummvm-cvs-logs] CVS: scummvm/gob anim.cpp,1.4,1.5 anim.h,1.5,1.6 cdrom.cpp,1.4,1.5 cdrom.h,1.2,1.3 dataio.cpp,1.11,1.12 dataio.h,1.7,1.8 draw.cpp,1.14,1.15 draw.h,1.6,1.7 driver_vga.cpp,1.12,1.13 driver_vga.h,1.6,1.7 game.cpp,1.28,1.29 game.h,1.6,1.7 global.cpp,1.9,1.10 global.h,1.8,1.9 gob.cpp,1.27,1.28 gob.h,1.11,1.12 goblin.cpp,1.24,1.25 goblin.h,1.6,1.7 init.cpp,1.12,1.13 init.h,1.4,1.5 inter.cpp,1.25,1.26 inter.h,1.4,1.5 map.cpp,1.17,1.18 map.h,1.11,1.12 mult.cpp,1.13,1.14 mult.h,1.6,1.7 pack.cpp,1.6,1.7 pack.h,1.4,1.5 palanim.cpp,1.11,1.12 palanim.h,1.4,1.5 parse.cpp,1.15,1.16 parse.h,1.4,1.5 scenery.cpp,1.20,1.21 scenery.h,1.7,1.8 sound.cpp,1.13,1.14 sound.h,1.9,1.10 timer.cpp,1.7,1.8 timer.h,1.4,1.5 util.cpp,1.18,1.19 util.h,1.6,1.7 video.cpp,1.16,1.17 video.h,1.10,1.11
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list