aboutsummaryrefslogtreecommitdiff
path: root/sword1/animation.h
diff options
context:
space:
mode:
Diffstat (limited to 'sword1/animation.h')
-rw-r--r--sword1/animation.h65
1 files changed, 61 insertions, 4 deletions
diff --git a/sword1/animation.h b/sword1/animation.h
index b1a0ecc6a0..078311b739 100644
--- a/sword1/animation.h
+++ b/sword1/animation.h
@@ -26,10 +26,35 @@
#include "sword1/screen.h"
#include "sword1/sound.h"
+#include "sound/audiostream.h"
+namespace Sword1 {
+enum {
+ SEQ_FERRARI = 0,
+ SEQ_LADDER,
+ SEQ_STEPS,
+ SEQ_SEWER,
+ SEQ_INTRO,
+ SEQ_RIVER,
+ SEQ_TRUCK,
+ SEQ_GRAVE,
+ SEQ_MONTFCON,
+ SEQ_TAPESTRY,
+ SEQ_IRELAND,
+ SEQ_FINALE,
+ SEQ_HISTORY,
+ SEQ_SPANISH,
+ SEQ_WELL,
+ SEQ_CANDLE,
+ SEQ_GEODROP,
+ SEQ_VULTURE,
+ SEQ_ENDDEMO,
+ SEQ_CREDITS
+};
-namespace Sword1 {
+#define INTRO_LOGO_OVLS 12
+#define INTRO_TEXT_OVLS 8
class AnimationState : public Graphics::BaseAnimationState {
private:
@@ -38,6 +63,9 @@ private:
public:
AnimationState(Screen *scr, SoundMixer *snd, OSystem *sys);
~AnimationState();
+ void updateScreen();
+ OverlayColor *giveRgbBuffer(void);
+ bool soundFinished();
private:
void drawYUV(int width, int height, byte *const *dat);
@@ -45,19 +73,48 @@ private:
#ifdef BACKEND_8BIT
void setPalette(byte *pal);
#endif
+
+protected:
+ virtual AudioStream *createAudioStream(const char *name, void *arg);
};
class MoviePlayer {
+public:
+ MoviePlayer(Screen *scr, SoundMixer *snd, OSystem *sys);
+ ~MoviePlayer(void);
+ void play(uint32 id);
private:
+ void insertOverlay(OverlayColor *buf, uint8 *ovl, OverlayColor *pal);
+ void processFrame(uint32 animId, AnimationState *anim, uint32 frameNo);
+ bool initOverlays(uint32 id);
+ void decompressRle(uint8 *src, uint8 *dest, uint32 srcSize);
Screen *_scr;
SoundMixer *_snd;
OSystem *_sys;
+ static const char *_sequenceList[20];
+ uint8 *_logoOvls[INTRO_LOGO_OVLS];
+ OverlayColor *_introPal;
+};
+
+struct FileQueue {
+ AudioStream *stream;
+ FileQueue *next;
+};
+
+class SplittedAudioStream : public AudioStream {
public:
- MoviePlayer(Screen *scr, SoundMixer *snd, OSystem *sys);
- void play(const char *filename);
+ SplittedAudioStream(void);
+ ~SplittedAudioStream(void);
+ void appendStream(AudioStream *stream);
+ virtual int readBuffer(int16 *buffer, const int numSamples);
+ virtual bool isStereo(void) const;
+ virtual bool endOfData(void) const;
+ virtual int getRate(void) const;
+private:
+ FileQueue *_queue;
};
-} // End of namespace Sword2
+} // End of namespace Sword1
#endif