mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
SCI32: Add kPlayVMDGetStatus kernel call
Used by Lighthouse.
This commit is contained in:
@@ -466,6 +466,7 @@ reg_t kPlayVMD(EngineState *s, int argc, reg_t *argv);
|
||||
reg_t kPlayVMDOpen(EngineState *s, int argc, reg_t *argv);
|
||||
reg_t kPlayVMDInit(EngineState *s, int argc, reg_t *argv);
|
||||
reg_t kPlayVMDClose(EngineState *s, int argc, reg_t *argv);
|
||||
reg_t kPlayVMDGetStatus(EngineState *s, int argc, reg_t *argv);
|
||||
reg_t kPlayVMDPlayUntilEvent(EngineState *s, int argc, reg_t *argv);
|
||||
reg_t kPlayVMDShowCursor(EngineState *s, int argc, reg_t *argv);
|
||||
reg_t kPlayVMDSetBlackoutArea(EngineState *s, int argc, reg_t *argv);
|
||||
|
||||
@@ -451,6 +451,7 @@ static const SciKernelMapSubEntry kPlayVMD_subops[] = {
|
||||
{ SIG_SINCE_SCI21, 0, MAP_CALL(PlayVMDOpen), "r(i)(i)", NULL },
|
||||
{ SIG_SINCE_SCI21, 1, MAP_CALL(PlayVMDInit), "ii(i)(i)(ii)", NULL },
|
||||
{ SIG_SINCE_SCI21, 6, MAP_CALL(PlayVMDClose), "", NULL },
|
||||
{ SIG_SINCE_SCI21, 10, MAP_CALL(PlayVMDGetStatus), "", NULL },
|
||||
{ SIG_SINCE_SCI21, 14, MAP_CALL(PlayVMDPlayUntilEvent), "i(i)(i)", NULL },
|
||||
{ SIG_SINCE_SCI21, 16, MAP_CALL(PlayVMDShowCursor), "i", NULL },
|
||||
{ SIG_SINCE_SCI21, 17, MAP_DUMMY(PlayVMDStartBlob), "", NULL },
|
||||
|
||||
@@ -425,6 +425,10 @@ reg_t kPlayVMDClose(EngineState *s, int argc, reg_t *argv) {
|
||||
return make_reg(0, g_sci->_video32->getVMDPlayer().close());
|
||||
}
|
||||
|
||||
reg_t kPlayVMDGetStatus(EngineState *s, int argc, reg_t *argv) {
|
||||
return make_reg(0, g_sci->_video32->getVMDPlayer().getStatus());
|
||||
}
|
||||
|
||||
reg_t kPlayVMDPlayUntilEvent(EngineState *s, int argc, reg_t *argv) {
|
||||
const VMDPlayer::EventFlags flags = (VMDPlayer::EventFlags)argv[0].toUint16();
|
||||
const int16 lastFrameNo = argc > 1 ? argv[1].toSint16() : -1;
|
||||
|
||||
@@ -613,6 +613,22 @@ VMDPlayer::IOStatus VMDPlayer::close() {
|
||||
return kIOSuccess;
|
||||
}
|
||||
|
||||
VMDPlayer::VMDStatus VMDPlayer::getStatus() const {
|
||||
if (!_isOpen) {
|
||||
return kVMDNotOpen;
|
||||
}
|
||||
if (_decoder->isPaused()) {
|
||||
return kVMDPaused;
|
||||
}
|
||||
if (_decoder->isPlaying()) {
|
||||
return kVMDPlaying;
|
||||
}
|
||||
if (_decoder->endOfVideo()) {
|
||||
return kVMDFinished;
|
||||
}
|
||||
return kVMDOpen;
|
||||
}
|
||||
|
||||
VMDPlayer::EventFlags VMDPlayer::kernelPlayUntilEvent(const EventFlags flags, const int16 lastFrameNo, const int16 yieldInterval) {
|
||||
assert(lastFrameNo >= -1);
|
||||
|
||||
|
||||
@@ -268,6 +268,15 @@ public:
|
||||
kEventFlagReverse = 0x80
|
||||
};
|
||||
|
||||
enum VMDStatus {
|
||||
kVMDNotOpen = 0,
|
||||
kVMDOpen = 1,
|
||||
kVMDPlaying = 2,
|
||||
kVMDPaused = 3,
|
||||
kVMDStopped = 4,
|
||||
kVMDFinished = 5
|
||||
};
|
||||
|
||||
VMDPlayer(SegManager *segMan, EventManager *eventMan);
|
||||
~VMDPlayer();
|
||||
|
||||
@@ -295,6 +304,11 @@ public:
|
||||
*/
|
||||
IOStatus close();
|
||||
|
||||
/**
|
||||
* Gets the playback status of the VMD player.
|
||||
*/
|
||||
VMDStatus getStatus() const;
|
||||
|
||||
// NOTE: Was WaitForEvent in SSCI
|
||||
EventFlags kernelPlayUntilEvent(const EventFlags flags, const int16 lastFrameNo, const int16 yieldInterval);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user