aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/videoplayer.h
diff options
context:
space:
mode:
Diffstat (limited to 'engines/gob/videoplayer.h')
-rw-r--r--engines/gob/videoplayer.h75
1 files changed, 62 insertions, 13 deletions
diff --git a/engines/gob/videoplayer.h b/engines/gob/videoplayer.h
index 7b9a3ca687..fd3c68aa1a 100644
--- a/engines/gob/videoplayer.h
+++ b/engines/gob/videoplayer.h
@@ -26,6 +26,8 @@
#ifndef GOB_VIDEOPLAYER_H
#define GOB_VIDEOPLAYER_H
+#include "common/array.h"
+
#include "gob/coktelvideo.h"
#include "gob/dataio.h"
@@ -51,34 +53,81 @@ public:
VideoPlayer(GobEngine *vm);
~VideoPlayer();
- bool openVideo(const char *video, int16 x = -1, int16 y = -1,
+ bool primaryOpen(const char *videoFile, int16 x = -1, int16 y = -1,
int16 flags = kFlagFrontSurface, Type which = kVideoTypeTry);
-
- void play(int16 startFrame = -1, int16 lastFrame = -1, int16 breakKey = 27,
+ void primaryPlay(int16 startFrame = -1, int16 lastFrame = -1, int16 breakKey = 27,
uint16 palCmd = 8, int16 palStart = 0, int16 palEnd = 255,
int16 palFrame = -1, int16 endFrame = -1, bool fade = false,
int16 reverseTo = -1);
-
- int16 getFramesCount() const;
- int16 getCurrentFrame() const;
- void writeVideoInfo(const char *video, int16 varX, int16 varY,
+ void primaryClose();
+
+ int slotOpen(const char *videoFile, Type which = kVideoTypeTry);
+ void slotPlay(int slot, int16 frame = -1);
+ void slotClose(int slot);
+ void slotCopyFrame(int slot, byte *dest,
+ uint16 left, uint16 top, uint16 width, uint16 height,
+ uint16 x, uint16 y, uint16 pitch, int16 transp = -1);
+ void slotCopyPalette(int slot, int16 palStart = -1, int16 palEnd = -1);
+
+ bool slotIsOpen(int slot) const;
+
+ uint16 getFlags(int slot = -1) const;
+ int16 getFramesCount(int slot = -1) const;
+ int16 getCurrentFrame(int slot = -1) const;
+ int16 getWidth(int slot = -1) const;
+ int16 getHeight(int slot = -1) const;
+ int16 getDefaultX(int slot = -1) const;
+ int16 getDefaultY(int slot = -1) const;
+
+ void writeVideoInfo(const char *videoFile, int16 varX, int16 varY,
int16 varFrames, int16 varWidth, int16 varHeight);
- void closeVideo();
-
private:
+ class Video {
+ public:
+ Video(GobEngine *vm);
+ ~Video();
+
+ bool open(const char *fileName, Type which);
+ void close();
+
+ bool isOpen() const;
+
+ const char *getFileName() const;
+ CoktelVideo *getVideo();
+ const CoktelVideo *getVideo() const;
+ CoktelVideo::State getState() const;
+
+ int16 getDefaultX() const;
+ int16 getDefaultY() const;
+
+ CoktelVideo::State nextFrame();
+
+ private:
+ GobEngine *_vm;
+
+ char *_fileName;
+ DataStream *_stream;
+ CoktelVideo *_video;
+ CoktelVideo::State _state;
+ int16 _defaultX, _defaultY;
+ };
+
static const char *_extensions[];
GobEngine *_vm;
- char _curFile[256];
- DataStream *_stream;
- CoktelVideo *_video;
+ Common::Array<Video *> _videoSlots;
+ Video *_primaryVideo;
bool _backSurf;
bool _needBlit;
bool _noCursorSwitch;
- void copyPalette(int16 palStart = -1, int16 palEnd = -1);
+ bool findFile(char *fileName, Type &which);
+
+ const Video *getVideoBySlot(int slot = -1) const;
+
+ void copyPalette(CoktelVideo &video, int16 palStart = -1, int16 palEnd = -1);
bool doPlay(int16 frame, int16 breakKey,
uint16 palCmd, int16 palStart, int16 palEnd,
int16 palFrame, int16 endFrame);