mirror of
https://github.com/webbukkit/dynmap.git
synced 2024-11-30 14:13:38 +01:00
Merge of trunk v20
This commit is contained in:
parent
60448dda09
commit
3f46675f3f
@ -135,6 +135,12 @@ public class MapListener extends PluginListener {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(split[0].equals("/map_regenzoom")) {
|
||||||
|
mgr.regenerateZoom((int) player.getX(), (int) player.getY(), (int) player.getZ());
|
||||||
|
player.sendMessage(Colors.Rose + "regenerateZoom done");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import java.util.ListIterator;
|
|||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
@ -237,28 +238,6 @@ public class MapManager extends Thread {
|
|||||||
log.info("Map renderer has started.");
|
log.info("Map renderer has started.");
|
||||||
|
|
||||||
while(running) {
|
while(running) {
|
||||||
|
|
||||||
/*
|
|
||||||
if(debugPlayer != null) {
|
|
||||||
Player p = etc.getServer().getPlayer(debugPlayer);
|
|
||||||
if(p != null) {
|
|
||||||
int x = (int) p.getX();
|
|
||||||
int y = (int) p.getY();
|
|
||||||
int z = (int) p.getZ();
|
|
||||||
int dx = x - anchorx;
|
|
||||||
int dy = y - anchory;
|
|
||||||
int dz = z - anchorz;
|
|
||||||
int px = dx + dz;
|
|
||||||
int py = dx - dz - dy;
|
|
||||||
|
|
||||||
int tx = tilex(px);
|
|
||||||
int ty = tiley(py);
|
|
||||||
|
|
||||||
p.sendMessage(Colors.Red + "pos " + x + "," + y + "," + z + " -> px=" + px + " py=" + py + " -> tx=" + tx + " ty=" + ty);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
MapTile t = this.popStaleTile();
|
MapTile t = this.popStaleTile();
|
||||||
if(t != null) {
|
if(t != null) {
|
||||||
t.render(this);
|
t.render(this);
|
||||||
@ -308,12 +287,6 @@ public class MapManager extends Thread {
|
|||||||
|
|
||||||
r = pushStaleTile(tx, ty);
|
r = pushStaleTile(tx, ty);
|
||||||
|
|
||||||
/*
|
|
||||||
if(r) {
|
|
||||||
debug("touch stale " + x + "," + y + "," + z + " -> px=" + px + " py=" + py + " -> tx=" + tx + " ty=" + ty);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
boolean ledge = tilex(px - 4) != tx;
|
boolean ledge = tilex(px - 4) != tx;
|
||||||
boolean tedge = tiley(py - 4) != ty;
|
boolean tedge = tiley(py - 4) != ty;
|
||||||
boolean redge = tilex(px + 4) != tx;
|
boolean redge = tilex(px + 4) != tx;
|
||||||
@ -456,10 +429,10 @@ public class MapManager extends Thread {
|
|||||||
int px = dx + dz;
|
int px = dx + dz;
|
||||||
int py = dx - dz - dy;
|
int py = dx - dz - dy;
|
||||||
|
|
||||||
int zpx = ztilex(tilex(px));
|
int fzpx = ztilex(tilex(px));
|
||||||
int zpy = ztiley(tiley(py));
|
int fzpy = ztiley(tiley(py));
|
||||||
|
|
||||||
class Pair {
|
class Pair implements Comparator {
|
||||||
public int x;
|
public int x;
|
||||||
public int y;
|
public int y;
|
||||||
public Pair(int x, int y)
|
public Pair(int x, int y)
|
||||||
@ -473,23 +446,65 @@ public class MapManager extends Thread {
|
|||||||
return (x << 16) ^ y;
|
return (x << 16) ^ y;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean equals(Pair o)
|
public boolean equals(Object o)
|
||||||
{
|
{
|
||||||
return x == o.x && y == o.y;
|
Pair p = (Pair) o;
|
||||||
|
return x == p.x && y == p.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int compare(Object o1, Object o2)
|
||||||
|
{
|
||||||
|
Pair p1 = (Pair) o1;
|
||||||
|
Pair p2 = (Pair) o2;
|
||||||
|
if(p1.x < p1.x) return -1;
|
||||||
|
if(p1.x > p1.x) return 1;
|
||||||
|
if(p1.y < p1.y) return -1;
|
||||||
|
if(p1.y > p1.y) return 1;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HashSet<Pair> visited = new HashSet<Pair>();
|
HashSet<Pair> visited = new HashSet<Pair>();
|
||||||
HashSet<Pair> open = new HashSet<Pair>();
|
Vector<Pair> open = new Vector<Pair>();
|
||||||
|
|
||||||
|
Pair fp = new Pair(fzpx, fzpy);
|
||||||
|
open.add(fp);
|
||||||
|
visited.add(fp);
|
||||||
|
|
||||||
|
while(open.size() > 0) {
|
||||||
|
Pair p = open.remove(open.size() - 1);
|
||||||
|
|
||||||
|
int zpx = p.x;
|
||||||
|
int zpy = p.y;
|
||||||
|
|
||||||
|
log.info("Regenerating zoom tile " + zpx + "," + zpy);
|
||||||
|
|
||||||
|
int g = regenZoomTile(zpx, zpy);
|
||||||
|
|
||||||
|
if(g > 0) {
|
||||||
|
Pair[] np = new Pair[4];
|
||||||
|
np[0] = new Pair(zpx-zTileWidth, zpy);
|
||||||
|
np[1] = new Pair(zpx+zTileWidth, zpy);
|
||||||
|
np[2] = new Pair(zpx, zpy-zTileHeight);
|
||||||
|
np[3] = new Pair(zpx, zpy+zTileHeight);
|
||||||
|
|
||||||
|
for(int i=0; i<4; i++) {
|
||||||
|
if(!visited.contains(np[i])) {
|
||||||
|
visited.add(np[i]);
|
||||||
|
open.add(np[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* regenerate zoom-out tile
|
/* regenerate zoom-out tile
|
||||||
* returns number of valid subtiles */
|
* returns number of valid subtiles */
|
||||||
public int regenZoomTile(int zpx, int zpy)
|
public int regenZoomTile(int zpx, int zpy)
|
||||||
{
|
{
|
||||||
int px1 = (zpx >= 0) ? zpx + tileWidth : zpx - zTileWidth;
|
int px1 = zpx + tileWidth;
|
||||||
int py1 = (zpy >= 0) ? zpy : zpy - zTileHeight;
|
int py1 = zpy;
|
||||||
int px2 = px1 - tileWidth;
|
int px2 = zpx;
|
||||||
int py2 = py1 + tileHeight;
|
int py2 = py1 + tileHeight;
|
||||||
|
|
||||||
MapTile t1 = getTileByPosition(px1, py1);
|
MapTile t1 = getTileByPosition(px1, py1);
|
||||||
|
@ -214,9 +214,14 @@ public class MapTile {
|
|||||||
public BufferedImage loadTile(MapManager mgr)
|
public BufferedImage loadTile(MapManager mgr)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
File file = new File(getPath(mgr));
|
String path = getPath(mgr);
|
||||||
return ImageIO.read(file);
|
//log.info("Loading tile from " + path);
|
||||||
|
File file = new File(path);
|
||||||
|
BufferedImage im = ImageIO.read(file);
|
||||||
|
//log.info("OK");
|
||||||
|
return im;
|
||||||
} catch(IOException e) {
|
} catch(IOException e) {
|
||||||
|
//log.info("failed: " + e.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
Loading…
Reference in New Issue
Block a user