SCI: kPortrait - now drawing after wait, also using gui wait so mouse cursor still works during execution, makes lip sync perfect (thx to the other fix by fingolfin)
svn-id: r47214
This commit is contained in:
parent
a44c6e4323
commit
2c1ef90b87
3 changed files with 12 additions and 10 deletions
|
@ -851,7 +851,7 @@ reg_t SciGui::portraitLoad(Common::String resourceName) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void SciGui::portraitShow(Common::String resourceName, Common::Point position, uint16 resourceId, uint16 noun, uint16 verb, uint16 cond, uint16 seq) {
|
void SciGui::portraitShow(Common::String resourceName, Common::Point position, uint16 resourceId, uint16 noun, uint16 verb, uint16 cond, uint16 seq) {
|
||||||
Portrait *myPortrait = new Portrait(_s->resMan, _screen, _palette, _audio, resourceName);
|
Portrait *myPortrait = new Portrait(_s->resMan, this, _screen, _palette, _audio, resourceName);
|
||||||
// TODO: cache portraits
|
// TODO: cache portraits
|
||||||
// adjust given coordinates to curPort (but dont adjust coordinates on upscaledHires_Save_Box and give us hires coordinates
|
// adjust given coordinates to curPort (but dont adjust coordinates on upscaledHires_Save_Box and give us hires coordinates
|
||||||
// on kDrawCel, yeah this whole stuff makes sense)
|
// on kDrawCel, yeah this whole stuff makes sense)
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
#include "sci/sci.h"
|
#include "sci/sci.h"
|
||||||
#include "sci/engine/state.h"
|
#include "sci/engine/state.h"
|
||||||
|
#include "sci/graphics/gui.h"
|
||||||
#include "sci/graphics/screen.h"
|
#include "sci/graphics/screen.h"
|
||||||
#include "sci/graphics/palette.h"
|
#include "sci/graphics/palette.h"
|
||||||
#include "sci/graphics/portrait.h"
|
#include "sci/graphics/portrait.h"
|
||||||
|
@ -36,8 +37,8 @@
|
||||||
|
|
||||||
namespace Sci {
|
namespace Sci {
|
||||||
|
|
||||||
Portrait::Portrait(ResourceManager *resMan, Screen *screen, SciPalette *palette, AudioPlayer *audio, Common::String resourceName)
|
Portrait::Portrait(ResourceManager *resMan, SciGui *gui, Screen *screen, SciPalette *palette, AudioPlayer *audio, Common::String resourceName)
|
||||||
: _resMan(resMan), _screen(screen), _palette(palette), _audio(audio), _resourceName(resourceName) {
|
: _resMan(resMan), _gui(gui), _screen(screen), _palette(palette), _audio(audio), _resourceName(resourceName) {
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,6 +161,12 @@ void Portrait::doit(Common::Point position, uint16 resourceId, uint16 noun, uint
|
||||||
syncCue = 0xFFFF;
|
syncCue = 0xFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wait till syncTime passed, then show specific animation bitmap
|
||||||
|
do {
|
||||||
|
_gui->wait(1);
|
||||||
|
curPosition = _audio->getAudioPosition();
|
||||||
|
} while ((curPosition != -1) && (curPosition < timerPosition));
|
||||||
|
|
||||||
if (syncCue != 0xFFFF) {
|
if (syncCue != 0xFFFF) {
|
||||||
// Display animation bitmap
|
// Display animation bitmap
|
||||||
if (syncCue < _bitmapCount) {
|
if (syncCue < _bitmapCount) {
|
||||||
|
@ -171,12 +178,6 @@ void Portrait::doit(Common::Point position, uint16 resourceId, uint16 noun, uint
|
||||||
warning("kPortrait: sync information tried to draw non-existant %d", syncCue);
|
warning("kPortrait: sync information tried to draw non-existant %d", syncCue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait till syncTime passed, then show specific animation bitmap
|
|
||||||
do {
|
|
||||||
g_system->delayMillis(10);
|
|
||||||
curPosition = _audio->getAudioPosition();
|
|
||||||
} while ((curPosition != -1) && (curPosition < timerPosition));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_resMan->unlockResource(syncResource);
|
_resMan->unlockResource(syncResource);
|
||||||
|
|
|
@ -37,7 +37,7 @@ struct PortraitBitmap {
|
||||||
|
|
||||||
class Portrait {
|
class Portrait {
|
||||||
public:
|
public:
|
||||||
Portrait(ResourceManager *resMan, Screen *screen, SciPalette *palette, AudioPlayer *audio, Common::String resourceName);
|
Portrait(ResourceManager *resMan, SciGui *gui, Screen *screen, SciPalette *palette, AudioPlayer *audio, Common::String resourceName);
|
||||||
~Portrait();
|
~Portrait();
|
||||||
|
|
||||||
void setupAudio(uint16 resourceId, uint16 noun, uint16 verb, uint16 cond, uint16 seq);
|
void setupAudio(uint16 resourceId, uint16 noun, uint16 verb, uint16 cond, uint16 seq);
|
||||||
|
@ -49,6 +49,7 @@ private:
|
||||||
void bitsShow();
|
void bitsShow();
|
||||||
|
|
||||||
ResourceManager *_resMan;
|
ResourceManager *_resMan;
|
||||||
|
SciGui *_gui;
|
||||||
Screen *_screen;
|
Screen *_screen;
|
||||||
SciPalette *_palette;
|
SciPalette *_palette;
|
||||||
AudioPlayer *_audio;
|
AudioPlayer *_audio;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue