aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/animationlayer.cpp21
-rw-r--r--src/animationlayer.h2
-rw-r--r--src/courtroom.cpp4
3 files changed, 22 insertions, 5 deletions
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");