Added styling to regions (thereby also changing the configuration a bit, editing HTML in configuration is not possible anymore)

This commit is contained in:
FrozenCow 2011-07-22 00:26:32 +02:00
parent 846e8c45bd
commit 8a9dd38ada
6 changed files with 206 additions and 141 deletions

View file

@ -1,68 +1,37 @@
Array.max = function( array ) {
return Math.max.apply( Math, array );
};
Array.min = function( array ) {
return Math.min.apply( Math, array );
};
function createPolygonsFromWorldGuardRegion(latlng, name, region) {
if(region.points) {
var i;
var xs = region.points.map(function(p) { return p.x; });
var zs = region.points.map(function(p) { return p.z; });
return createPolygonSurfaces(latlng, Array.max(xs), Array.min(xs), region['max-y'], region['min-y'], Array.max(zs), Array.min(zs));
}
if(!region.min || !region.max)
return [];
if(region.max.y <= region.min.y)
region.min.y = region.max.y - 1;
return createPolygonSurfaces(latlng, region.max.x, region.min.x, region.max.y, region.min.y, region.max.z, region.min.z);
}
function createPopupContent(name, region) {
return $('<div/>')
.append($('<span/>').addClass('regionname').text(name))
.append(region.owners.players && $('<span/>').addClass('playerowners').text(region.owners.players.concat()))
.append(region.owners.groups && $('<span/>').addClass('groupowners').text(region.owners.groups.concat()))
.append(region.members.players && $('<span/>').addClass('playermembers').text(region.members.players.concat()))
.append(region.members.groups && $('<span/>').addClass('groupmembers').text(region.members.groups.concat()))
.append(region.parent && $('<span/>').addClass('regionparent').text(region.parent))
.append(region.flags && function() {
var regionflags = $('<span/>').addClass('regionflags');
$.each(region.flags, function(name, value) {
regionflags.append($('<span/>').addClass('regionflag').text(name + ': ' + value));
});
return regionflags;
}())
.append($('<span/>').addClass('regionpriority').text(region.priority))
[0];
};
regionConstructors['WorldGuard'] = function(dynmap, worldName, result) {
var latlng = function(x, y, z) {
var l;
if (typeof x === 'Object' && !y && !z) {
l = x;
} else {
l = new Location(undefined, x,y,z);
regionConstructors['WorldGuard'] = function(dynmap, configuration) {
// Helper function.
function createBoxFromRegion(region, boxCreator) {
function ArrayMax( array ) {
return Math.max.apply( Math, array );
}
return dynmap.getProjection().fromLocationToLatLng(l);
};
function ArrayMin( array ) {
return Math.min.apply( Math, array );
}
if(region.points) {
var i;
var xs = region.points.map(function(p) { return p.x; });
var zs = region.points.map(function(p) { return p.z; });
return boxCreator(ArrayMax(xs), ArrayMin(xs), region['max-y'], region['min-y'], ArrayMax(zs), ArrayMin(zs));
}
if(!region.min || !region.max)
return [];
if(region.max.y <= region.min.y)
region.min.y = region.max.y - 1;
return boxCreator(region.max.x, region.min.x, region.max.y, region.min.y, region.max.z, region.min.z);
}
regionFile = regionCfg.filename.substr(0, regionCfg.filename.lastIndexOf('.'));
regionFile += '_'+worldName+'.json';
var regionFile = configuration.filename.substr(0, configuration.filename.lastIndexOf('.'));
regionFile += '_'+configuration.worldName+'.json';
$.getJSON('standalone/'+regionFile, function(data) {
var regionLayers = {};
var boxLayers = [];
$.each(data, function(name, region) {
var polygons = createPolygonsFromWorldGuardRegion(latlng, name, region);
var regionLayer = new L.FeatureGroup(polygons);
var boxLayer = createBoxFromRegion(region, configuration.createBoxLayer);
regionLayer.bindPopup(createPopupContent(name, region));
boxLayer.bindPopup(configuration.createPopupContent(name, region));
regionLayers[name] = regionLayer;
boxLayers.push(boxLayer);
});
result(regionLayers);
configuration.result(new L.LayerGroup(boxLayers));
});
};