File tree Expand file tree Collapse file tree 3 files changed +22
-8
lines changed
Expand file tree Collapse file tree 3 files changed +22
-8
lines changed Original file line number Diff line number Diff line change @@ -299,9 +299,13 @@ TextScroller::update(float dt_sec)
299299
300300 // use start or escape keys to exit
301301 if (controller->pressed_any (Control::START, Control::ESCAPE) &&
302- !m_fading && m_finish_script. empty () ) {
302+ !m_fading) {
303303 m_fading = true ;
304- ScreenManager::current ()->pop_screen (std::make_unique<FadeToBlack>(FadeToBlack::FADEOUT, 0 .5f ));
304+ if (!m_finish_script.empty ()) {
305+ Sector::get ().run_script (m_finish_script, " finishscript" );
306+ } else {
307+ ScreenManager::current ()->pop_screen (std::make_unique<FadeToBlack>(FadeToBlack::FADEOUT, 0 .5f ));
308+ }
305309 return ;
306310 }
307311 }
@@ -310,17 +314,17 @@ TextScroller::update(float dt_sec)
310314
311315 if (m_scroll < 0 )
312316 m_scroll = 0 ;
313- if (!m_finish_script.empty ())
314- {
315- Sector::get ().run_script (m_finish_script, " finishscript" );
316- }
317317 else
318318 {
319319 // close when done
320320 if (m_finished && !m_fading)
321321 {
322- m_fading = true ;
323- ScreenManager::current ()->pop_screen (std::unique_ptr<ScreenFade>(new FadeToBlack (FadeToBlack::FADEOUT, 0 .25f )));
322+ m_fading = true ;
323+ if (!m_finish_script.empty ()) {
324+ Sector::get ().run_script (m_finish_script, " finishscript" );
325+ } else {
326+ ScreenManager::current ()->pop_screen (std::unique_ptr<ScreenFade>(new FadeToBlack (FadeToBlack::FADEOUT, 0 .25f )));
327+ }
324328 }
325329 }
326330}
Original file line number Diff line number Diff line change @@ -51,6 +51,7 @@ class TextScroller : public LayerObject
5151
5252 inline void set_default_speed (float default_speed) { m_default_speed = default_speed; }
5353 inline bool is_finished () const { return m_finished; }
54+ inline bool is_fading () const { return m_fading; }
5455
5556protected:
5657 const Controller* controller;
Original file line number Diff line number Diff line change 3232#include " object/music_object.hpp"
3333#include " object/player.hpp"
3434#include " object/spawnpoint.hpp"
35+ #include " object/textscroller.hpp"
3536#include " sdk/integration.hpp"
3637#include " squirrel/squirrel_virtual_machine.hpp"
3738#include " supertux/constants.hpp"
@@ -312,6 +313,14 @@ GameSession::on_escape_press(bool force_quick_respawn)
312313 return ; // Don't let the player open the menu, when Tux is dying.
313314 }
314315
316+ int textscrollers = m_currentsector->get_object_count <TextScroller>([](const TextScroller& ts) {
317+ return !ts.is_fading ();
318+ });
319+
320+ if (textscrollers) {
321+ return ;
322+ }
323+
315324 if (m_level->m_is_in_cutscene && !m_level->m_skip_cutscene )
316325 {
317326 m_level->m_skip_cutscene = true ;
You can’t perform that action at this time.
0 commit comments