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

View File

@@ -25,7 +25,7 @@ public class OldSaveImporter
save.close(); save.close();
List<PackedLinkData> allPackedLinks = new ArrayList<PackedLinkData>(); List<PackedLinkData> allPackedLinks = new ArrayList<PackedLinkData>();
List<PackedDimData> newPackedDimData = new ArrayList<PackedDimData>(); HashMap<Integer,PackedDimData> newPackedDimData = new HashMap<Integer,PackedDimData>();
HashMap<Integer, DimData> dimMap; 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); 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.unpackDimData(newPackedDimData);
DDSaveHandler.unpackLinkData(allPackedLinks); DDSaveHandler.unpackLinkData(allPackedLinks);