Skip to content

Commit ef67e3d

Browse files
committed
Update libscratchcpp to latest master
1 parent 0461bba commit ef67e3d

File tree

8 files changed

+61
-31
lines changed

8 files changed

+61
-31
lines changed

libscratchcpp

Submodule libscratchcpp updated 111 files

src/projectloader.cpp

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ using namespace libscratchcpp;
2020
ProjectLoader::ProjectLoader(QObject *parent) :
2121
QObject(parent)
2222
{
23-
m_project.setDownloadProgressCallback([this](unsigned int finished, unsigned int all) {
23+
m_project.downloadProgressChanged().connect([this](unsigned int finished, unsigned int all) {
2424
if (finished != m_downloadedAssets) {
2525
m_downloadedAssets = finished;
2626
emit downloadedAssetsChanged();
@@ -208,12 +208,8 @@ void ProjectLoader::stop()
208208

209209
void ProjectLoader::answerQuestion(const QString &answer)
210210
{
211-
if (m_engine) {
212-
auto f = m_engine->questionAnswered();
213-
214-
if (f)
215-
f(answer.toStdString());
216-
}
211+
if (m_engine)
212+
m_engine->questionAnswered()(answer.toStdString());
217213
}
218214

219215
void ProjectLoader::timerEvent(QTimerEvent *event)
@@ -255,16 +251,11 @@ void ProjectLoader::load()
255251
m_engine->setCloneLimit(m_cloneLimit);
256252
m_engine->setSpriteFencingEnabled(m_spriteFencing);
257253

258-
auto redrawHandler = std::bind(&ProjectLoader::redraw, this);
259-
m_engine->setRedrawHandler(std::function<void()>(redrawHandler));
260-
261-
auto addMonitorHandler = std::bind(&ProjectLoader::addMonitor, this, std::placeholders::_1);
262-
m_engine->setAddMonitorHandler(std::function<void(Monitor *)>(addMonitorHandler));
263-
264-
auto removeMonitorHandler = std::bind(&ProjectLoader::removeMonitor, this, std::placeholders::_1, std::placeholders::_2);
265-
m_engine->setRemoveMonitorHandler(std::function<void(Monitor *, IMonitorHandler *)>(removeMonitorHandler));
254+
m_engine->aboutToRender().connect(&ProjectLoader::redraw, this);
255+
m_engine->monitorAdded().connect(&ProjectLoader::addMonitor, this);
256+
m_engine->monitorRemoved().connect(&ProjectLoader::removeMonitor, this);
266257

267-
m_engine->setQuestionAsked([this](const std::string &question) { emit questionAsked(QString::fromStdString(question)); });
258+
m_engine->questionAsked().connect([this](const std::string &question) { emit questionAsked(QString::fromStdString(question)); });
268259

269260
// Load targets
270261
const auto &targets = m_engine->targets();

src/spritemodel.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,16 @@ libscratchcpp::Rect SpriteModel::fastBoundingRect() const
150150
return m_renderedTarget->getFastBounds();
151151
}
152152

153+
bool SpriteModel::touchingClones(const std::vector<libscratchcpp::Sprite *> &clones) const
154+
{
155+
return false;
156+
}
157+
158+
bool SpriteModel::touchingPoint(double x, double y) const
159+
{
160+
return false;
161+
}
162+
153163
libscratchcpp::Sprite *SpriteModel::sprite() const
154164
{
155165
return m_sprite;

src/spritemodel.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ class SpriteModel
5757
libscratchcpp::Rect boundingRect() const override;
5858
libscratchcpp::Rect fastBoundingRect() const override;
5959

60+
bool touchingClones(const std::vector<libscratchcpp::Sprite *> &clones) const override;
61+
bool touchingPoint(double x, double y) const override;
62+
6063
libscratchcpp::Sprite *sprite() const;
6164

6265
IRenderedTarget *renderedTarget() const;

src/stagemodel.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,26 @@ void StageModel::onBubbleTextChanged(const std::string &text)
7777
}
7878
}
7979

80+
libscratchcpp::Rect StageModel::boundingRect() const
81+
{
82+
return libscratchcpp::Rect();
83+
}
84+
85+
libscratchcpp::Rect StageModel::fastBoundingRect() const
86+
{
87+
return libscratchcpp::Rect();
88+
}
89+
90+
bool StageModel::touchingClones(const std::vector<libscratchcpp::Sprite *> &clones) const
91+
{
92+
return false;
93+
}
94+
95+
bool StageModel::touchingPoint(double x, double y) const
96+
{
97+
return false;
98+
}
99+
80100
void StageModel::loadCostume()
81101
{
82102
if (m_renderedTarget && m_stage)

src/stagemodel.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ class StageModel
4040
void onBubbleTypeChanged(libscratchcpp::Target::BubbleType type) override;
4141
void onBubbleTextChanged(const std::string &text) override;
4242

43+
libscratchcpp::Rect boundingRect() const override;
44+
libscratchcpp::Rect fastBoundingRect() const override;
45+
46+
bool touchingClones(const std::vector<libscratchcpp::Sprite *> &clones) const override;
47+
bool touchingPoint(double x, double y) const override;
48+
4349
Q_INVOKABLE void loadCostume();
4450

4551
libscratchcpp::Stage *stage() const;

test/mocks/enginemock.h

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ class EngineMock : public IEngine
3434
MOCK_METHOD(void, runEventLoop, (), (override));
3535
MOCK_METHOD(void, stopEventLoop, (), (override));
3636

37-
MOCK_METHOD(void, setRedrawHandler, (const std::function<void()> &), (override));
37+
MOCK_METHOD(sigslot::signal<> &, aboutToRender, (), (override));
38+
MOCK_METHOD(sigslot::signal<VirtualMachine *> &, threadAboutToStop, (), (override));
3839

3940
MOCK_METHOD(bool, isRunning, (), (const, override));
4041

@@ -86,8 +87,10 @@ class EngineMock : public IEngine
8687

8788
MOCK_METHOD(void, registerSection, (std::shared_ptr<IBlockSection>), (override));
8889
MOCK_METHOD(unsigned int, functionIndex, (BlockFunc), (override));
90+
MOCK_METHOD(const std::vector<BlockFunc> &, blockFunctions, (), (const, override));
8991

9092
MOCK_METHOD(void, addCompileFunction, (IBlockSection *, const std::string &, BlockComp), (override));
93+
MOCK_METHOD(void, addHatPredicateCompileFunction, (IBlockSection *, const std::string &, HatPredicateCompileFunc), (override));
9194
MOCK_METHOD(void, addMonitorNameFunction, (IBlockSection *, const std::string &, MonitorNameFunc), (override));
9295
MOCK_METHOD(void, addMonitorChangeFunction, (IBlockSection *, const std::string &, MonitorChangeFunc), (override));
9396
MOCK_METHOD(void, addHatBlock, (IBlockSection *, const std::string &), (override));
@@ -107,6 +110,7 @@ class EngineMock : public IEngine
107110
MOCK_METHOD(void, addCloneInitScript, (std::shared_ptr<Block>), (override));
108111
MOCK_METHOD(void, addKeyPressScript, (std::shared_ptr<Block>, int), (override));
109112
MOCK_METHOD(void, addTargetClickScript, (std::shared_ptr<Block>), (override));
113+
MOCK_METHOD(void, addWhenGreaterThanScript, (std::shared_ptr<Block>), (override));
110114

111115
MOCK_METHOD(const std::vector<std::shared_ptr<Target>> &, targets, (), (const, override));
112116
MOCK_METHOD(void, setTargets, (const std::vector<std::shared_ptr<Target>> &), (override));
@@ -123,14 +127,11 @@ class EngineMock : public IEngine
123127

124128
MOCK_METHOD(const std::vector<std::shared_ptr<Monitor>> &, monitors, (), (const, override));
125129
MOCK_METHOD(void, setMonitors, (const std::vector<std::shared_ptr<Monitor>> &), (override));
126-
MOCK_METHOD(void, setAddMonitorHandler, (const std::function<void(Monitor *)> &), (override));
127-
MOCK_METHOD(void, setRemoveMonitorHandler, (const std::function<void(Monitor *, IMonitorHandler *)> &), (override));
130+
MOCK_METHOD(sigslot::signal<Monitor *> &, monitorAdded, (), (override));
131+
MOCK_METHOD((sigslot::signal<Monitor *, IMonitorHandler *> &), monitorRemoved, (), (override));
128132

129-
MOCK_METHOD(const std::function<void(const std::string &)> &, questionAsked, (), (const, override));
130-
MOCK_METHOD(void, setQuestionAsked, (const std::function<void(const std::string &)> &), (override));
131-
132-
MOCK_METHOD(const std::function<void(const std::string &)> &, questionAnswered, (), (const, override));
133-
MOCK_METHOD(void, setQuestionAnswered, (const std::function<void(const std::string &)> &), (override));
133+
MOCK_METHOD(sigslot::signal<const std::string &> &, questionAsked, (), (override));
134+
MOCK_METHOD(sigslot::signal<const std::string &> &, questionAnswered, (), (override));
134135

135136
MOCK_METHOD(std::vector<std::string> &, extensions, (), (const, override));
136137
MOCK_METHOD(void, setExtensions, (const std::vector<std::string> &), (override));

test/projectloader/projectloader_test.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ TEST_F(ProjectLoaderTest, Load)
9696
ASSERT_EQ(sprites[1]->sprite(), engine->targetAt(2));
9797

9898
const auto &monitors = loader.monitorList();
99-
ASSERT_EQ(monitors.size(), 10);
99+
ASSERT_EQ(monitors.size(), 11);
100100

101101
ListMonitorModel *listMonitorModel = dynamic_cast<ListMonitorModel *>(monitors[0]);
102102
ASSERT_EQ(listMonitorModel->monitor(), engine->monitors().at(0).get());
@@ -179,10 +179,8 @@ TEST_F(ProjectLoaderTest, QuestionAsked)
179179
load(&loader, "load_test.sb3");
180180

181181
auto engine = loader.engine();
182-
auto f = engine->questionAsked();
183-
ASSERT_TRUE(f);
184182
ASSERT_TRUE(spy.isEmpty());
185-
f("test");
183+
engine->questionAsked()("test");
186184
ASSERT_EQ(spy.count(), 1);
187185

188186
auto args = spy.takeFirst();
@@ -197,8 +195,9 @@ TEST_F(ProjectLoaderTest, AnswerQuestion)
197195
loader.setEngine(&engine);
198196

199197
AnswerQuestionMock mock;
200-
std::function<void(const std::string &)> f = std::bind(&AnswerQuestionMock::answer, &mock, std::placeholders::_1);
201-
EXPECT_CALL(engine, questionAnswered()).WillOnce(ReturnRef(f));
198+
sigslot::signal<const std::string &> answered;
199+
answered.connect(&AnswerQuestionMock::answer, &mock);
200+
EXPECT_CALL(engine, questionAnswered()).WillOnce(ReturnRef(answered));
202201
EXPECT_CALL(mock, answer("hello"));
203202
loader.answerQuestion("hello");
204203
}

0 commit comments

Comments
 (0)