Skip to content

Commit f3e3061

Browse files
committed
fix #502: Ignore hidden sprites in Engine::clickTarget()
1 parent dc851c4 commit f3e3061

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

src/engine/internal/engine.cpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,14 @@ void Engine::setMousePressed(bool pressed)
695695

696696
void Engine::clickTarget(Target *target)
697697
{
698-
startHats(HatType::TargetClicked, {}, target);
698+
assert(target);
699+
700+
if (target) {
701+
if (!target->isStage() && !static_cast<Sprite *>(target)->visible())
702+
return;
703+
704+
startHats(HatType::TargetClicked, {}, target);
705+
}
699706
}
700707

701708
unsigned int Engine::stageWidth() const

test/engine/engine_test.cpp

+25
Original file line numberDiff line numberDiff line change
@@ -1124,6 +1124,31 @@ TEST(EngineTest, TargetClickScripts)
11241124
ASSERT_VAR(stage, "stage");
11251125
ASSERT_EQ(GET_VAR(stage, "stage")->value().toInt(), 0);
11261126

1127+
// Hidden sprite
1128+
sprite = engine->targetAt(engine->findTarget("Hidden"));
1129+
ASSERT_TRUE(sprite);
1130+
engine->clickTarget(sprite);
1131+
engine->step();
1132+
ASSERT_VAR(stage, "1");
1133+
ASSERT_EQ(GET_VAR(stage, "1")->value().toInt(), 2);
1134+
ASSERT_VAR(stage, "2");
1135+
ASSERT_EQ(GET_VAR(stage, "2")->value().toInt(), 2);
1136+
ASSERT_VAR(stage, "hidden");
1137+
ASSERT_EQ(GET_VAR(stage, "hidden")->value().toInt(), 0);
1138+
ASSERT_VAR(stage, "stage");
1139+
ASSERT_EQ(GET_VAR(stage, "stage")->value().toInt(), 0);
1140+
1141+
engine->clickTarget(sprite);
1142+
engine->step();
1143+
ASSERT_VAR(stage, "1");
1144+
ASSERT_EQ(GET_VAR(stage, "1")->value().toInt(), 2);
1145+
ASSERT_VAR(stage, "2");
1146+
ASSERT_EQ(GET_VAR(stage, "2")->value().toInt(), 2);
1147+
ASSERT_VAR(stage, "hidden");
1148+
ASSERT_EQ(GET_VAR(stage, "hidden")->value().toInt(), 0);
1149+
ASSERT_VAR(stage, "stage");
1150+
ASSERT_EQ(GET_VAR(stage, "stage")->value().toInt(), 0);
1151+
11271152
// Stage
11281153
engine->clickTarget(stage);
11291154
engine->step();

test/target_click_scripts.sb3

124 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)