Revert "Internal: reverted mysterious MaxED edit in map saving functions"

This reverts commit 4d97f41a4b.
This commit is contained in:
spherallic 2023-05-30 16:49:45 +02:00
parent 37b872787f
commit 554f79f585

View file

@ -401,7 +401,7 @@ namespace CodeImp.DoomBuilder
// Copy the map lumps to the temp file // Copy the map lumps to the temp file
General.WriteLogLine("Copying map lumps to temporary file..."); General.WriteLogLine("Copying map lumps to temporary file...");
CopyLumpsByType(mapwad, options.CurrentName, tempwad, TEMP_MAP_HEADER, true, true, true, true); CopyLumpsByType(mapwad, options.CurrentName, tempwad, TEMP_MAP_HEADER, REPLACE_TARGET_MAP, true, true, true, true);
// Close the map file // Close the map file
mapwad.Dispose(); mapwad.Dispose();
@ -508,7 +508,7 @@ namespace CodeImp.DoomBuilder
// Copy the map lumps to the temp file // Copy the map lumps to the temp file
General.WriteLogLine("Copying map lumps to temporary file..."); General.WriteLogLine("Copying map lumps to temporary file...");
CopyLumpsByType(mapwad, options.CurrentName, tempwad, TEMP_MAP_HEADER, true, true, true, true); CopyLumpsByType(mapwad, options.CurrentName, tempwad, TEMP_MAP_HEADER, REPLACE_TARGET_MAP, true, true, true, true);
// Close the map file // Close the map file
mapwad.Dispose(); mapwad.Dispose();
@ -902,6 +902,7 @@ namespace CodeImp.DoomBuilder
// Determine original map name // Determine original map name
string origmapname = (!string.IsNullOrEmpty(options.PreviousName) && purpose != SavePurpose.IntoFile) ? options.PreviousName : options.CurrentName; string origmapname = (!string.IsNullOrEmpty(options.PreviousName) && purpose != SavePurpose.IntoFile) ? options.PreviousName : options.CurrentName;
string origwadfile = string.Empty; //mxd string origwadfile = string.Empty; //mxd
int mapheaderindex = REPLACE_TARGET_MAP; //mxd. Lump index of the map file header in the source WAD
try try
{ {
@ -987,7 +988,7 @@ namespace CodeImp.DoomBuilder
} }
// Copy map lumps to target file // Copy map lumps to target file
CopyLumpsByType(tempwad, TEMP_MAP_HEADER, targetwad, origmapname, true, true, includenodes, true); CopyLumpsByType(tempwad, TEMP_MAP_HEADER, targetwad, origmapname, mapheaderindex, true, true, includenodes, true);
// mxd. Was the map renamed? // mxd. Was the map renamed?
if(options.LevelNameChanged) if(options.LevelNameChanged)
@ -1197,7 +1198,7 @@ namespace CodeImp.DoomBuilder
// Copy lumps to buildwad // Copy lumps to buildwad
General.WriteLogLine("Copying map lumps to temporary build file..."); General.WriteLogLine("Copying map lumps to temporary build file...");
CopyLumpsByType(tempwad, TEMP_MAP_HEADER, buildwad, BUILD_MAP_HEADER, true, false, false, true); CopyLumpsByType(tempwad, TEMP_MAP_HEADER, buildwad, BUILD_MAP_HEADER, REPLACE_TARGET_MAP, true, false, false, true);
// Close buildwad // Close buildwad
buildwad.Dispose(); buildwad.Dispose();
@ -1242,7 +1243,7 @@ namespace CodeImp.DoomBuilder
{ {
// Copy nodebuilder lumps to temp file // Copy nodebuilder lumps to temp file
General.WriteLogLine("Copying nodebuilder lumps to temporary file..."); General.WriteLogLine("Copying nodebuilder lumps to temporary file...");
CopyLumpsByType(buildwad, BUILD_MAP_HEADER, tempwad, TEMP_MAP_HEADER, false, false, true, false); CopyLumpsByType(buildwad, BUILD_MAP_HEADER, tempwad, TEMP_MAP_HEADER, REPLACE_TARGET_MAP, false, false, true, false);
} }
else else
{ {
@ -1442,11 +1443,13 @@ namespace CodeImp.DoomBuilder
// This copies specific map lumps from one WAD to another // This copies specific map lumps from one WAD to another
private void CopyLumpsByType(WAD source, string sourcemapname, private void CopyLumpsByType(WAD source, string sourcemapname,
WAD target, string targetmapname, WAD target, string targetmapname,
int targetheaderinsertindex, //mxd
bool copyrequired, bool copyblindcopy, bool copyrequired, bool copyblindcopy,
bool copynodebuild, bool copyscript) bool copynodebuild, bool copyscript)
{ {
// Find the map header in target (mxd. Or use the provided one) // Find the map header in target (mxd. Or use the provided one)
int tgtheaderindex = target.FindLumpIndex(targetmapname); bool replacetargetmap = (targetheaderinsertindex == REPLACE_TARGET_MAP); //mxd
int tgtheaderindex = (replacetargetmap ? target.FindLumpIndex(targetmapname) : targetheaderinsertindex); //mxd
if(tgtheaderindex == -1) if(tgtheaderindex == -1)
{ {
// If this header doesnt exists in the target // If this header doesnt exists in the target
@ -1477,13 +1480,16 @@ namespace CodeImp.DoomBuilder
if(sourceindex > -1) if(sourceindex > -1)
{ {
//mxd. Don't do this when inserting a map (SaveMap() removes the old version of the map before calling CopyLumpsByType()) //mxd. Don't do this when inserting a map (SaveMap() removes the old version of the map before calling CopyLumpsByType())
// Remove lump at target if(replacetargetmap)
int lumpindex = RemoveSpecificLump(target, tgtlumpname, tgtheaderindex, targetmapname, config.MapLumps); {
// Remove lump at target
int lumpindex = RemoveSpecificLump(target, tgtlumpname, tgtheaderindex, targetmapname, config.MapLumps);
// Determine target index // Determine target index
// When original lump was found and removed then insert at that position // When original lump was found and removed then insert at that position
// otherwise insert after last insertion position // otherwise insert after last insertion position
if(lumpindex > -1) targetindex = lumpindex; else targetindex++; if(lumpindex > -1) targetindex = lumpindex; else targetindex++;
}
if(targetindex > target.Lumps.Count) targetindex = target.Lumps.Count; if(targetindex > target.Lumps.Count) targetindex = target.Lumps.Count;
// Copy the lump to the target // Copy the lump to the target
@ -1491,6 +1497,9 @@ namespace CodeImp.DoomBuilder
Lump lump = source.Lumps[sourceindex]; Lump lump = source.Lumps[sourceindex];
Lump newlump = target.Insert(tgtlumpname, targetindex, lump.Length, false); Lump newlump = target.Insert(tgtlumpname, targetindex, lump.Length, false);
lump.CopyTo(newlump); lump.CopyTo(newlump);
//mxd. We still need to increment targetindex...
if(!replacetargetmap) targetindex++;
} }
else else
{ {
@ -1505,6 +1514,7 @@ namespace CodeImp.DoomBuilder
} }
target.WriteHeaders(); //mxd target.WriteHeaders(); //mxd
target.Compress(); // [ZZ]
} }
} }