organized project constructors
parent
6ecbd88f36
commit
bae368b8dc
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -20,7 +20,6 @@ public enum MapMarkers {
|
|||
|
||||
public final BufferedImage image;
|
||||
|
||||
//we test, therefore this exception isn’t thrown.
|
||||
private MapMarkers() {
|
||||
String fileName = this.toString().toLowerCase() + ".png";
|
||||
image = ResourceLoader.getImage(fileName);
|
||||
|
|
|
@ -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) { //Don’t forget to run the tests :)
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue