Skip to content

Commit 423eb1d

Browse files
committed
Add turboMode property
1 parent 725bd50 commit 423eb1d

File tree

3 files changed

+40
-5
lines changed

3 files changed

+40
-5
lines changed

ScratchCPPGui/ProjectPlayer.qml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff 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

ScratchCPPGui/projectloader.cpp

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff 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+
}

ScratchCPPGui/projectloader.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)