|
35 | 35 | using namespace libscratchcpp;
|
36 | 36 |
|
37 | 37 | const std::unordered_map<Engine::HatType, bool> Engine::m_hatRestartExistingThreads = {
|
38 |
| - { HatType::GreenFlag, true }, { HatType::BroadcastReceived, true }, { HatType::BackdropChanged, true }, { HatType::CloneInit, false }, |
39 |
| - { HatType::KeyPressed, false }, { HatType::TargetClicked, true }, { HatType::WhenGreaterThan, false } |
| 38 | + { HatType::WhenTouchingObject, false }, { HatType::GreenFlag, true }, { HatType::BroadcastReceived, true }, { HatType::BackdropChanged, true }, |
| 39 | + { HatType::CloneInit, false }, { HatType::KeyPressed, false }, { HatType::TargetClicked, true }, { HatType::WhenGreaterThan, false } |
40 | 40 | };
|
41 | 41 |
|
42 | 42 | const std::unordered_map<Engine::HatType, bool> Engine::m_hatEdgeActivated = {
|
43 |
| - { HatType::GreenFlag, false }, { HatType::BroadcastReceived, false }, { HatType::BackdropChanged, false }, { HatType::CloneInit, false }, |
44 |
| - { HatType::KeyPressed, false }, { HatType::TargetClicked, false }, { HatType::WhenGreaterThan, true } |
| 43 | + { HatType::WhenTouchingObject, true }, { HatType::GreenFlag, false }, { HatType::BroadcastReceived, false }, { HatType::BackdropChanged, false }, |
| 44 | + { HatType::CloneInit, false }, { HatType::KeyPressed, false }, { HatType::TargetClicked, false }, { HatType::WhenGreaterThan, true } |
45 | 45 | };
|
46 | 46 |
|
47 | 47 | Engine::Engine() :
|
@@ -82,6 +82,7 @@ void Engine::clear()
|
82 | 82 | m_scripts.clear();
|
83 | 83 | m_functions.clear();
|
84 | 84 |
|
| 85 | + m_whenTouchingObjectHats.clear(); |
85 | 86 | m_greenFlagHats.clear();
|
86 | 87 | m_backdropChangeHats.clear();
|
87 | 88 | m_broadcastHats.clear();
|
@@ -1096,6 +1097,11 @@ int Engine::findBroadcastById(const std::string &broadcastId) const
|
1096 | 1097 | return it - m_broadcasts.begin();
|
1097 | 1098 | }
|
1098 | 1099 |
|
| 1100 | +void Engine::addWhenTouchingObjectScript(std::shared_ptr<Block> hatBlock) |
| 1101 | +{ |
| 1102 | + addHatToMap(m_whenTouchingObjectHats, m_scripts[hatBlock].get()); |
| 1103 | +} |
| 1104 | + |
1099 | 1105 | void Engine::addGreenFlagScript(std::shared_ptr<Block> hatBlock)
|
1100 | 1106 | {
|
1101 | 1107 | addHatToMap(m_greenFlagHats, m_scripts[hatBlock].get());
|
@@ -1527,6 +1533,9 @@ const std::vector<Script *> &Engine::getHats(Target *target, HatType type)
|
1527 | 1533 | }
|
1528 | 1534 |
|
1529 | 1535 | switch (type) {
|
| 1536 | + case HatType::WhenTouchingObject: |
| 1537 | + return m_whenTouchingObjectHats[target]; |
| 1538 | + |
1530 | 1539 | case HatType::GreenFlag:
|
1531 | 1540 | return m_greenFlagHats[target];
|
1532 | 1541 |
|
|
0 commit comments