@@ -76,7 +76,7 @@ bool ProjectPrivate::tryLoad(IProjectReader *reader)
76
76
77
77
// Get asset file names
78
78
std::vector<std::string> assetNames;
79
- std::unordered_map<std::string, Asset *> assets;
79
+ std::unordered_map<std::string, std::vector< Asset *>> assets; // multiple assets can use the same file
80
80
const auto &targets = reader->targets ();
81
81
82
82
for (auto target : targets) {
@@ -87,18 +87,18 @@ bool ProjectPrivate::tryLoad(IProjectReader *reader)
87
87
auto it = std::find (assetNames.begin (), assetNames.end (), costume->fileName ());
88
88
if (it == assetNames.end ()) {
89
89
assetNames.push_back (costume->fileName ());
90
- assets[assetNames.back ()] = costume.get ();
90
+ assets[assetNames.back ()] = { costume.get () } ;
91
91
} else
92
- assets[*it] = costume.get ();
92
+ assets[*it]. push_back ( costume.get () );
93
93
}
94
94
95
95
for (auto sound : sounds) {
96
96
auto it = std::find (assetNames.begin (), assetNames.end (), sound->fileName ());
97
97
if (it == assetNames.end ()) {
98
98
assetNames.push_back (sound->fileName ());
99
- assets[assetNames.back ()] = sound.get ();
99
+ assets[assetNames.back ()] = { sound.get () } ;
100
100
} else
101
- assets[*it] = sound.get ();
101
+ assets[*it]. push_back ( sound.get () );
102
102
}
103
103
}
104
104
@@ -120,10 +120,14 @@ bool ProjectPrivate::tryLoad(IProjectReader *reader)
120
120
121
121
// Load asset data
122
122
for (size_t i = 0 ; i < assets.size (); i++) {
123
- const std::string &data = assetData[i];
124
- char *ptr = (char *)malloc (data.size () * sizeof (char ));
125
- memcpy (ptr, data.data (), data.size () * sizeof (char ));
126
- assets[assetNames[i]]->setData (data.size (), ptr);
123
+ const std::vector<Asset *> &assetList = assets[assetNames[i]];
124
+
125
+ for (Asset *asset : assetList) {
126
+ const std::string &data = assetData[i];
127
+ char *ptr = (char *)malloc (data.size () * sizeof (char ));
128
+ memcpy (ptr, data.data (), data.size () * sizeof (char ));
129
+ asset->setData (data.size (), ptr);
130
+ }
127
131
}
128
132
129
133
} else {
0 commit comments