diff options
Diffstat (limited to 'src/game.cpp')
-rw-r--r-- | src/game.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/game.cpp b/src/game.cpp index 80ff506..dff8af0 100644 --- a/src/game.cpp +++ b/src/game.cpp | |||
@@ -52,6 +52,7 @@ void Game::loadMap(std::string filename) { | |||
52 | // Load the new map. | 52 | // Load the new map. |
53 | map_ = std::make_unique<Map>(filename); | 53 | map_ = std::make_unique<Map>(filename); |
54 | 54 | ||
55 | std::vector<std::tuple<int, std::string>> backgroundScripts; | ||
55 | for (const Prototype& p : map_->getPrototypes()) { | 56 | for (const Prototype& p : map_->getPrototypes()) { |
56 | if (spritesByAlias_.count(p.name)) continue; | 57 | if (spritesByAlias_.count(p.name)) continue; |
57 | 58 | ||
@@ -84,6 +85,9 @@ void Game::loadMap(std::string filename) { | |||
84 | getSprite(spriteId).mirrorAxis = p.mirrorAxis; | 85 | getSprite(spriteId).mirrorAxis = p.mirrorAxis; |
85 | getSprite(spriteId).mirroredSpriteId = getSpriteByAlias(p.spriteToMirror); | 86 | getSprite(spriteId).mirroredSpriteId = getSpriteByAlias(p.spriteToMirror); |
86 | } | 87 | } |
88 | if (!p.backgroundScript.empty()) { | ||
89 | backgroundScripts.push_back({spriteId, p.backgroundScript}); | ||
90 | } | ||
87 | } | 91 | } |
88 | 92 | ||
89 | for (const Trigger& t : map_->getTriggers()) { | 93 | for (const Trigger& t : map_->getTriggers()) { |
@@ -99,4 +103,9 @@ void Game::loadMap(std::string filename) { | |||
99 | if (getSystem<ScriptSystem>().mapHasScript(map_->getName(), "init")) { | 103 | if (getSystem<ScriptSystem>().mapHasScript(map_->getName(), "init")) { |
100 | getSystem<ScriptSystem>().runScript(map_->getName(), "init"); | 104 | getSystem<ScriptSystem>().runScript(map_->getName(), "init"); |
101 | } | 105 | } |
106 | |||
107 | // Run any background scripts associated with new sprites. | ||
108 | for (auto& [spriteId, scriptName] : backgroundScripts) { | ||
109 | getSystem<ScriptSystem>().runScript(map_->getName(), scriptName, spriteId); | ||
110 | } | ||
102 | } | 111 | } |