organized project constructors

master
flying sheep 2013-04-05 23:47:18 +02:00
parent 6ecbd88f36
commit bae368b8dc
5 changed files with 82 additions and 102 deletions

View File

@ -1,6 +1,5 @@
package MoF;
import amidst.Options;
import amidst.map.MapMarkers;
@ -8,55 +7,51 @@ import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
public class Fragment extends BufferedImage {
public class Fragment extends BufferedImage {
public int x, y, range;
public boolean active;
public ArrayList<MapObject> objects;
public List<MapObject> objects;
public int tempX, tempY;
public byte[] data;
public boolean marked = false;
public ArrayList<BufferedImage> layers;
private Project proj;
public List<BufferedImage> layers;
public float stat[];
public int strongholdCount = 0;
public int villageCount = 0;
public Fragment(int x, int y, int range, Project proj) {
super(range,range,BufferedImage.TYPE_INT_ARGB);
public Fragment(int x, int y, int range) {
super(range, range, BufferedImage.TYPE_INT_ARGB);
this.range = range;
this.x = x;
this.y = y;
active = true;
Graphics2D g2d = this.createGraphics();
g2d.setColor(Color.blue);
g2d.fillRect(0, 0, Project.FRAGMENT_SIZE, Project.FRAGMENT_SIZE);
objects = new ArrayList<MapObject>();
layers = new ArrayList<BufferedImage>();
this.proj = proj;
stat = new float[Biome.colors.length];
Graphics2D g2d = this.createGraphics();
g2d.setColor(Color.blue);
g2d.fillRect(0, 0, Project.FRAGMENT_SIZE, Project.FRAGMENT_SIZE);
objects = new ArrayList<MapObject>();
layers = new ArrayList<BufferedImage>();
stat = new float[Biome.colors.length];
}
public void dispose() {
this.flush();
for (int i = 0; i < layers.size(); i++) {
layers.get(i).flush();
}
for (BufferedImage layer : layers)
layer.flush();
this.objects.clear();
this.objects = null;
this.data = null;
this.layers.clear();
this.layers = null;
this.proj = null;
this.stat = null;
active = false;
}
public void disable() {
this.active = false;
for (int i = 0; i < layers.size(); i++) {
layers.get(i).flush();
}
for (BufferedImage layer : layers)
layer.flush();
flush();
}
@ -88,26 +83,21 @@ public class Fragment extends BufferedImage {
int fs = Project.FRAGMENT_SIZE;
sX -= this.x*fs;
sY -= this.y*fs;
if ((sX >= 0) & (sY >= 0) & (sX < fs) & (sY < fs)) {
return true;
} else {
return false;
}
return (sX >= 0) & (sY >= 0) & (sX < fs) & (sY < fs);
}
public MapObject getObjectAt(int x, int y) {
MapObject m = null;
double td = 1600;
for (int i = 0; i < objects.size(); i++) {
if (objects.get(i).isSelectable()) {
int sx = x - (objects.get(i).x >> 2);
int sy = y - (objects.get(i).y >> 2);
double dist = sx*sx + sy*sy;
for (MapObject object : objects) {
if (object.isSelectable()) {
int sx = x - (object.x >> 2);
int sy = y - (object.y >> 2);
double dist = sx * sx + sy * sy;
if (dist < td) {
td = dist;
objects.get(i).tempDist = dist;
m = objects.get(i);
object.tempDist = dist;
m = object;
}
}
}
@ -118,8 +108,8 @@ public class Fragment extends BufferedImage {
int sX = m.x >> 2;
int sY = m.y >> 2;
int fs = Project.FRAGMENT_SIZE;
sX -= this.x*fs;
sY -= this.y*fs;
sX -= this.x * fs;
sY -= this.y * fs;
m.rx = sX;
m.ry = sY;
if (m.type == MapMarkers.STRONGHOLD) {

View File

@ -24,17 +24,63 @@ public class Project extends JPanel {
public String seedText;
public Project(long seed, FinderWindow window) {
this(seed, window, SaveLoader.Type.DEFAULT);
public Project(String seed) {
this(stringToLong(seed));
this.seedText = "Seed: \"" + seed + "\" (" + this.seed + ")";
Google.track("seed/" + seed + "/" + this.seed);
}
public Project(long seed, FinderWindow window, SaveLoader.Type type) {
public Project(long seed) {
this(seed, SaveLoader.Type.DEFAULT);
}
public Project(SaveLoader file) {
this(file.seed, SaveLoader.genType);
saveLoaded = true;
save = file;
Google.track("seed/file/" + this.seed);
List<Player> players = file.getPlayers();
manager.setPlayerData(players);
}
public Project(String seed, SaveLoader.Type type) {
this(stringToLong(seed), type);
this.seedText = "Seed: \"" + seed + "\" (" + this.seed + ")";
Google.track("seed/" + seed + "/" + this.seed);
}
public Project(long seed, SaveLoader.Type type) {
SaveLoader.genType = type;
saveLoaded = false;
//Enter seed data:
this.setSeed(seed);
this.seed = seed;
this.seedText = "Seed: " + seed;
init();
manager = new ChunkManager(seed);
manager.start();
BorderLayout layout = new BorderLayout();
this.setLayout(layout);
//Create MapViewer
map = new MapViewer(this);
add(map, BorderLayout.CENTER);
minfo = new MapInfoPanel(map);
add(minfo, BorderLayout.EAST);
//Debug
this.setBackground(Color.BLUE);
//Timer:
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
tick();
}
}, 20, 20);
}
public void tick() {
@ -42,20 +88,6 @@ public class Project extends JPanel {
minfo.repaint();
}
public Project(String seed, FinderWindow window, SaveLoader.Type type) {
this(stringToLong(seed), window, type);
this.seedText = "Seed: \"" + seed + "\" (" + this.seed + ")";
Google.track("seed/" + seed + "/" + this.seed);
}
public Project(String seed, FinderWindow window) {
this(stringToLong(seed), window);
this.seedText = "Seed: \"" + seed + "\" (" + this.seed + ")";
Google.track("seed/" + seed + "/" + this.seed);
}
public void dispose() {
map.dispose();
map = null;
@ -70,46 +102,6 @@ public class Project extends JPanel {
}
public Project(SaveLoader file) {
saveLoaded = true;
save = file;
//Enter seed data:
this.setSeed(file.seed);
this.seedText = "Seed: " + seed;
init();
Google.track("seed/file/" + this.seed);
List<Player> players = file.getPlayers();
manager.setPlayerData(players);
}
private void init() {
manager = new ChunkManager(seed);
manager.start();
BorderLayout layout = new BorderLayout();
this.setLayout(layout);
//Create MapViewer
map = new MapViewer(this);
add(map, BorderLayout.CENTER);
minfo = new MapInfoPanel(map);
add(minfo, BorderLayout.EAST);
//Debug
this.setBackground(Color.BLUE);
//Timer:
timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
tick();
}
}, 20, 20);
}
private static long stringToLong(String seed) {
long ret;
try {
@ -138,7 +130,7 @@ public class Project extends JPanel {
}
public Fragment getFragment(int x, int y) {
Fragment frag = new Fragment(x,y,FRAGMENT_SIZE, this);
Fragment frag = new Fragment(x, y, FRAGMENT_SIZE);
manager.requestChunk(frag);
return frag;
@ -147,5 +139,4 @@ public class Project extends JPanel {
public void moveMapTo(int x, int y) {
map.centerAndReset(x, y);
}
}

View File

@ -95,7 +95,7 @@ public class AmidstMenu extends JMenuBar {
//If a string was returned, say so.
if (worldType != null)
window.setProject(new Project(s, window, worldType));
window.setProject(new Project(s, worldType));
}
}
});

View File

@ -20,7 +20,6 @@ public enum MapMarkers {
public final BufferedImage image;
//we test, therefore this exception isnt thrown.
private MapMarkers() {
String fileName = this.toString().toLowerCase() + ".png";
image = ResourceLoader.getImage(fileName);

View File

@ -18,7 +18,7 @@ public class ResourceLoader {
public static BufferedImage getImage(String name) {
try {
return ImageIO.read(getResourceURL(name));
} catch (IOException e) {
} catch (IOException e) { //Dont forget to run the tests :)
throw new RuntimeException(e);
}
}