Skip to content

Commit 1cf022c

Browse files
committed
Implement control_start_as_clone block
1 parent 1e656e2 commit 1cf022c

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

src/blocks/controlblocks.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ void ControlBlocks::registerBlocks(IEngine *engine)
3030
engine->addCompileFunction(this, "control_stop", &compileStop);
3131
engine->addCompileFunction(this, "control_wait", &compileWait);
3232
engine->addCompileFunction(this, "control_wait_until", &compileWaitUntil);
33+
engine->addCompileFunction(this, "control_start_as_clone", &compileStartAsClone);
3334
engine->addCompileFunction(this, "control_create_clone_of", &compileCreateClone);
3435

3536
// Inputs
@@ -160,6 +161,11 @@ void ControlBlocks::compileWaitUntil(Compiler *compiler)
160161
compiler->addFunctionCall(&waitUntil);
161162
}
162163

164+
void ControlBlocks::compileStartAsClone(Compiler *compiler)
165+
{
166+
compiler->engine()->addCloneInitScript(compiler->block());
167+
}
168+
163169
void ControlBlocks::compileCreateClone(Compiler *compiler)
164170
{
165171
Input *input = compiler->input(CLONE_OPTION);

src/blocks/controlblocks.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class ControlBlocks : public IBlockSection
5454
static void compileStop(Compiler *compiler);
5555
static void compileWait(Compiler *compiler);
5656
static void compileWaitUntil(Compiler *compiler);
57+
static void compileStartAsClone(Compiler *compiler);
5758
static void compileCreateClone(Compiler *compiler);
5859

5960
static unsigned int stopAll(VirtualMachine *vm);

test/blocks/control_blocks_test.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ TEST_F(ControlBlocksTest, RegisterBlocks)
151151
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "control_stop", &ControlBlocks::compileStop)).Times(1);
152152
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "control_wait", &ControlBlocks::compileWait)).Times(1);
153153
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "control_wait_until", &ControlBlocks::compileWaitUntil)).Times(1);
154+
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "control_start_as_clone", &ControlBlocks::compileStartAsClone)).Times(1);
154155
EXPECT_CALL(m_engineMock, addCompileFunction(m_section.get(), "control_create_clone_of", &ControlBlocks::compileCreateClone)).Times(1);
155156

156157
// Inputs
@@ -926,3 +927,14 @@ TEST_F(ControlBlocksTest, CreateCloneOfImpl)
926927
ASSERT_EQ(sprite.allChildren().size(), 4);
927928
ASSERT_EQ(sprite.children(), sprite.allChildren());
928929
}
930+
931+
TEST_F(ControlBlocksTest, StartAsClone)
932+
{
933+
Compiler compiler(&m_engineMock);
934+
935+
auto block = createControlBlock("a", "control_start_as_clone");
936+
compiler.setBlock(block);
937+
938+
EXPECT_CALL(m_engineMock, addCloneInitScript(block)).Times(1);
939+
ControlBlocks::compileStartAsClone(&compiler);
940+
}

0 commit comments

Comments
 (0)