mirror of
https://github.com/vcmi/vcmi.git
synced 2025-04-13 11:40:38 +02:00
CVideoHandler: Use EVideoType::INTRO and EVideoType::SPELLBOOK
This commit is contained in:
parent
33e170d562
commit
70ce090bc4
@ -430,15 +430,15 @@ void playIntro()
|
||||
{
|
||||
auto audioData = CCS->videoh->getAudio(VideoPath::builtin("3DOLOGO.SMK"));
|
||||
int sound = CCS->soundh->playSound(audioData);
|
||||
if(CCS->videoh->openAndPlayVideo(VideoPath::builtin("3DOLOGO.SMK"), 0, 1, true, true, false))
|
||||
if(CCS->videoh->openAndPlayVideo(VideoPath::builtin("3DOLOGO.SMK"), 0, 1, EVideoType::INTRO))
|
||||
{
|
||||
audioData = CCS->videoh->getAudio(VideoPath::builtin("NWCLOGO.SMK"));
|
||||
sound = CCS->soundh->playSound(audioData);
|
||||
if (CCS->videoh->openAndPlayVideo(VideoPath::builtin("NWCLOGO.SMK"), 0, 1, true, true, false))
|
||||
if (CCS->videoh->openAndPlayVideo(VideoPath::builtin("NWCLOGO.SMK"), 0, 1, EVideoType::INTRO))
|
||||
{
|
||||
audioData = CCS->videoh->getAudio(VideoPath::builtin("H3INTRO.SMK"));
|
||||
sound = CCS->soundh->playSound(audioData);
|
||||
CCS->videoh->openAndPlayVideo(VideoPath::builtin("H3INTRO.SMK"), 0, 1, true, true, false);
|
||||
CCS->videoh->openAndPlayVideo(VideoPath::builtin("H3INTRO.SMK"), 0, 1, EVideoType::INTRO);
|
||||
}
|
||||
}
|
||||
CCS->soundh->stopSound(sound);
|
||||
|
@ -647,7 +647,7 @@ bool CVideoPlayer::playVideo(int x, int y, bool stopOnKey)
|
||||
|
||||
SDL_Rect rect = CSDL_Ext::toSDL(pos);
|
||||
|
||||
if(overlayVideo)
|
||||
if(overlay)
|
||||
{
|
||||
SDL_RenderFillRect(mainRenderer, &rect);
|
||||
}
|
||||
@ -679,9 +679,24 @@ bool CVideoPlayer::playVideo(int x, int y, bool stopOnKey)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CVideoPlayer::openAndPlayVideo(const VideoPath & name, int x, int y, bool stopOnKey, bool scale, bool overlay)
|
||||
bool CVideoPlayer::openAndPlayVideo(const VideoPath & name, int x, int y, EVideoType videoType)
|
||||
{
|
||||
overlayVideo = overlay;
|
||||
bool scale;
|
||||
bool stopOnKey;
|
||||
|
||||
switch(videoType)
|
||||
{
|
||||
case EVideoType::INTRO:
|
||||
stopOnKey = true;
|
||||
scale = true;
|
||||
overlay = false;
|
||||
break;
|
||||
case EVideoType::SPELLBOOK:
|
||||
default:
|
||||
stopOnKey = false;
|
||||
scale = false;
|
||||
overlay = true;
|
||||
}
|
||||
open(name, false, true, scale);
|
||||
bool ret = playVideo(x, y, stopOnKey);
|
||||
close();
|
||||
|
@ -15,6 +15,12 @@
|
||||
struct SDL_Surface;
|
||||
struct SDL_Texture;
|
||||
|
||||
enum class EVideoType : ui8
|
||||
{
|
||||
INTRO = 0, // use entire window: stopOnKey = true, scale = true, overlay = false
|
||||
SPELLBOOK // overlay video: stopOnKey = false, scale = false, overlay = true
|
||||
};
|
||||
|
||||
class IVideoPlayer : boost::noncopyable
|
||||
{
|
||||
public:
|
||||
@ -33,7 +39,7 @@ class IMainVideoPlayer : public IVideoPlayer
|
||||
public:
|
||||
virtual ~IMainVideoPlayer() = default;
|
||||
virtual void update(int x, int y, SDL_Surface *dst, bool forceRedraw, bool update = true, std::function<void()> restart = nullptr){}
|
||||
virtual bool openAndPlayVideo(const VideoPath & name, int x, int y, bool stopOnKey = false, bool scale = false, bool overlay = true)
|
||||
virtual bool openAndPlayVideo(const VideoPath & name, int x, int y, EVideoType videoType)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -89,7 +95,7 @@ class CVideoPlayer final : public IMainVideoPlayer
|
||||
/// video playback currnet progress, in seconds
|
||||
double frameTime;
|
||||
bool doLoop; // loop through video
|
||||
bool overlayVideo;
|
||||
bool overlay;
|
||||
|
||||
bool playVideo(int x, int y, bool stopOnKey);
|
||||
bool open(const VideoPath & fname, bool loop, bool useOverlay = false, bool scale = false);
|
||||
@ -107,7 +113,7 @@ public:
|
||||
void update(int x, int y, SDL_Surface *dst, bool forceRedraw, bool update = true, std::function<void()> onVideoRestart = nullptr) override; //moves to next frame if appropriate, and blits it or blits only if redraw parameter is set true
|
||||
|
||||
// Opens video, calls playVideo, closes video; returns playVideo result (if whole video has been played)
|
||||
bool openAndPlayVideo(const VideoPath & name, int x, int y, bool stopOnKey = false, bool scale = false, bool overlay = true) override;
|
||||
bool openAndPlayVideo(const VideoPath & name, int x, int y, EVideoType videoType) override;
|
||||
|
||||
std::pair<std::unique_ptr<ui8 []>, si64> getAudio(const VideoPath & videoToOpen) override;
|
||||
|
||||
|
@ -519,13 +519,13 @@ void CSpellWindow::setCurrentPage(int value)
|
||||
void CSpellWindow::turnPageLeft()
|
||||
{
|
||||
if(settings["video"]["spellbookAnimation"].Bool() && !isBigSpellbook)
|
||||
CCS->videoh->openAndPlayVideo(VideoPath::builtin("PGTRNLFT.SMK"), pos.x+13, pos.y+15);
|
||||
CCS->videoh->openAndPlayVideo(VideoPath::builtin("PGTRNLFT.SMK"), pos.x+13, pos.y+15, EVideoType::SPELLBOOK);
|
||||
}
|
||||
|
||||
void CSpellWindow::turnPageRight()
|
||||
{
|
||||
if(settings["video"]["spellbookAnimation"].Bool() && !isBigSpellbook)
|
||||
CCS->videoh->openAndPlayVideo(VideoPath::builtin("PGTRNRGH.SMK"), pos.x+13, pos.y+15);
|
||||
CCS->videoh->openAndPlayVideo(VideoPath::builtin("PGTRNRGH.SMK"), pos.x+13, pos.y+15, EVideoType::SPELLBOOK);
|
||||
}
|
||||
|
||||
void CSpellWindow::keyPressed(EShortcut key)
|
||||
|
Loading…
x
Reference in New Issue
Block a user