TITANIC: Handle -1 frameNumber in AVISurface::addEvent like original

This commit is contained in:
Paul Gilbert 2017-01-17 22:40:57 -05:00
parent 7ede6d585d
commit 63c3df22f0
4 changed files with 11 additions and 9 deletions

View File

@ -642,8 +642,9 @@ bool CParrot::FrameMsg(CFrameMsg *msg) {
break;
}
if (action < 280266) {
if (action != 280266) {
if (pt.x < 75) {
warning("***********************");
_npcFlags |= NPCFLAG_1000000;
playClip("Walk Left Intro", MOVIE_STOP_PREVIOUS);
playClip("Walk Left Loop", MOVIE_NOTIFY_OBJECT);
@ -684,7 +685,7 @@ bool CParrot::MovieFrameMsg(CMovieFrameMsg *msg) {
_npcFlags &= ~NPCFLAG_800000;
}
warning("%d", msg->_frameNumber);//***DEBUG***
switch (msg->_frameNumber) {
case 244:
setPosition(Point(_bounds.left + 45, _bounds.top));

View File

@ -406,21 +406,22 @@ bool AVISurface::renderFrame() {
return false;
}
bool AVISurface::addEvent(int frameNumber, CGameObject *obj) {
bool AVISurface::addEvent(int *frameNumber, CGameObject *obj) {
if (!_movieRangeInfo.empty()) {
CMovieRangeInfo *tail = _movieRangeInfo.back();
if (frameNumber == -1)
frameNumber = tail->_startFrame;
assert(frameNumber);
if (*frameNumber == -1)
*frameNumber = tail->_startFrame;
CMovieEvent *me = new CMovieEvent();
me->_type = MET_FRAME;
me->_startFrame = 0;
me->_endFrame = 0;
me->_initialFrame = frameNumber;
me->_initialFrame = *frameNumber;
me->_gameObject = obj;
tail->addEvent(me);
return _movieRangeInfo.size() == 1 && frameNumber == getFrame();
return _movieRangeInfo.size() == 1 && *frameNumber == getFrame();
}
return false;

View File

@ -181,7 +181,7 @@ public:
/**
* Add a movie event
*/
bool addEvent(int frameNumber, CGameObject *obj);
bool addEvent(int *frameNumber, CGameObject *obj);
/**
* Set the frame rate

View File

@ -140,7 +140,7 @@ void OSMovie::stop() {
}
void OSMovie::addEvent(int frameNumber, CGameObject *obj) {
if (_aviSurface.addEvent(frameNumber, obj)) {
if (_aviSurface.addEvent(&frameNumber, obj)) {
CMovieFrameMsg frameMsg(frameNumber, 0);
frameMsg.execute(obj);
}