summary refs log tree commit diff stats
path: root/src/game.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game.cpp')
-rw-r--r--src/game.cpp9
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}