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); return new Point3D(x, y, z);
} }
public int[] toIntArray()
{
return new int[]{x,y,z};
}
public boolean equals(Point3D other) public boolean equals(Point3D other)
{ {
if (other == null) if (other == null)

View File

@@ -6,6 +6,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.FMLCommonHandler;
@@ -13,12 +14,15 @@ import net.minecraft.world.World;
import net.minecraft.world.WorldServer; import net.minecraft.world.WorldServer;
import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.DimensionManager;
import StevenDimDoors.mod_pocketDim.DDProperties; import StevenDimDoors.mod_pocketDim.DDProperties;
import StevenDimDoors.mod_pocketDim.Point3D;
import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.mod_pocketDim;
import StevenDimDoors.mod_pocketDim.helpers.Compactor; import StevenDimDoors.mod_pocketDim.helpers.Compactor;
import StevenDimDoors.mod_pocketDim.helpers.DeleteFolder; import StevenDimDoors.mod_pocketDim.helpers.DeleteFolder;
import StevenDimDoors.mod_pocketDim.saving.DDSaveHandler; import StevenDimDoors.mod_pocketDim.saving.DDSaveHandler;
import StevenDimDoors.mod_pocketDim.saving.IPackable; import StevenDimDoors.mod_pocketDim.saving.IPackable;
import StevenDimDoors.mod_pocketDim.saving.PackedDimData; 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.util.Point4D;
import StevenDimDoors.mod_pocketDim.watcher.ClientDimData; import StevenDimDoors.mod_pocketDim.watcher.ClientDimData;
import StevenDimDoors.mod_pocketDim.watcher.IUpdateSource; import StevenDimDoors.mod_pocketDim.watcher.IUpdateSource;
@@ -89,8 +93,51 @@ public class PocketManager
@Override @Override
public PackedDimData pack() 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 // FIXME: IMPLEMENTATION PLZTHX
return null; //I tried
} }
} }

View File

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

View File

@@ -1,19 +1,47 @@
package StevenDimDoors.mod_pocketDim.saving; package StevenDimDoors.mod_pocketDim.saving;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream; 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.BaseConfigurationProcessor;
import StevenDimDoors.mod_pocketDim.util.ConfigurationProcessingException; import StevenDimDoors.mod_pocketDim.util.ConfigurationProcessingException;
import StevenDimDoors.mod_pocketDim.util.Point4D;
public class DimDataProcessor extends BaseConfigurationProcessor<PackedDimData> 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 @Override
public PackedDimData readFromStream(InputStream inputStream) public PackedDimData readFromStream(InputStream inputStream)
throws ConfigurationProcessingException throws ConfigurationProcessingException
{ {
// TODO Auto-generated method stub
return null; return null;
} }
@@ -21,8 +49,20 @@ public class DimDataProcessor extends BaseConfigurationProcessor<PackedDimData>
public void writeToStream(OutputStream outputStream, PackedDimData data) public void writeToStream(OutputStream outputStream, PackedDimData data)
throws ConfigurationProcessingException 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 // 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; 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 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; package StevenDimDoors.mod_pocketDim.saving;
import StevenDimDoors.mod_pocketDim.util.Point4D;
public class PackedLinkTail 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.DataOutputStream;
import java.io.IOException; import java.io.IOException;
import StevenDimDoors.mod_pocketDim.Point3D;
public final class Point4D implements Comparable<Point4D> public final class Point4D implements Comparable<Point4D>
{ {
private final int x; private final int x;
private final int y; private final int y;
private final int z; private final int z;
@@ -136,6 +139,14 @@ public final class Point4D implements Comparable<Point4D>
return equals((Point4D) obj); 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) public boolean equals(Point4D other)
{ {
if (this == other) if (this == other)

Binary file not shown.