Skip to content

Commit 5d26a81

Browse files
committed
Add spriteFencingEnabled property to IEngine
1 parent f16cd17 commit 5d26a81

File tree

5 files changed

+35
-0
lines changed

5 files changed

+35
-0
lines changed

include/scratchcpp/iengine.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,12 @@ class LIBSCRATCHCPP_EXPORT IEngine
146146
/*! Sets the maximum number of clones (use -1 or any negative number to disable the limit). */
147147
virtual void setCloneLimit(int limit) = 0;
148148

149+
/*! Returns true if sprite fencing is enabled. */
150+
virtual bool spriteFencingEnabled() const = 0;
151+
152+
/*! Toggles sprite fencing. */
153+
virtual void setSpriteFencingEnabled(bool enable) = 0;
154+
149155
/*! Returns true if there are any running script of the broadcast with the given index. */
150156
virtual bool broadcastRunning(unsigned int index, VirtualMachine *sourceScript) = 0;
151157

src/engine/internal/engine.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,16 @@ void Engine::setCloneLimit(int limit)
491491
m_cloneLimit = limit < 0 ? -1 : limit;
492492
}
493493

494+
bool Engine::spriteFencingEnabled() const
495+
{
496+
return m_spriteFencingEnabled;
497+
}
498+
499+
void Engine::setSpriteFencingEnabled(bool enable)
500+
{
501+
m_spriteFencingEnabled = enable;
502+
}
503+
494504
bool Engine::broadcastRunning(unsigned int index, VirtualMachine *sourceScript)
495505
{
496506
if (index < 0 || index >= m_broadcasts.size())

src/engine/internal/engine.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ class Engine : public IEngine
6666
int cloneLimit() const override;
6767
void setCloneLimit(int limit) override;
6868

69+
bool spriteFencingEnabled() const override;
70+
void setSpriteFencingEnabled(bool enable) override;
71+
6972
bool broadcastRunning(unsigned int index, VirtualMachine *sourceScript) override;
7073
bool broadcastByPtrRunning(Broadcast *broadcast, VirtualMachine *sourceScript) override;
7174

@@ -151,6 +154,7 @@ class Engine : public IEngine
151154
unsigned int m_stageHeight = 360;
152155
int m_cloneLimit = 300;
153156
std::vector<Sprite *> m_clones;
157+
bool m_spriteFencingEnabled = true;
154158

155159
bool m_running = false;
156160
bool m_breakFrame = false;

test/engine/engine_test.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,18 @@ TEST(EngineTest, StageHeight)
190190
ASSERT_EQ(engine.stageHeight(), 515);
191191
}
192192

193+
TEST(EngineTest, SpriteFencingEnabled)
194+
{
195+
Engine engine;
196+
ASSERT_TRUE(engine.spriteFencingEnabled());
197+
198+
engine.setSpriteFencingEnabled(false);
199+
ASSERT_FALSE(engine.spriteFencingEnabled());
200+
201+
engine.setSpriteFencingEnabled(true);
202+
ASSERT_TRUE(engine.spriteFencingEnabled());
203+
}
204+
193205
TEST(EngineTest, BreakFrame)
194206
{
195207
Engine engine;

test/mocks/enginemock.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ class EngineMock : public IEngine
5353
MOCK_METHOD(int, cloneLimit, (), (const, override));
5454
MOCK_METHOD(void, setCloneLimit, (int), (override));
5555

56+
MOCK_METHOD(bool, spriteFencingEnabled, (), (const, override));
57+
MOCK_METHOD(void, setSpriteFencingEnabled, (bool), (override));
58+
5659
MOCK_METHOD(bool, broadcastRunning, (unsigned int, VirtualMachine *), (override));
5760
MOCK_METHOD(bool, broadcastByPtrRunning, (Broadcast *, VirtualMachine *), (override));
5861

0 commit comments

Comments
 (0)