Towny fixes - multiple areas on multiple worlds per town

This commit is contained in:
Mike Primm 2011-08-25 11:11:31 +08:00 committed by mikeprimm
parent ff4b036c6a
commit 04cc6aba43
3 changed files with 170 additions and 118 deletions

View file

@ -53,44 +53,38 @@ componentconstructors['regions'] = function(dynmap, configuration) {
}
function create3DBoxLayer(maxx, minx, maxy, miny, maxz, minz, style) {
return new L.FeatureGroup([
new L.Polygon([
return new L.MultiPolygon([
[
latlng(minx,miny,minz),
latlng(maxx,miny,minz),
latlng(maxx,miny,maxz),
latlng(minx,miny,maxz)
], style),
new L.Polygon([
],[
latlng(minx,maxy,minz),
latlng(maxx,maxy,minz),
latlng(maxx,maxy,maxz),
latlng(minx,maxy,maxz)
], style),
new L.Polygon([
],[
latlng(minx,miny,minz),
latlng(minx,maxy,minz),
latlng(maxx,maxy,minz),
latlng(maxx,miny,minz)
], style),
new L.Polygon([
],[
latlng(maxx,miny,minz),
latlng(maxx,maxy,minz),
latlng(maxx,maxy,maxz),
latlng(maxx,miny,maxz)
], style),
new L.Polygon([
],[
latlng(minx,miny,maxz),
latlng(minx,maxy,maxz),
latlng(maxx,maxy,maxz),
latlng(maxx,miny,maxz)
], style),
new L.Polygon([
],[
latlng(minx,miny,minz),
latlng(minx,maxy,minz),
latlng(minx,maxy,maxz),
latlng(minx,miny,maxz)
], style)
]);
]], style);
}
function create2DBoxLayer(maxx, minx, maxy, miny, maxz, minz, style) {
@ -117,12 +111,12 @@ componentconstructors['regions'] = function(dynmap, configuration) {
sidelist[1] = botlist[i];
sidelist[2] = botlist[(i+1)%xarray.length];
sidelist[3] = toplist[(i+1)%xarray.length];
polylist[i] = new L.Polygon(sidelist, style);
polylist[i] = sidelist;
}
polylist[xarray.length] = new L.Polygon(botlist, style);
polylist[xarray.length+1] = new L.Polygon(toplist, style);
polylist[xarray.length] = botlist;
polylist[xarray.length+1] = toplist;
return new L.FeatureGroup(polylist);
return new L.MultiPolygon(polylist, style);
}
function create2DOutlineLayer(xarray, maxy, miny, zarray, style) {

View file

@ -1,14 +1,12 @@
regionConstructors['Towny'] = function(dynmap, configuration) {
// Helper function.
function createOutlineFromRegion(name, region, outCreator) {
function createOutlineFromRegion(name, region, points, outCreator) {
var xarray = [];
var zarray = [];
if(region.points) {
var i;
for(i = 0; i < region.points.length; i++) {
xarray[i] = region.points[i].x;
zarray[i] = region.points[i].z;
}
var i;
for(i = 0; i < points.length; i++) {
xarray[i] = points[i].x;
zarray[i] = points[i].z;
}
var ymin = 64;
var ymax = 65;
@ -20,14 +18,17 @@ regionConstructors['Towny'] = function(dynmap, configuration) {
$.getJSON('standalone/'+regionFile, function(data) {
var boxLayers = [];
$.each(data, function(name, region) {
var outLayer = createOutlineFromRegion(name, region, configuration.createOutlineLayer);
if (outLayer) {
outLayer.bindPopup(configuration.createPopupContent(name,
$.extend(region, {
owners: { players: [region.mayor] },
members: { players: [ region.residents ] }
})));
boxLayers.push(outLayer);
var i;
for(i = 0; i < region.points.length; i++) {
var outLayer = createOutlineFromRegion(name, region, region.points[i], configuration.createOutlineLayer);
if (outLayer) {
outLayer.bindPopup(configuration.createPopupContent(name,
$.extend(region, {
owners: { players: [region.mayor] },
members: { players: [ region.residents ] }
})));
boxLayers.push(outLayer);
}
}
});
configuration.result(new L.LayerGroup(boxLayers));