Started packing save data. At least it writes

This commit is contained in:
StevenRS11 2013-10-17 04:00:32 -04:00
parent 3376c1d772
commit 9418ed59df
10 changed files with 144 additions and 8 deletions

View file

@ -60,7 +60,10 @@ public class Point3D implements Serializable {
{
return new Point3D(x, y, z);
}
public int[] toIntArray()
{
return new int[]{x,y,z};
}
public boolean equals(Point3D other)
{
if (other == null)

View file

@ -6,6 +6,7 @@ import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import cpw.mods.fml.common.FMLCommonHandler;
@ -13,12 +14,15 @@ import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.DimensionManager;
import StevenDimDoors.mod_pocketDim.DDProperties;
import StevenDimDoors.mod_pocketDim.Point3D;
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
import StevenDimDoors.mod_pocketDim.helpers.Compactor;
import StevenDimDoors.mod_pocketDim.helpers.DeleteFolder;
import StevenDimDoors.mod_pocketDim.saving.DDSaveHandler;
import StevenDimDoors.mod_pocketDim.saving.IPackable;
import StevenDimDoors.mod_pocketDim.saving.PackedDimData;
import StevenDimDoors.mod_pocketDim.saving.PackedLinkData;
import StevenDimDoors.mod_pocketDim.saving.PackedLinkTail;
import StevenDimDoors.mod_pocketDim.util.Point4D;
import StevenDimDoors.mod_pocketDim.watcher.ClientDimData;
import StevenDimDoors.mod_pocketDim.watcher.IUpdateSource;
@ -89,8 +93,51 @@ public class PocketManager
@Override
public PackedDimData pack()
{
ArrayList<Integer> ChildIDs = new ArrayList<Integer>();
ArrayList<PackedLinkData> Links = new ArrayList<PackedLinkData>();
ArrayList<PackedLinkTail> Tails = new ArrayList<PackedLinkTail>();
//Make a list of children
for(NewDimData data : this.children)
{
ChildIDs.add(data.id);
}
for(DimLink link:this.links())
{
ArrayList<Point3D> children = new ArrayList<Point3D>();
Point3D parentPoint = new Point3D(-1,-1,-1);
if(link.parent!=null)
{
parentPoint=link.parent.source.toPoint3D();
}
for(DimLink childLink : link.children)
{
children.add(childLink.source().toPoint3D());
}
PackedLinkTail tail = new PackedLinkTail(link.tail.getDestination(),link.tail.getLinkType());
Links.add(new PackedLinkData(link.source,parentPoint,tail,link.orientation,children));
PackedLinkTail tempTail = new PackedLinkTail(link.tail.getDestination(),link.tail.getLinkType());
if(Tails.contains(tempTail))
{
Tails.add(tempTail);
}
}
int parentID=this.id;
Point3D originPoint=new Point3D(0,0,0);
if(this.parent!=null)
{
parentID = this.parent.id;
}
if(this.origin!=null)
{
originPoint=this.origin.toPoint3D();
}
return new PackedDimData(this.id, depth, this.packDepth, parentID, this.root().id(), orientation,
isDungeon, isFilled, originPoint, ChildIDs, Links, Tails);
// FIXME: IMPLEMENTATION PLZTHX
return null;
//I tried
}
}

View file

@ -75,6 +75,7 @@ public class DDSaveHandler
String basePath = DimensionManager.getCurrentSaveRootDirectory() + "/DimensionalDoors/data/";
File basePathFile = new File(basePath);
Files.createParentDirs(basePathFile);
basePathFile.mkdir();
basePathFile = null;
basePath += "dim_";
@ -101,7 +102,7 @@ public class DDSaveHandler
catch (Exception e)
{
System.err.println("Could not save data for dimension #" + dimension.name() + ". The following error occurred:");
printException(e, false);
printException(e, true);
return false;
}
}

View file

@ -1,19 +1,47 @@
package StevenDimDoors.mod_pocketDim.saving;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import scala.Char;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter;
import StevenDimDoors.mod_pocketDim.Point3D;
import StevenDimDoors.mod_pocketDim.util.BaseConfigurationProcessor;
import StevenDimDoors.mod_pocketDim.util.ConfigurationProcessingException;
import StevenDimDoors.mod_pocketDim.util.Point4D;
public class DimDataProcessor extends BaseConfigurationProcessor<PackedDimData>
{
private static final String dimID = "DIM_ID";
private static final String depth = "DEPTH";
private static final String children = "CHILDREN_DIM_IDS";
private static final String linkTails = "LINK_TAILS";
private static final String filled = "IS_FILLED";
private static final String isDungeon = "IS_DUNGEON";
private static final String orientation = "ORIENTATION";
private static final String parentID = "PARENT_DIM_ID";
private static final String rootID = "ROOT_DIM_ID";
private static final String packDepth = "PACK_DEPTH";
private static final String links = "LINKS";
private static final String origin = "ORIGIN_POINT";
@Override
public PackedDimData readFromStream(InputStream inputStream)
throws ConfigurationProcessingException
{
// TODO Auto-generated method stub
{
return null;
}
@ -21,8 +49,20 @@ public class DimDataProcessor extends BaseConfigurationProcessor<PackedDimData>
public void writeToStream(OutputStream outputStream, PackedDimData data)
throws ConfigurationProcessingException
{
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.setPrettyPrinting().create();
try
{
outputStream.write(gson.toJson(data).getBytes("UTF-8"));
outputStream.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
throw new ConfigurationProcessingException();
}
// TODO Auto-generated method stub
}
}

View file

@ -0,0 +1,5 @@
package StevenDimDoors.mod_pocketDim.saving;
public class PackedDungeonData {
}

View file

@ -1,6 +1,25 @@
package StevenDimDoors.mod_pocketDim.saving;
import java.util.List;
import StevenDimDoors.mod_pocketDim.Point3D;
import StevenDimDoors.mod_pocketDim.core.DimLink;
import StevenDimDoors.mod_pocketDim.util.Point4D;
public class PackedLinkData
{
public final Point4D source;
public final Point3D parent;
public final PackedLinkTail tail;
public final int orientation;
public final List<Point3D> children;
public PackedLinkData(Point4D source, Point3D parent, PackedLinkTail tail, int orientation, List<Point3D> children)
{
this.source=source;
this.parent=parent;
this.tail=tail;
this.orientation=orientation;
this.children=children;
}
}

View file

@ -1,6 +1,16 @@
package StevenDimDoors.mod_pocketDim.saving;
import StevenDimDoors.mod_pocketDim.util.Point4D;
public class PackedLinkTail
{
public final Point4D destination;
public final int linkType;
public PackedLinkTail(Point4D destination, int linkType)
{
this.destination=destination;
this.linkType=linkType;
}
}

View file

@ -4,9 +4,12 @@ import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import StevenDimDoors.mod_pocketDim.Point3D;
public final class Point4D implements Comparable<Point4D>
{
private final int x;
private final int y;
private final int z;
@ -136,6 +139,14 @@ public final class Point4D implements Comparable<Point4D>
return equals((Point4D) obj);
}
public Point3D toPoint3D()
{
return new Point3D(this.x,this.y,this.z);
}
public int[] toIntArray()
{
return new int[]{x,y,z,dimension};
}
public boolean equals(Point4D other)
{
if (this == other)

Binary file not shown.