Add support for compass rose in all 8 cardinal directions
@ -75,7 +75,7 @@ public class DynmapPlugin extends JavaPlugin {
|
|||||||
|
|
||||||
/* Add/Replace branches in configuration tree with contribution from a separate file */
|
/* Add/Replace branches in configuration tree with contribution from a separate file */
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private void mergeConfigurationBranch(ConfigurationNode cfgnode, String branch, boolean replace_existing) {
|
private void mergeConfigurationBranch(ConfigurationNode cfgnode, String branch, boolean replace_existing, boolean islist) {
|
||||||
Object srcbranch = cfgnode.getObject(branch);
|
Object srcbranch = cfgnode.getObject(branch);
|
||||||
if(srcbranch == null)
|
if(srcbranch == null)
|
||||||
return;
|
return;
|
||||||
@ -86,9 +86,9 @@ public class DynmapPlugin extends JavaPlugin {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* If list, merge by "name" attribute */
|
/* If list, merge by "name" attribute */
|
||||||
if((srcbranch instanceof List) && (destbranch instanceof List)) {
|
if(islist) {
|
||||||
List<ConfigurationNode> dest = (List<ConfigurationNode>)destbranch;
|
List<ConfigurationNode> dest = configuration.getNodes(branch);
|
||||||
List<ConfigurationNode> src = (List<ConfigurationNode>)srcbranch;
|
List<ConfigurationNode> src = cfgnode.getNodes(branch);
|
||||||
/* Go through new records : see what to do with each */
|
/* Go through new records : see what to do with each */
|
||||||
for(ConfigurationNode node : src) {
|
for(ConfigurationNode node : src) {
|
||||||
String name = node.getString("name", null);
|
String name = node.getString("name", null);
|
||||||
@ -96,7 +96,7 @@ public class DynmapPlugin extends JavaPlugin {
|
|||||||
/* Walk destination - see if match */
|
/* Walk destination - see if match */
|
||||||
boolean matched = false;
|
boolean matched = false;
|
||||||
for(ConfigurationNode dnode : dest) {
|
for(ConfigurationNode dnode : dest) {
|
||||||
String dname = node.getString("name", null);
|
String dname = dnode.getString("name", null);
|
||||||
if(dname == null) continue;
|
if(dname == null) continue;
|
||||||
if(dname.equals(name)) { /* Match? */
|
if(dname.equals(name)) { /* Match? */
|
||||||
if(replace_existing) {
|
if(replace_existing) {
|
||||||
@ -112,11 +112,12 @@ public class DynmapPlugin extends JavaPlugin {
|
|||||||
dest.add(node);
|
dest.add(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
configuration.put(branch,dest);
|
||||||
}
|
}
|
||||||
/* If configuration node, merge by key */
|
/* If configuration node, merge by key */
|
||||||
else if((srcbranch instanceof ConfigurationNode) && (destbranch instanceof ConfigurationNode)) {
|
else {
|
||||||
ConfigurationNode src = (ConfigurationNode)srcbranch;
|
ConfigurationNode src = cfgnode.getNode(branch);
|
||||||
ConfigurationNode dest = (ConfigurationNode)destbranch;
|
ConfigurationNode dest = configuration.getNode(branch);
|
||||||
for(String key : src.keySet()) { /* Check each contribution */
|
for(String key : src.keySet()) { /* Check each contribution */
|
||||||
if(dest.containsKey(key)) { /* Exists? */
|
if(dest.containsKey(key)) { /* Exists? */
|
||||||
if(replace_existing) { /* If replacing, do so */
|
if(replace_existing) { /* If replacing, do so */
|
||||||
@ -173,7 +174,7 @@ public class DynmapPlugin extends JavaPlugin {
|
|||||||
org.bukkit.util.config.Configuration cfg = new org.bukkit.util.config.Configuration(f);
|
org.bukkit.util.config.Configuration cfg = new org.bukkit.util.config.Configuration(f);
|
||||||
cfg.load();
|
cfg.load();
|
||||||
ConfigurationNode cn = new ConfigurationNode(cfg);
|
ConfigurationNode cn = new ConfigurationNode(cfg);
|
||||||
mergeConfigurationBranch(cn, "worlds", true);
|
mergeConfigurationBranch(cn, "worlds", true, true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
try {
|
try {
|
||||||
@ -192,7 +193,7 @@ public class DynmapPlugin extends JavaPlugin {
|
|||||||
org.bukkit.util.config.Configuration cfg = new org.bukkit.util.config.Configuration(f);
|
org.bukkit.util.config.Configuration cfg = new org.bukkit.util.config.Configuration(f);
|
||||||
cfg.load();
|
cfg.load();
|
||||||
ConfigurationNode cn = new ConfigurationNode(cfg);
|
ConfigurationNode cn = new ConfigurationNode(cfg);
|
||||||
mergeConfigurationBranch(cn, "templates", false);
|
mergeConfigurationBranch(cn, "templates", false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now, process custom-templates.txt - these are user supplied, so override anything matcing */
|
/* Now, process custom-templates.txt - these are user supplied, so override anything matcing */
|
||||||
@ -201,7 +202,7 @@ public class DynmapPlugin extends JavaPlugin {
|
|||||||
org.bukkit.util.config.Configuration cfg = new org.bukkit.util.config.Configuration(f);
|
org.bukkit.util.config.Configuration cfg = new org.bukkit.util.config.Configuration(f);
|
||||||
cfg.load();
|
cfg.load();
|
||||||
ConfigurationNode cn = new ConfigurationNode(cfg);
|
ConfigurationNode cn = new ConfigurationNode(cfg);
|
||||||
mergeConfigurationBranch(cn, "templates", true);
|
mergeConfigurationBranch(cn, "templates", true, false);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
try {
|
try {
|
||||||
|
@ -518,6 +518,7 @@ public class FlatMap extends MapType {
|
|||||||
s(o, "backgroundday", c.getString("backgroundday"));
|
s(o, "backgroundday", c.getString("backgroundday"));
|
||||||
s(o, "backgroundnight", c.getString("backgroundnight"));
|
s(o, "backgroundnight", c.getString("backgroundnight"));
|
||||||
s(o, "bigmap", this.isBigWorldMap(world));
|
s(o, "bigmap", this.isBigWorldMap(world));
|
||||||
|
s(o, "compassview", "S"); /* Always from south */
|
||||||
a(worldObject, "maps", o);
|
a(worldObject, "maps", o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -928,6 +928,7 @@ public class IsoHDPerspective implements HDPerspective {
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static String[] directions = { "N", "NE", "E", "SE", "S", "SW", "W", "NW" };
|
||||||
@Override
|
@Override
|
||||||
public void addClientConfiguration(JSONObject mapObject) {
|
public void addClientConfiguration(JSONObject mapObject) {
|
||||||
s(mapObject, "perspective", name);
|
s(mapObject, "perspective", name);
|
||||||
@ -936,5 +937,8 @@ public class IsoHDPerspective implements HDPerspective {
|
|||||||
s(mapObject, "scale", scale);
|
s(mapObject, "scale", scale);
|
||||||
s(mapObject, "worldtomap", world_to_map.toJSON());
|
s(mapObject, "worldtomap", world_to_map.toJSON());
|
||||||
s(mapObject, "maptoworld", map_to_world.toJSON());
|
s(mapObject, "maptoworld", map_to_world.toJSON());
|
||||||
|
int dir = ((360 + (int)(22.5+azimuth)) / 45) % 8;;
|
||||||
|
s(mapObject, "compassview", directions[dir]);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -579,6 +579,7 @@ public class DefaultTileRenderer implements MapTileRenderer {
|
|||||||
s(o, "backgroundday", c.getString("backgroundday"));
|
s(o, "backgroundday", c.getString("backgroundday"));
|
||||||
s(o, "backgroundnight", c.getString("backgroundnight"));
|
s(o, "backgroundnight", c.getString("backgroundnight"));
|
||||||
s(o, "bigmap", map.isBigWorldMap(world));
|
s(o, "bigmap", map.isBigWorldMap(world));
|
||||||
|
s(o, "compassview", "SE"); /* Always from southeast */
|
||||||
a(worldObject, "maps", o);
|
a(worldObject, "maps", o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -565,31 +565,57 @@
|
|||||||
* Compass
|
* Compass
|
||||||
*/
|
*/
|
||||||
|
|
||||||
.compass {
|
.compass, .compass_NE, .compass_SE, .compass_NW, .compass_SW {
|
||||||
display: block;
|
display: block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
|
|
||||||
top: 20px;
|
top: 20px;
|
||||||
right: 32px;
|
right: 32px;
|
||||||
|
|
||||||
height: 84px;
|
height: 84px;
|
||||||
width: 83px;
|
width: 83px;
|
||||||
|
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.compass, .compass_SE {
|
||||||
background-image: url(../images/compass.png);
|
background-image: url(../images/compass.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
.compass_flat {
|
.compass_NE {
|
||||||
|
background-image: url(../images/compass_NE.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.compass_NW {
|
||||||
|
background-image: url(../images/compass_NW.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.compass_SW {
|
||||||
|
background-image: url(../images/compass_SW.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.compass_flat, .compass_N, .compass_E, .compass_W, .compass_S {
|
||||||
top: 10px;
|
top: 10px;
|
||||||
right: 21px;
|
right: 21px;
|
||||||
|
|
||||||
height: 105px;
|
height: 105px;
|
||||||
width: 105px;
|
width: 105px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.compass_flat, .compass_S {
|
||||||
background-image: url(../images/compass_flat.png);
|
background-image: url(../images/compass_flat.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.compass_N {
|
||||||
|
background-image: url(../images/compass_N.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.compass_E {
|
||||||
|
background-image: url(../images/compass_E.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.compass_W {
|
||||||
|
background-image: url(../images/compass_W.png);
|
||||||
|
}
|
||||||
|
|
||||||
/*******************
|
/*******************
|
||||||
* Chat
|
* Chat
|
||||||
*/
|
*/
|
||||||
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.1 KiB |
BIN
web/images/compass_E.png
Normal file
After Width: | Height: | Size: 4.2 KiB |
BIN
web/images/compass_N.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
BIN
web/images/compass_NE.png
Normal file
After Width: | Height: | Size: 5.5 KiB |
BIN
web/images/compass_NW.png
Normal file
After Width: | Height: | Size: 5.0 KiB |
BIN
web/images/compass_SW.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
web/images/compass_W.png
Normal file
After Width: | Height: | Size: 4.1 KiB |
@ -292,7 +292,6 @@ DynMap.prototype = {
|
|||||||
|
|
||||||
var updateHeight = function() {
|
var updateHeight = function() {
|
||||||
playerlist.height(sidebar.innerHeight() - (playerlist.offset().top - worldlist.offset().top) - 64); // here we need a fix to avoid the static value, but it works fine this way :P
|
playerlist.height(sidebar.innerHeight() - (playerlist.offset().top - worldlist.offset().top) - 64); // here we need a fix to avoid the static value, but it works fine this way :P
|
||||||
console.log('scrollheight=' + playerlist.scrollHeight() + ', height=' + playerlist.height());
|
|
||||||
var scrollable = playerlist.scrollHeight() < playerlist.height();
|
var scrollable = playerlist.scrollHeight() < playerlist.height();
|
||||||
upbtn.toggle(scrollable);
|
upbtn.toggle(scrollable);
|
||||||
downbtn.toggle(scrollable);
|
downbtn.toggle(scrollable);
|
||||||
@ -357,8 +356,10 @@ DynMap.prototype = {
|
|||||||
}
|
}
|
||||||
$(me).trigger('mapchanging');
|
$(me).trigger('mapchanging');
|
||||||
if (me.maptype) {
|
if (me.maptype) {
|
||||||
|
$('.compass').removeClass('compass_' + me.maptype.compassview);
|
||||||
$('.compass').removeClass('compass_' + me.maptype.name);
|
$('.compass').removeClass('compass_' + me.maptype.name);
|
||||||
}
|
}
|
||||||
|
$('.compass').addClass('compass_' + map.compassview);
|
||||||
$('.compass').addClass('compass_' + map.name);
|
$('.compass').addClass('compass_' + map.name);
|
||||||
var worldChanged = me.world !== map.world;
|
var worldChanged = me.world !== map.world;
|
||||||
var projectionChanged = me.map.getProjection() !== map.projection;
|
var projectionChanged = me.map.getProjection() !== map.projection;
|
||||||
|