working on saving

This commit is contained in:
StevenRS11
2014-01-27 17:01:23 -05:00
parent ca42be0a5e
commit c935156b71
2 changed files with 23 additions and 35 deletions

View File

@@ -5,6 +5,7 @@ import java.io.FileFilter;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import net.minecraftforge.common.DimensionManager;
@@ -59,24 +60,22 @@ public class DDSaveHandler
// List any dimension data files and read each dimension
DimDataProcessor reader = new DimDataProcessor();
List<PackedDimData> packedDims = new ArrayList<PackedDimData>();
HashMap<Integer,PackedDimData> packedDims = new HashMap<Integer,PackedDimData>();
FileFilter dataFileFilter = new FileFilters.RegexFileFilter("dim_-?\\d+\\.txt");
File[] dataFiles = dataDirectory.listFiles(dataFileFilter);
for (File dataFile : dataFiles)
{
PackedDimData packedDim = readDimension(dataFile, reader);
packedDims.add(packedDim);
packedDims.put(packedDim.ID,packedDim);
}
List<PackedLinkData> linksToUnpack = new ArrayList<PackedLinkData>();
//get the grand list of all links to unpack
for(PackedDimData packedDim : packedDims)
for(PackedDimData packedDim : packedDims.values())
{
linksToUnpack.addAll(packedDim.Links);
}
return unpackDimData(packedDims)&&unpackLinkData(linksToUnpack);
}
@@ -85,47 +84,36 @@ public class DDSaveHandler
* @param packedDims
* @return
*/
public static boolean unpackDimData(List<PackedDimData> packedDims)
public static boolean unpackDimData(HashMap<Integer,PackedDimData> packedDims)
{
List<PackedDimData> unpackedDims = new ArrayList<PackedDimData>();
for(PackedDimData data : packedDims)
{
System.out.println(data.ID);
}
ArrayList<PackedDimData> roots = new ArrayList<PackedDimData>();
//Load roots
for(PackedDimData packedDim : packedDims)
for(PackedDimData packedDim : packedDims.values())
{
if(packedDim.ParentID==packedDim.ID)
{
PocketManager.registerPackedDimData(packedDim);
unpackedDims.add(packedDim);
roots.add(packedDim);
}
}
packedDims.removeAll(unpackedDims);
unpackedDims.clear();
//Load the pockets
while(!packedDims.isEmpty())
//load the children for each root
for(PackedDimData packedDim : roots)
{
for(PackedDimData packedDim : packedDims)
{
if(PocketManager.isRegisteredInternally(packedDim.ParentID))
{
PocketManager.registerPackedDimData(packedDim);
unpackedDims.add(packedDim);
}
else
{
//break here gracefully
}
}
packedDims.removeAll(unpackedDims);
unpackedDims.clear();
registerChildren(packedDim, packedDims);
}
return true;
}
private static void registerChildren(PackedDimData data, HashMap<Integer, PackedDimData> packedDims)
{
PocketManager.registerPackedDimData(data);
for(Integer child : data.ChildIDs)
{
registerChildren(packedDims.get(child),packedDims);
}
}
public static boolean unpackLinkData(List<PackedLinkData> linksToUnpack)
{
Point3D fakePoint = new Point3D(-1,-1,-1);

View File

@@ -25,7 +25,7 @@ public class OldSaveImporter
save.close();
List<PackedLinkData> allPackedLinks = new ArrayList<PackedLinkData>();
List<PackedDimData> newPackedDimData = new ArrayList<PackedDimData>();
HashMap<Integer,PackedDimData> newPackedDimData = new HashMap<Integer,PackedDimData>();
HashMap<Integer, DimData> dimMap;
@@ -59,7 +59,7 @@ public class OldSaveImporter
}
PackedDimData dim = new PackedDimData(data.dimID, data.depth, data.depth, data.exitDimLink.locDimID, data.exitDimLink.locDimID, 0, data.dungeonGenerator!=null, data.hasBeenFilled, null, new Point3D(0,64,0), childDims, newPackedLinkData, null);
newPackedDimData.add(dim);
newPackedDimData.put(dim.ID,dim);
DDSaveHandler.unpackDimData(newPackedDimData);
DDSaveHandler.unpackLinkData(allPackedLinks);