@@ -58,15 +58,31 @@ void ProjectLoader::setFileName(const QString &newFileName)
5858 m_project.setFileName (m_fileName.toStdString ());
5959 m_loaded = m_project.load ();
6060 m_engine = m_project.engine ().get ();
61- auto handler = std::bind (&ProjectLoader::emitTick, this );
62- m_engine->setRedrawHandler (std::function<void ()>(handler));
6361
6462 // Delete old sprites
6563 for (SpriteModel *sprite : m_sprites)
6664 sprite->deleteLater ();
6765
6866 m_sprites.clear ();
6967
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+ m_engine->setStageWidth (m_stageWidth);
79+ m_engine->setStageHeight (m_stageHeight);
80+ m_engine->setCloneLimit (m_cloneLimit);
81+ m_engine->setSpriteFencingEnabled (m_spriteFencing);
82+
83+ auto handler = std::bind (&ProjectLoader::emitTick, this );
84+ m_engine->setRedrawHandler (std::function<void ()>(handler));
85+
7086 // Load targets
7187 const auto &targets = m_engine->targets ();
7288
@@ -160,3 +176,111 @@ void ProjectLoader::emitTick()
160176 renderedTarget->loadProperties ();
161177 }
162178}
179+
180+ double ProjectLoader::fps () const
181+ {
182+ return m_fps;
183+ }
184+
185+ void ProjectLoader::setFps (double newFps)
186+ {
187+ if (qFuzzyCompare (m_fps, newFps))
188+ return ;
189+
190+ m_fps = newFps;
191+
192+ if (m_engine)
193+ m_engine->setFps (m_fps);
194+
195+ emit fpsChanged ();
196+ }
197+
198+ bool ProjectLoader::turboMode () const
199+ {
200+ return m_turboMode;
201+ }
202+
203+ void ProjectLoader::setTurboMode (bool newTurboMode)
204+ {
205+ if (m_turboMode == newTurboMode)
206+ return ;
207+
208+ m_turboMode = newTurboMode;
209+
210+ if (m_engine)
211+ m_engine->setTurboModeEnabled (m_turboMode);
212+
213+ emit turboModeChanged ();
214+ }
215+
216+ unsigned int ProjectLoader::stageWidth () const
217+ {
218+ return m_stageWidth;
219+ }
220+
221+ void ProjectLoader::setStageWidth (unsigned int newStageWidth)
222+ {
223+ if (m_stageWidth == newStageWidth)
224+ return ;
225+
226+ m_stageWidth = newStageWidth;
227+
228+ if (m_engine)
229+ m_engine->setStageWidth (m_stageWidth);
230+
231+ emit stageWidthChanged ();
232+ }
233+
234+ unsigned int ProjectLoader::stageHeight () const
235+ {
236+ return m_stageHeight;
237+ }
238+
239+ void ProjectLoader::setStageHeight (unsigned int newStageHeight)
240+ {
241+ if (m_stageHeight == newStageHeight)
242+ return ;
243+
244+ m_stageHeight = newStageHeight;
245+
246+ if (m_engine)
247+ m_engine->setStageHeight (m_stageHeight);
248+
249+ emit stageHeightChanged ();
250+ }
251+
252+ int ProjectLoader::cloneLimit () const
253+ {
254+ return m_cloneLimit;
255+ }
256+
257+ void ProjectLoader::setCloneLimit (int newCloneLimit)
258+ {
259+ if (m_cloneLimit == newCloneLimit)
260+ return ;
261+
262+ m_cloneLimit = newCloneLimit;
263+
264+ if (m_engine)
265+ m_engine->setCloneLimit (m_cloneLimit);
266+
267+ emit cloneLimitChanged ();
268+ }
269+
270+ bool ProjectLoader::spriteFencing () const
271+ {
272+ return m_spriteFencing;
273+ }
274+
275+ void ProjectLoader::setSpriteFencing (bool newSpriteFencing)
276+ {
277+ if (m_spriteFencing == newSpriteFencing)
278+ return ;
279+
280+ m_spriteFencing = newSpriteFencing;
281+
282+ if (m_engine)
283+ m_engine->setSpriteFencingEnabled (m_spriteFencing);
284+
285+ emit spriteFencingChanged ();
286+ }
0 commit comments