parent
							
								
									65ad97994b
								
							
						
					
					
						commit
						8872fd3f5f
					
				| @ -0,0 +1,32 @@ | ||||
| package mightypork.rogue.screens.ingame; | ||||
| 
 | ||||
| 
 | ||||
| import java.util.Random; | ||||
| 
 | ||||
| import mightypork.gamecore.gui.screens.Screen; | ||||
| import mightypork.gamecore.gui.screens.ScreenLayer; | ||||
| import mightypork.rogue.world.MapGenerator; | ||||
| import mightypork.rogue.world.World; | ||||
| 
 | ||||
| 
 | ||||
| public class WorldLayer extends ScreenLayer { | ||||
| 	 | ||||
| 	public WorldLayer(Screen screen) | ||||
| 	{ | ||||
| 		super(screen); | ||||
| 		 | ||||
| 		Random rand = new Random(); | ||||
| 		World w = MapGenerator.createWorld(rand.nextLong()); | ||||
| 		 | ||||
| 		WorldRenderer wr = new WorldRenderer(w); | ||||
| 		wr.setRect(root); | ||||
| 		root.add(wr); | ||||
| 	} | ||||
| 	 | ||||
| 	@Override | ||||
| 	public int getPriority() | ||||
| 	{ | ||||
| 		return -1; | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,68 @@ | ||||
| package mightypork.rogue.screens.ingame; | ||||
| 
 | ||||
| 
 | ||||
| import mightypork.gamecore.control.events.MouseButtonEvent; | ||||
| import mightypork.gamecore.gui.components.InputComponent; | ||||
| import mightypork.gamecore.render.Render; | ||||
| import mightypork.rogue.world.World; | ||||
| import mightypork.util.constraints.num.Num; | ||||
| import mightypork.util.constraints.rect.Rect; | ||||
| import mightypork.util.control.timing.Updateable; | ||||
| import mightypork.util.math.color.PAL16; | ||||
| import mightypork.util.math.color.RGB; | ||||
| 
 | ||||
| 
 | ||||
| public class WorldRenderer extends InputComponent implements Updateable { | ||||
| 	 | ||||
| 	private final World world; | ||||
| 	private final Rect rightShadow; | ||||
| 	private final Rect leftShadow; | ||||
| 	private final Rect topShadow; | ||||
| 	private final Rect bottomShadow; | ||||
| 	 | ||||
| 	 | ||||
| 	public WorldRenderer(World world) | ||||
| 	{ | ||||
| 		this.world = world; | ||||
| 		 | ||||
| 		final Num h = height(); | ||||
| 		final Num w = width(); | ||||
| 		final Num minWH = w.min(h).max(700); | ||||
| 				 | ||||
| 		Num grX = w.perc(30); | ||||
| 		Num grY = h.perc(20); | ||||
| 		 | ||||
| 		leftShadow = leftEdge().growRight(grX); | ||||
| 		rightShadow = rightEdge().growLeft(grX); | ||||
| 		topShadow = topEdge().growDown(grY); | ||||
| 		bottomShadow = bottomEdge().growUp(grY).moveY(minWH.perc(-6)); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void receive(MouseButtonEvent event) | ||||
| 	{ | ||||
| 		System.out.println("world clciked, yo"); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	protected void renderComponent() | ||||
| 	{		 | ||||
| 		world.render(this, 8, 6, 64); | ||||
| 		 | ||||
| 		Render.quadGradH(leftShadow, RGB.BLACK, RGB.NONE); | ||||
| 		Render.quadGradH(rightShadow, RGB.NONE, RGB.BLACK); | ||||
| 		 | ||||
| 		Render.quadGradV(topShadow, RGB.BLACK, RGB.NONE); | ||||
| 		Render.quadGradV(bottomShadow, RGB.NONE, RGB.BLACK); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void update(double delta) | ||||
| 	{ | ||||
| 		world.update(delta); | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,83 @@ | ||||
| package mightypork.rogue.world; | ||||
| 
 | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.OutputStream; | ||||
| 
 | ||||
| import mightypork.util.files.ion.Ion; | ||||
| import mightypork.util.files.ion.IonBundle; | ||||
| import mightypork.util.files.ion.IonConstructor; | ||||
| import mightypork.util.files.ion.Ionizable; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Player info | ||||
|  *  | ||||
|  * @author MightyPork | ||||
|  */ | ||||
| public class LocalPlayer implements Ionizable, MapObserver { | ||||
| 	 | ||||
| 	public static final short ION_MARK = 708; | ||||
| 	 | ||||
| 	public WorldPos position = new WorldPos(); | ||||
| 	 | ||||
| 	 | ||||
| 	@IonConstructor | ||||
| 	public LocalPlayer() | ||||
| 	{ | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public LocalPlayer(int x, int y, int floor) | ||||
| 	{ | ||||
| 		this.position.setTo(x, y, floor); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public LocalPlayer(WorldPos pos) | ||||
| 	{ | ||||
| 		this.position = pos; | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void load(InputStream in) throws IOException | ||||
| 	{ | ||||
| 		IonBundle ib = (IonBundle) Ion.readObject(in); | ||||
| 		 | ||||
| 		position = ib.get("pos", position); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void save(OutputStream out) throws IOException | ||||
| 	{ | ||||
| 		IonBundle ib = new IonBundle(); | ||||
| 		 | ||||
| 		ib.put("pos", position); | ||||
| 		 | ||||
| 		Ion.writeObject(out, ib); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public short getIonMark() | ||||
| 	{ | ||||
| 		return ION_MARK; | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public WorldPos getPosition() | ||||
| 	{ | ||||
| 		return position; | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public int getViewRange() | ||||
| 	{ | ||||
| 		return 15; | ||||
| 	} | ||||
| } | ||||
| @ -0,0 +1,54 @@ | ||||
| package mightypork.rogue.world; | ||||
| 
 | ||||
| 
 | ||||
| import java.util.Random; | ||||
| 
 | ||||
| import mightypork.rogue.world.map.LevelMap; | ||||
| import mightypork.rogue.world.tile.Tiles; | ||||
| 
 | ||||
| 
 | ||||
| public class MapGenerator { | ||||
| 	 | ||||
| 	public static final Random rand = new Random(); | ||||
| 	 | ||||
| 	 | ||||
| 	public static World createWorld(long seed) | ||||
| 	{ | ||||
| 		synchronized (rand) { | ||||
| 			rand.setSeed(seed); | ||||
| 			 | ||||
| 			World w = new World(); | ||||
| 			w.setSeed(seed); | ||||
| 			 | ||||
| 			int levels = 4 + rand.nextInt(6); | ||||
| 			 | ||||
| 			for (int i = 0; i < levels; i++) { | ||||
| 				w.addLevel(createLevel(rand.nextLong())); | ||||
| 			} | ||||
| 			 | ||||
| 			// TODO place on start position
 | ||||
| 			w.setPlayer(new LocalPlayer(10, 10, 0)); | ||||
| 			return w;	 | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	private static LevelMap createLevel(long seed) | ||||
| 	{ | ||||
| 		// TODO
 | ||||
| 		 | ||||
| 		LevelMap lm = new LevelMap(20, 20); | ||||
| 		 | ||||
| 		lm.fill(Tiles.CRYSTAL_FLOOR); | ||||
| 		 | ||||
| 		Random rand = new Random(); | ||||
| 		rand.setSeed(seed); | ||||
| 		 | ||||
| 		for (int i = 0; i < 150; i++) { | ||||
| 			lm.setTile(Tiles.CRYSTAL_WALL, rand.nextInt(20), rand.nextInt(20)); | ||||
| 		} | ||||
| 		 | ||||
| 		return lm; | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,22 @@ | ||||
| package mightypork.rogue.world; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Player observing a map represented by an observer. | ||||
|  *  | ||||
|  * @author MightyPork | ||||
|  */ | ||||
| public interface MapObserver { | ||||
| 	 | ||||
| 	/** | ||||
| 	 * @return observer's position | ||||
| 	 */ | ||||
| 	public WorldPos getPosition(); | ||||
| 	 | ||||
| 	 | ||||
| 	/** | ||||
| 	 * @return observed range (in tiles) | ||||
| 	 */ | ||||
| 	public int getViewRange(); | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,185 @@ | ||||
| package mightypork.rogue.world; | ||||
| 
 | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.OutputStream; | ||||
| import java.util.HashSet; | ||||
| import java.util.Set; | ||||
| 
 | ||||
| import mightypork.gamecore.render.Render; | ||||
| import mightypork.rogue.world.map.LevelMap; | ||||
| import mightypork.rogue.world.map.TileRenderContext; | ||||
| import mightypork.rogue.world.structs.LevelList; | ||||
| import mightypork.util.constraints.rect.Rect; | ||||
| import mightypork.util.constraints.rect.RectConst; | ||||
| import mightypork.util.constraints.rect.proxy.RectBound; | ||||
| import mightypork.util.constraints.vect.Vect; | ||||
| import mightypork.util.constraints.vect.VectConst; | ||||
| import mightypork.util.control.timing.Updateable; | ||||
| import mightypork.util.error.CorruptedDataException; | ||||
| import mightypork.util.files.ion.Ion; | ||||
| import mightypork.util.files.ion.IonBundle; | ||||
| import mightypork.util.files.ion.Ionizable; | ||||
| import mightypork.util.math.color.RGB; | ||||
| 
 | ||||
| 
 | ||||
| public class World implements Ionizable, Updateable { | ||||
| 	 | ||||
| 	public static final short ION_MARK = 706; | ||||
| 	 | ||||
| 	private LevelList levels = new LevelList(); | ||||
| 	 | ||||
| 	private LocalPlayer player = new LocalPlayer(); | ||||
| 	 | ||||
| 	private transient final Set<MapObserver> observers = new HashSet<>(); | ||||
| 	 | ||||
| 	private long seed; | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void load(InputStream in) throws IOException | ||||
| 	{ | ||||
| 		// world data
 | ||||
| 		IonBundle ib = (IonBundle) Ion.readObject(in); | ||||
| 		player = ib.get("player", player); | ||||
| 		levels = ib.get("levels", levels); | ||||
| 		seed = ib.get("seed", seed); | ||||
| 		 | ||||
| 		// levels
 | ||||
| 		Ion.readSequence(in, levels); | ||||
| 		 | ||||
| 		if (player == null) throw new CorruptedDataException("Null player in world."); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void save(OutputStream out) throws IOException | ||||
| 	{ | ||||
| 		IonBundle ib = new IonBundle(); | ||||
| 		ib.put("player", player); | ||||
| 		ib.put("levels", levels); | ||||
| 		ib.put("seed", seed); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public void setPlayer(LocalPlayer player) | ||||
| 	{ | ||||
| 		removeObserver(this.player); | ||||
| 		 | ||||
| 		this.player = player; | ||||
| 		 | ||||
| 		addObserver(player); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public void removeObserver(MapObserver observer) | ||||
| 	{ | ||||
| 		observers.remove(observer); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public void addObserver(MapObserver observer) | ||||
| 	{ | ||||
| 		observers.add(observer); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public void addLevel(LevelMap level) | ||||
| 	{ | ||||
| 		levels.add(level); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public short getIonMark() | ||||
| 	{ | ||||
| 		return ION_MARK; | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void update(double delta) | ||||
| 	{ | ||||
| 		for (int level = 0; level < levels.size(); level++) { | ||||
| 			for (MapObserver observer : observers) { | ||||
| 				if (observer.getPosition().floor == level) { | ||||
| 					levels.get(level).update(observer, delta); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public LevelMap getLevelForObserver(MapObserver observer) | ||||
| 	{ | ||||
| 		return levels.get(observer.getPosition().floor); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Draw on screen | ||||
| 	 *  | ||||
| 	 * @param viewport rendering area on screen | ||||
| 	 * @param xTiles Desired nr of tiles horizontally | ||||
| 	 * @param yTiles Desired nr of tiles vertically | ||||
| 	 * @param minSize minimum tile size | ||||
| 	 */ | ||||
| 	public void render(final RectBound viewport, final int yTiles, final int xTiles, final int minSize) | ||||
| 	{ | ||||
| 		LevelMap floor = getLevelForObserver(player); // TODO fractional movement
 | ||||
| 		 | ||||
| 		Rect r = viewport.getRect(); | ||||
| 		double vpH = r.height().value(); | ||||
| 		double vpW = r.width().value(); | ||||
| 		 | ||||
| 		// adjust tile size to fit desired amount of tiles
 | ||||
| 		 | ||||
| 		double allowedSizeW = vpW / xTiles; | ||||
| 		double allowedSizeH = vpH / yTiles; | ||||
| 		int tileSize = (int) Math.round(Math.max(Math.min(allowedSizeH, allowedSizeW), minSize)); | ||||
| 		 | ||||
| 		tileSize -= tileSize % 16; | ||||
| 		 | ||||
| 		VectConst vpCenter = r.center().sub(tileSize * 0.5, tileSize).freeze(); // 0.5 to center, 1 to move up (down is teh navbar)
 | ||||
| 		 | ||||
| 		int playerX = player.getPosition().x; | ||||
| 		int playerY = player.getPosition().y; | ||||
| 		 | ||||
| 		// total map area
 | ||||
| 		//@formatter:off
 | ||||
| 		RectConst mapRect = vpCenter.startRect().grow( | ||||
| 				playerX*tileSize, | ||||
| 				playerY*tileSize,//
 | ||||
| 				(floor.getWidth() - playerX) * tileSize, | ||||
| 				(floor.getHeight() - playerY) * tileSize | ||||
| 		).freeze(); | ||||
| 		//@formatter:on
 | ||||
| 		 | ||||
| 		// tiles to render
 | ||||
| 		int x1 = (int) Math.floor(playerX - (vpW / tileSize)); | ||||
| 		int y1 = (int) Math.floor(playerY - (vpH / tileSize)); | ||||
| 		int x2 = (int) Math.ceil(playerX + (vpW / tileSize)); | ||||
| 		int y2 = (int) Math.ceil(playerY + (vpH / tileSize)); | ||||
| 		 | ||||
| 		TileRenderContext trc = new TileRenderContext(floor, mapRect); //-tileSize*0.5
 | ||||
| 		for (trc.y = y1; trc.y <= y2; trc.y++) { | ||||
| 			for (trc.x = x1; trc.x <= x2; trc.x++) { | ||||
| 				trc.render(); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public void setSeed(long seed) | ||||
| 	{ | ||||
| 		this.seed = seed; | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public long getSeed() | ||||
| 	{ | ||||
| 		return seed; | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,71 @@ | ||||
| package mightypork.rogue.world; | ||||
| 
 | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.OutputStream; | ||||
| 
 | ||||
| import mightypork.util.files.ion.Ion; | ||||
| import mightypork.util.files.ion.IonConstructor; | ||||
| import mightypork.util.files.ion.Ionizable; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * A simple dimension data object | ||||
|  *  | ||||
|  * @author MightyPork | ||||
|  */ | ||||
| public class WorldPos implements Ionizable { | ||||
| 	 | ||||
| 	public static final short ION_MARK = 707; | ||||
| 	 | ||||
| 	public int x, y, floor; | ||||
| 	 | ||||
| 	 | ||||
| 	public WorldPos(int x, int y, int z) | ||||
| 	{ | ||||
| 		super(); | ||||
| 		this.x = x; | ||||
| 		this.y = y; | ||||
| 		this.floor = z; | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@IonConstructor | ||||
| 	public WorldPos() | ||||
| 	{ | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void load(InputStream in) throws IOException | ||||
| 	{ | ||||
| 		x = Ion.readInt(in); | ||||
| 		y = Ion.readInt(in); | ||||
| 		floor = Ion.readInt(in); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void save(OutputStream out) throws IOException | ||||
| 	{ | ||||
| 		Ion.writeInt(out, x); | ||||
| 		Ion.writeInt(out, y); | ||||
| 		Ion.writeInt(out, floor); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public short getIonMark() | ||||
| 	{ | ||||
| 		return ION_MARK; | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public void setTo(int x, int y, int z) | ||||
| 	{ | ||||
| 		this.x = x; | ||||
| 		this.y = y; | ||||
| 		this.floor = z; | ||||
| 	} | ||||
| } | ||||
| @ -0,0 +1,40 @@ | ||||
| package mightypork.rogue.world.map; | ||||
| 
 | ||||
| 
 | ||||
| import mightypork.rogue.world.tile.Tile; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * Access interface for a level map. | ||||
|  *  | ||||
|  * @author MightyPork | ||||
|  */ | ||||
| public interface MapAccess { | ||||
| 	 | ||||
| 	/** | ||||
| 	 * Ge tile at X,Y | ||||
| 	 *  | ||||
| 	 * @param x | ||||
| 	 * @param y | ||||
| 	 * @return tile | ||||
| 	 */ | ||||
| 	Tile getTile(int x, int y); | ||||
| 	 | ||||
| 	 | ||||
| 	/** | ||||
| 	 * @return map width in tiles | ||||
| 	 */ | ||||
| 	int getWidth(); | ||||
| 	 | ||||
| 	 | ||||
| 	/** | ||||
| 	 * @return map height in tiles | ||||
| 	 */ | ||||
| 	int getHeight(); | ||||
| 	 | ||||
| 	 | ||||
| 	/** | ||||
| 	 * @return map seed | ||||
| 	 */ | ||||
| 	long getSeed(); | ||||
| } | ||||
| @ -0,0 +1,19 @@ | ||||
| package mightypork.rogue.world.structs; | ||||
| 
 | ||||
| 
 | ||||
| import mightypork.rogue.world.item.Item; | ||||
| import mightypork.util.files.ion.templates.IonizableStack; | ||||
| 
 | ||||
| 
 | ||||
| public class ItemStack extends IonizableStack<Item> { | ||||
| 	 | ||||
| 	private static final short ION_MARK = 710; | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public short getIonMark() | ||||
| 	{ | ||||
| 		return ION_MARK; | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,18 @@ | ||||
| package mightypork.rogue.world.structs; | ||||
| 
 | ||||
| 
 | ||||
| import mightypork.rogue.world.map.LevelMap; | ||||
| import mightypork.util.files.ion.templates.IonizableArrayList; | ||||
| 
 | ||||
| 
 | ||||
| public class LevelList extends IonizableArrayList<LevelMap> { | ||||
| 	 | ||||
| 	public static final short ION_MARK = 709; | ||||
| 	 | ||||
| 	@Override | ||||
| 	public short getIonMark() | ||||
| 	{ | ||||
| 		return ION_MARK; | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -1,13 +0,0 @@ | ||||
| package mightypork.rogue.world.tile; | ||||
| 
 | ||||
| 
 | ||||
| public interface TileGrid { | ||||
| 	 | ||||
| 	Tile getTile(int x, int y); | ||||
| 	 | ||||
| 	 | ||||
| 	int getWidth(); | ||||
| 	 | ||||
| 	 | ||||
| 	int getHeight(); | ||||
| } | ||||
| @ -0,0 +1,18 @@ | ||||
| package mightypork.rogue.world.tile.models; | ||||
| 
 | ||||
| 
 | ||||
| public class NullFloor extends AbstractNullTile { | ||||
| 	 | ||||
| 	public NullFloor(int id) | ||||
| 	{ | ||||
| 		super(id); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean isPotentiallyWalkable() | ||||
| 	{ | ||||
| 		return true; | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,18 @@ | ||||
| package mightypork.rogue.world.tile.models; | ||||
| 
 | ||||
| 
 | ||||
| public class NullWall extends AbstractNullTile { | ||||
| 	 | ||||
| 	public NullWall(int id) | ||||
| 	{ | ||||
| 		super(id); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public boolean isPotentiallyWalkable() | ||||
| 	{ | ||||
| 		return false; | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,6 @@ | ||||
| package mightypork.test; | ||||
| 
 | ||||
| 
 | ||||
| public class testworldtofile { | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,36 @@ | ||||
| package mightypork.util.error; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * To be used when a data could not be read successfully. | ||||
|  *  | ||||
|  * @author MightyPork | ||||
|  */ | ||||
| public class CorruptedDataException extends IOException { | ||||
| 	 | ||||
| 	public CorruptedDataException() | ||||
| 	{ | ||||
| 		super(); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public CorruptedDataException(String message, Throwable cause) | ||||
| 	{ | ||||
| 		super(message, cause); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public CorruptedDataException(String message) | ||||
| 	{ | ||||
| 		super(message); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	public CorruptedDataException(Throwable cause) | ||||
| 	{ | ||||
| 		super(cause); | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,28 @@ | ||||
| package mightypork.util.files.ion.templates; | ||||
| 
 | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.OutputStream; | ||||
| import java.util.ArrayList; | ||||
| 
 | ||||
| import mightypork.util.files.ion.Ion; | ||||
| import mightypork.util.files.ion.Ionizable; | ||||
| 
 | ||||
| 
 | ||||
| public abstract class IonizableArrayList<E> extends ArrayList<E> implements Ionizable { | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void load(InputStream in) throws IOException | ||||
| 	{ | ||||
| 		Ion.readSequence(in, this); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void save(OutputStream out) throws IOException | ||||
| 	{ | ||||
| 		Ion.writeSequence(out, this); | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,28 @@ | ||||
| package mightypork.util.files.ion.templates; | ||||
| 
 | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.OutputStream; | ||||
| import java.util.HashMap; | ||||
| 
 | ||||
| import mightypork.util.files.ion.Ion; | ||||
| import mightypork.util.files.ion.Ionizable; | ||||
| 
 | ||||
| 
 | ||||
| public abstract class IonizableHashMap<K, V> extends HashMap<K, V> implements Ionizable { | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void load(InputStream in) throws IOException | ||||
| 	{ | ||||
| 		Ion.readMap(in, this); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void save(OutputStream out) throws IOException | ||||
| 	{ | ||||
| 		Ion.writeMap(out, this); | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,28 @@ | ||||
| package mightypork.util.files.ion.templates; | ||||
| 
 | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.OutputStream; | ||||
| import java.util.HashSet; | ||||
| 
 | ||||
| import mightypork.util.files.ion.Ion; | ||||
| import mightypork.util.files.ion.Ionizable; | ||||
| 
 | ||||
| 
 | ||||
| public abstract class IonizableHashSet<E> extends HashSet<E> implements Ionizable { | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void load(InputStream in) throws IOException | ||||
| 	{ | ||||
| 		Ion.readSequence(in, this); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void save(OutputStream out) throws IOException | ||||
| 	{ | ||||
| 		Ion.writeSequence(out, this); | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,28 @@ | ||||
| package mightypork.util.files.ion.templates; | ||||
| 
 | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.OutputStream; | ||||
| import java.util.LinkedHashMap; | ||||
| 
 | ||||
| import mightypork.util.files.ion.Ion; | ||||
| import mightypork.util.files.ion.Ionizable; | ||||
| 
 | ||||
| 
 | ||||
| public abstract class IonizableLinkedHashMap<K, V> extends LinkedHashMap<K, V> implements Ionizable { | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void load(InputStream in) throws IOException | ||||
| 	{ | ||||
| 		Ion.readMap(in, this); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void save(OutputStream out) throws IOException | ||||
| 	{ | ||||
| 		Ion.writeMap(out, this); | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,28 @@ | ||||
| package mightypork.util.files.ion.templates; | ||||
| 
 | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.OutputStream; | ||||
| import java.util.LinkedList; | ||||
| 
 | ||||
| import mightypork.util.files.ion.Ion; | ||||
| import mightypork.util.files.ion.Ionizable; | ||||
| 
 | ||||
| 
 | ||||
| public abstract class IonizableLinkedList<E> extends LinkedList<E> implements Ionizable { | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void load(InputStream in) throws IOException | ||||
| 	{ | ||||
| 		Ion.readSequence(in, this); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void save(OutputStream out) throws IOException | ||||
| 	{ | ||||
| 		Ion.writeSequence(out, this); | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
| @ -0,0 +1,28 @@ | ||||
| package mightypork.util.files.ion.templates; | ||||
| 
 | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.OutputStream; | ||||
| import java.util.TreeSet; | ||||
| 
 | ||||
| import mightypork.util.files.ion.Ion; | ||||
| import mightypork.util.files.ion.Ionizable; | ||||
| 
 | ||||
| 
 | ||||
| public abstract class IonizableTreeSet<E> extends TreeSet<E> implements Ionizable { | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void load(InputStream in) throws IOException | ||||
| 	{ | ||||
| 		Ion.readSequence(in, this); | ||||
| 	} | ||||
| 	 | ||||
| 	 | ||||
| 	@Override | ||||
| 	public void save(OutputStream out) throws IOException | ||||
| 	{ | ||||
| 		Ion.writeSequence(out, this); | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue