aboutsummaryrefslogtreecommitdiff
path: root/src/aolayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/aolayer.cpp')
-rw-r--r--src/aolayer.cpp28
1 files changed, 22 insertions, 6 deletions
diff --git a/src/aolayer.cpp b/src/aolayer.cpp
index 795274f5..2c6c9117 100644
--- a/src/aolayer.cpp
+++ b/src/aolayer.cpp
@@ -146,6 +146,7 @@ void BackgroundLayer::load_image(QString p_filename)
qDebug() << "[BackgroundLayer] BG loaded: " << p_filename;
#endif
start_playback(ao_app->get_image_suffix(ao_app->get_background_path(p_filename)));
+ play();
}
void CharLayer::load_image(QString p_filename, QString p_charname,
@@ -189,7 +190,7 @@ void CharLayer::load_image(QString p_filename, QString p_charname,
}
is_preanim = true;
play_once = true;
- preanim_timer->start(duration * tick_ms);
+ preanim_timer->start(duration);
}
#ifdef DEBUG_MOVIE
qDebug() << "[CharLayer] anim loaded: prefix " << prefix << " filename "
@@ -211,6 +212,7 @@ void CharLayer::load_image(QString p_filename, QString p_charname,
ao_app->get_theme_path(
"placeholder", ao_app->default_theme)}; // Default theme placeholder path
start_playback(ao_app->get_image_path(pathlist));
+ play();
}
void SplashLayer::load_image(QString p_filename, QString p_charname,
@@ -219,6 +221,7 @@ void SplashLayer::load_image(QString p_filename, QString p_charname,
transform_mode = ao_app->get_misc_scaling(p_miscname);
QString final_image = ao_app->get_image(p_filename, ao_app->current_theme, ao_app->get_subtheme(), ao_app->default_theme, p_miscname, p_charname, "placeholder");
start_playback(final_image);
+ play();
}
void EffectLayer::load_image(QString p_filename, bool p_looping)
@@ -230,13 +233,16 @@ void EffectLayer::load_image(QString p_filename, bool p_looping)
continuous = false;
force_continuous = true;
start_playback(p_filename); // handled in its own file before we see it
+ play();
}
void InterfaceLayer::load_image(QString p_filename, QString p_miscname)
{
+ last_path = "";
stretch = true;
QString final_image = ao_app->get_image(p_filename, ao_app->current_theme, ao_app->get_subtheme(), ao_app->default_theme, p_miscname);
start_playback(final_image);
+ play();
}
void StickerLayer::load_image(QString p_charname)
@@ -247,6 +253,7 @@ void StickerLayer::load_image(QString p_charname)
transform_mode = ao_app->get_misc_scaling(p_miscname);
QString final_image = ao_app->get_image("sticker/" + p_charname, ao_app->current_theme, ao_app->get_subtheme(), ao_app->default_theme, p_miscname);
start_playback(final_image);
+ play();
}
void CharLayer::start_playback(QString p_image)
@@ -257,6 +264,7 @@ void CharLayer::start_playback(QString p_image)
load_network_effects();
else // Use default ini FX
load_effects();
+ play();
}
void AOLayer::start_playback(QString p_image)
@@ -275,7 +283,7 @@ void AOLayer::start_playback(QString p_image)
actual_time.restart();
#endif
this->clear();
- freeze();
+ this->freeze();
movie_frames.clear();
movie_delays.clear();
QString scaling_override =
@@ -329,14 +337,12 @@ void AOLayer::start_playback(QString p_image)
}
else if (max_frames <= 1) {
duration = static_duration;
- play_once = false;
#ifdef DEBUG_MOVIE
qDebug() << "max_frames is <= 1, using static duration";
#endif
}
if (duration > 0 && cull_image == true)
shfx_timer->start(duration);
- play();
#ifdef DEBUG_MOVIE
qDebug() << max_frames << "Setting image to " << image_path
<< "Time taken to process image:" << actual_time.elapsed();
@@ -347,6 +353,12 @@ void AOLayer::start_playback(QString p_image)
void CharLayer::play()
{
+ if (max_frames <= 1) {
+ if (play_once) {
+ preanim_timer->start(qMax(0, duration));
+ }
+ return;
+ }
play_frame_effect(frame);
AOLayer::play();
}
@@ -354,8 +366,12 @@ void CharLayer::play()
void AOLayer::play()
{
if (max_frames <= 1) {
- if (play_once)
- ticker->start(tick_ms);
+ if (play_once) {
+ if (duration > 0)
+ ticker->start(duration);
+ else
+ preanim_done();
+ }
else
this->freeze();
}