From 29284c0b21408131b280744f58b78b2792d6a826 Mon Sep 17 00:00:00 2001 From: TrickyLeifa Date: Thu, 23 May 2024 00:02:07 +0200 Subject: Removed theme submodule, ... * Removed theme submodule. * This should be handled by the CI. * Fixed effects not disappearing when they should (cull / repeat) --- src/animationlayer.cpp | 21 ++++++++++++++++++--- src/animationlayer.h | 2 ++ src/courtroom.cpp | 4 ++-- 3 files changed, 22 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/animationlayer.cpp b/src/animationlayer.cpp index a21e20c..708aef2 100644 --- a/src/animationlayer.cpp +++ b/src/animationlayer.cpp @@ -143,6 +143,11 @@ void AnimationLayer::jumpToFrame(int number) } } +bool AnimationLayer::isPlayOnce() +{ + return m_play_once; +} + void AnimationLayer::setPlayOnce(bool enabled) { m_play_once = enabled; @@ -324,6 +329,7 @@ void AnimationLayer::frameTicker() return; } + stopPlayback(); return; } @@ -595,11 +601,20 @@ void BackgroundAnimationLayer::loadAndPlayAnimation(QString fileName) } #endif - setFileName(file_path); + bool is_different_file = file_path != this->fileName(); + if (is_different_file) + { + setFileName(file_path); + } + VPath design_path = ao_app->get_background_path("design.ini"); setTransformationMode(ao_app->get_scaling(ao_app->read_design_ini("scaling", design_path))); setStretchToFit(ao_app->read_design_ini("stretch", design_path).startsWith("true")); - startPlayback(); + + if (is_different_file) + { + startPlayback(); + } } SplashAnimationLayer::SplashAnimationLayer(AOApplication *ao_app, QWidget *parent) @@ -640,7 +655,7 @@ void EffectAnimationLayer::setHideWhenStopped(bool enabled) void EffectAnimationLayer::maybeHide() { - if (m_hide_when_stopped) + if (m_hide_when_stopped && isPlayOnce()) { hide(); } diff --git a/src/animationlayer.h b/src/animationlayer.h index c67f702..820703d 100644 --- a/src/animationlayer.h +++ b/src/animationlayer.h @@ -62,6 +62,8 @@ public: int currentFrameNumber(); void jumpToFrame(int number); + bool isPlayOnce(); + void setPlayOnce(bool enabled); void setStretchToFit(bool enabled); void setResetCacheWhenStopped(bool enabled); diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 1346797..4540c27 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -3157,6 +3157,8 @@ void Courtroom::do_effect(QString fx_path, QString fx_sound, QString p_char, QSt QString effect = ao_app->get_effect(fx_path, p_char, p_folder); if (effect == "") { + ui_vp_effect->stopPlayback(); + ui_vp_effect->hide(); return; } @@ -3173,8 +3175,6 @@ void Courtroom::do_effect(QString fx_path, QString fx_sound, QString p_char, QSt ui_vp_effect->setTransformationMode(ao_app->get_scaling(ao_app->get_effect_property(fx_path, p_char, p_folder, "scaling"))); ui_vp_effect->setStretchToFit(ao_app->get_effect_property(fx_path, p_char, p_folder, "stretch").startsWith("true")); ui_vp_effect->setFlipped(ao_app->get_effect_property(fx_path, p_char, p_folder, "respect_flip").startsWith("true") && m_chatmessage[FLIP].toInt() == 1); - ui_vp_effect->setPlayOnce(false); // The effects themselves dictate whether or not they're looping. - // Static effects will linger. bool looping = ao_app->get_effect_property(fx_path, p_char, p_folder, "loop").startsWith("true"); -- cgit