diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerBink.h b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerBink.h index 77e1bf49..031499b3 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerBink.h +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/FeatureLib/pfSurface/plLayerBink.h @@ -50,7 +50,7 @@ class plLayerBink : public plLayerMovie protected: virtual Int32 ISecsToFrame(float secs) { return 0; } virtual hsBool IInit() { return true; } - virtual hsBool IGetCurrentFrame() { return 0; } + virtual hsBool IGetCurrentFrame() { return true; } virtual hsBool IRelease() { return true; } public: diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plBinkPlayer.h b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plBinkPlayer.h index bb631c55..7315df58 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plBinkPlayer.h +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/PubUtilLib/plPipeline/plBinkPlayer.h @@ -57,6 +57,9 @@ class plBinkPlayer { public: + plBinkPlayer() : fFileName(nil) { } + ~plBinkPlayer() { delete [] fFileName; } + static bool Init( hsWindowHndl hWnd) { return true; } static bool DeInit() { return true; } @@ -67,15 +70,28 @@ class plBinkPlayer void SetDefaults() { } - bool Start(plPipeline* pipe, hsWindowHndl hWnd) { return true; } + bool Start(plPipeline* pipe, hsWindowHndl hWnd) { return false; } - bool NextFrame() { return false; } + bool NextFrame() { + // we have reached the end + return Stop(); + } - bool Pause(bool on) { return true; } + bool Pause(bool on) { return false; } - bool Stop() { return true; } + bool Stop() { + for (int i = 0; i < fCallbacks.GetCount(); i++) + fCallbacks[i]->Send(); + fCallbacks.Reset(); + delete [] fFileName; + fFileName = nil; + return false; + } - void SetFileName(const char* filename) { } + void SetFileName(const char* filename) { + delete [] fFileName; + fFileName = hsStrcpy(filename); + } void SetColor(const hsColorRGBA& c) { } void SetPosition(float x, float y) { } void SetScale(float x, float y) { } @@ -86,14 +102,14 @@ class plBinkPlayer void SetPosition(const hsPoint2& p) { } void SetScale(const hsPoint2& s) { } - const char* GetFileName() const { return NULL; } + const char* GetFileName() const { return fFileName; } const hsColorRGBA GetColor() const { return hsColorRGBA(); } const hsPoint2 GetPosition() const { return hsPoint2(); } const hsPoint2 GetScale() const { return hsPoint2(); } float GetBackVolume() const { return 0.0f; } float GetForeVolume() const { return 0.0f; } - void AddCallback(plMessage* msg) { } + void AddCallback(plMessage* msg) { hsRefCnt_SafeRef(msg); fCallbacks.Append(msg); } UInt32 GetNumCallbacks() const { return 0; } plMessage* GetCallback(int i) const { return nil; } @@ -107,6 +123,10 @@ class plBinkPlayer hsColorRGBA GetFadeFromColor() const { return hsColorRGBA(); } float GetFadeToTime() const { return 0.0f; } hsColorRGBA GetFadeToColor() const { return hsColorRGBA(); } + + private: + char* fFileName; + hsTArray fCallbacks; }; #endif // plBinkPlayer_inc