diff --git a/RetroFE/Source/Graphics/Component/Component.h b/RetroFE/Source/Graphics/Component/Component.h index 2abd384..d68a5c2 100644 --- a/RetroFE/Source/Graphics/Component/Component.h +++ b/RetroFE/Source/Graphics/Component/Component.h @@ -54,6 +54,8 @@ public: virtual void setText(std::string text, int id = -1) {}; virtual void setImage(std::string filePath, int id = -1) {}; int getId( ); + virtual void setVolume(double volume) {}; + virtual double getVolume() {return 0.0;}; protected: Page &page; diff --git a/RetroFE/Source/Graphics/Component/ReloadableMedia.cpp b/RetroFE/Source/Graphics/Component/ReloadableMedia.cpp index b6354e6..cf6b78a 100644 --- a/RetroFE/Source/Graphics/Component/ReloadableMedia.cpp +++ b/RetroFE/Source/Graphics/Component/ReloadableMedia.cpp @@ -83,6 +83,7 @@ void ReloadableMedia::update(float dt) baseViewInfo.ImageHeight = loadedComponent_->baseViewInfo.ImageHeight; } + static_cast(loadedComponent_)->setVolume(volume_); loadedComponent_->update(dt); } @@ -456,3 +457,15 @@ void ReloadableMedia::draw() loadedComponent_->draw(); } } + + +void ReloadableMedia::setVolume(double volume) +{ + volume_ = volume; +} + + +double ReloadableMedia::getVolume() +{ + return volume_; +} diff --git a/RetroFE/Source/Graphics/Component/ReloadableMedia.h b/RetroFE/Source/Graphics/Component/ReloadableMedia.h index 8d28411..66a3a89 100644 --- a/RetroFE/Source/Graphics/Component/ReloadableMedia.h +++ b/RetroFE/Source/Graphics/Component/ReloadableMedia.h @@ -36,6 +36,8 @@ public: Component *findComponent(std::string collection, std::string type, std::string basename, std::string filepath, bool systemMode); void enableTextFallback_(bool value); + void setVolume(double volume); + double getVolume(); private: void reloadTexture(); @@ -55,4 +57,5 @@ private: std::string currentCollection_; Page *page_; int displayOffset_; + double volume_; }; diff --git a/RetroFE/Source/Graphics/Component/VideoComponent.cpp b/RetroFE/Source/Graphics/Component/VideoComponent.cpp index 00f4a9e..76423b9 100644 --- a/RetroFE/Source/Graphics/Component/VideoComponent.cpp +++ b/RetroFE/Source/Graphics/Component/VideoComponent.cpp @@ -51,6 +51,7 @@ void VideoComponent::update(float dt) } if(isPlaying_) { + videoInst_->setVolume(volume_); videoInst_->update(dt); // video needs to run a frame to start getting size info diff --git a/RetroFE/Source/Graphics/PageBuilder.cpp b/RetroFE/Source/Graphics/PageBuilder.cpp index de30de2..934455d 100644 --- a/RetroFE/Source/Graphics/PageBuilder.cpp +++ b/RetroFE/Source/Graphics/PageBuilder.cpp @@ -767,9 +767,9 @@ void PageBuilder::loadReloadableImages(xml_node<> *layout, std::string tagName, static_cast(c)->enableTextFallback_(false); } - xml_attribute<> *volumeXml = componentXml->first_attribute("volume"); - if(volumeXml) - static_cast(c)->setVolume(Utils::convertFloat(volumeXml->value())); + xml_attribute<> *volumeXml = componentXml->first_attribute("volume"); + if(volumeXml) + static_cast(c)->setVolume(Utils::convertFloat(volumeXml->value())); } if(c) diff --git a/RetroFE/Source/Video/IVideo.h b/RetroFE/Source/Video/IVideo.h index c0417b7..88ee258 100644 --- a/RetroFE/Source/Video/IVideo.h +++ b/RetroFE/Source/Video/IVideo.h @@ -31,4 +31,5 @@ public: virtual void draw() = 0; virtual int getHeight() = 0; virtual int getWidth() = 0; + virtual void setVolume(double volume) = 0; };