diff --git a/doomsday/apps/libdoomsday/include/doomsday/defs/definition.h b/doomsday/apps/libdoomsday/include/doomsday/defs/definition.h index 6f2fa4bca1..58b218ba1c 100644 --- a/doomsday/apps/libdoomsday/include/doomsday/defs/definition.h +++ b/doomsday/apps/libdoomsday/include/doomsday/defs/definition.h @@ -47,6 +47,8 @@ class LIBDOOMSDAY_PUBLIC Definition : public de::RecordAccessor */ operator bool() const; + de::String id() const; + /** * Returns the ordinal of the definition. Ordinals are automatically set by * DEDRegister as definitions are created. diff --git a/doomsday/apps/libdoomsday/src/defs/definition.cpp b/doomsday/apps/libdoomsday/src/defs/definition.cpp index 4dacc01160..307b1a0aef 100644 --- a/doomsday/apps/libdoomsday/src/defs/definition.cpp +++ b/doomsday/apps/libdoomsday/src/defs/definition.cpp @@ -40,6 +40,12 @@ Record const &Definition::def() const return accessedRecord(); } +String Definition::id() const +{ + if (!accessedRecordPtr()) return {}; + return gets(VAR_ID); +} + int Definition::order() const { if (!accessedRecordPtr()) return -1; diff --git a/doomsday/apps/plugins/importdeh/src/dehreader.cpp b/doomsday/apps/plugins/importdeh/src/dehreader.cpp index 07feff6f09..beefa46fc1 100644 --- a/doomsday/apps/plugins/importdeh/src/dehreader.cpp +++ b/doomsday/apps/plugins/importdeh/src/dehreader.cpp @@ -1836,14 +1836,21 @@ class DehReader int numPatched = 0; for(int i = 0; i < ded->musics.size(); ++i) { - Record &music = ded->musics[i]; - if(music.gets("lumpName").compareWithoutCase(origNamePref)) continue; + defn::Definition music{ded->musics[i]}; + if (music.id().endsWith("_dd_xlt")) + { + // This is a Music definition generated by MapInfoTranslator based on + // a custom MAPINFO lump. We'll skip it because the music lump set in the + // MAPINFO should be used instead. + continue; + } + if (music.gets("lumpName").compareWithoutCase(origNamePref)) continue; - music.set("lumpName", newNamePref); + music.def().set("lumpName", newNamePref); numPatched++; LOG_DEBUG("Music #%i \"%s\" lumpName => \"%s\"") - << i << music.gets("id") << music.gets("lumpName"); + << i << music.id() << music.gets("lumpName"); } return (numPatched > 0); } diff --git a/doomsday/apps/plugins/importidtech1/src/mapinfotranslator.cpp b/doomsday/apps/plugins/importidtech1/src/mapinfotranslator.cpp index d060e8e2ad..772a65da2b 100644 --- a/doomsday/apps/plugins/importidtech1/src/mapinfotranslator.cpp +++ b/doomsday/apps/plugins/importidtech1/src/mapinfotranslator.cpp @@ -655,9 +655,9 @@ namespace internal { */ void parseMap(MapInfo *info = 0) { + de::Uri mapUri; if(!info) { - de::Uri mapUri; String const mapRef = String(Str_Text(lexer.readString())); bool isNumber; @@ -1469,6 +1469,7 @@ DENG2_PIMPL_NOREF(MapInfoTranslator) if (mapUri.path().isEmpty()) continue; const String mapId = toMapId(mapUri); + const String musicId = mapId + "_dd_xlt"; // doomsday translated const String musicLumpName = info.gets("music"); bool addedMusicDef = false; @@ -1478,7 +1479,7 @@ DENG2_PIMPL_NOREF(MapInfoTranslator) // Add a music def for this custom music. os << "\n\nMusic {" - << "\n ID = \"" + mapId + "\";"; // music ID == map ID + << "\n ID = \"" + musicId + "\";"; if (!musicLumpName.isEmpty()) { os << "\n Lump = \"" + musicLumpName + "\";"; @@ -1499,7 +1500,7 @@ DENG2_PIMPL_NOREF(MapInfoTranslator) os << "\n Fade Table = \"" + info.gets("fadeTable") + "\";"; if (addedMusicDef) { - os << "\n Music = \"" + mapId + "\";"; + os << "\n Music = \"" + musicId + "\";"; } de::Uri titleImageUri(info.gets("titleImage"), RC_NULL); if(!titleImageUri.path().isEmpty())