File tree Expand file tree Collapse file tree 3 files changed +40
-5
lines changed Expand file tree Collapse file tree 3 files changed +40
-5
lines changed Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ ProjectScene {
88 property int stageWidth: 480
99 property int stageHeight: 360
1010 property alias fps: loader .fps
11+ property alias turboMode: loader .turboMode
1112
1213 id: root
1314 width: stageWidth
Original file line number Diff line number Diff line change @@ -59,17 +59,26 @@ void ProjectLoader::setFileName(const QString &newFileName)
5959 m_loaded = m_project.load ();
6060 m_engine = m_project.engine ().get ();
6161
62- m_engine->setFps (m_fps);
63-
64- auto handler = std::bind (&ProjectLoader::emitTick, this );
65- m_engine->setRedrawHandler (std::function<void ()>(handler));
66-
6762 // Delete old sprites
6863 for (SpriteModel *sprite : m_sprites)
6964 sprite->deleteLater ();
7065
7166 m_sprites.clear ();
7267
68+ if (!m_engine) {
69+ emit fileNameChanged ();
70+ emit loadedChanged ();
71+ emit engineChanged ();
72+ emit spritesChanged ();
73+ return ;
74+ }
75+
76+ m_engine->setFps (m_fps);
77+ m_engine->setTurboModeEnabled (m_turboMode);
78+
79+ auto handler = std::bind (&ProjectLoader::emitTick, this );
80+ m_engine->setRedrawHandler (std::function<void ()>(handler));
81+
7382 // Load targets
7483 const auto &targets = m_engine->targets ();
7584
@@ -181,3 +190,21 @@ void ProjectLoader::setFps(double newFps)
181190
182191 emit fpsChanged ();
183192}
193+
194+ bool ProjectLoader::turboMode () const
195+ {
196+ return m_turboMode;
197+ }
198+
199+ void ProjectLoader::setTurboMode (bool newTurboMode)
200+ {
201+ if (m_turboMode == newTurboMode)
202+ return ;
203+
204+ m_turboMode = newTurboMode;
205+
206+ if (m_engine)
207+ m_engine->setTurboModeEnabled (m_turboMode);
208+
209+ emit turboModeChanged ();
210+ }
Original file line number Diff line number Diff line change @@ -24,6 +24,7 @@ class ProjectLoader : public QObject
2424 Q_PROPERTY (StageModel *stage READ stage NOTIFY stageChanged)
2525 Q_PROPERTY (QQmlListProperty<SpriteModel> sprites READ sprites NOTIFY spritesChanged)
2626 Q_PROPERTY (double fps READ fps WRITE setFps NOTIFY fpsChanged)
27+ Q_PROPERTY (bool turboMode READ turboMode WRITE setTurboMode NOTIFY turboModeChanged)
2728
2829 public:
2930 explicit ProjectLoader (QObject *parent = nullptr );
@@ -49,6 +50,9 @@ class ProjectLoader : public QObject
4950 double fps () const ;
5051 void setFps (double newFps);
5152
53+ bool turboMode () const ;
54+ void setTurboMode (bool newTurboMode);
55+
5256 signals:
5357 void fileNameChanged ();
5458 void loadedChanged ();
@@ -57,6 +61,8 @@ class ProjectLoader : public QObject
5761 void spritesChanged ();
5862 void fpsChanged ();
5963
64+ void turboModeChanged ();
65+
6066 protected:
6167 void timerEvent (QTimerEvent *event) override ;
6268
@@ -73,6 +79,7 @@ class ProjectLoader : public QObject
7379 QList<SpriteModel *> m_sprites;
7480 QFuture<void > m_eventLoop;
7581 double m_fps = 30 ;
82+ bool m_turboMode = false ;
7683};
7784
7885} // namespace scratchcppgui
You can’t perform that action at this time.
0 commit comments