Retire regions components (Residence, Towny, WorldGuard, Factions)
This commit is contained in:
parent
4f2f968353
commit
3e4bc59834
9 changed files with 5 additions and 1301 deletions
|
|
@ -1,204 +1,3 @@
|
|||
var regionConstructors = {};
|
||||
|
||||
componentconstructors['regions'] = function(dynmap, configuration) {
|
||||
|
||||
// Compatibility with older configurations.
|
||||
if (configuration.regionstyle) {
|
||||
configuration.regionstyle = $.extend({
|
||||
stroke: true,
|
||||
color: configuration.regionstyle.strokeColor,
|
||||
opacity: configuration.regionstyle.strokeOpacity || 0.01,
|
||||
weight: configuration.regionstyle.strokeWeight,
|
||||
fill: true,
|
||||
smoothFactor: 0.0,
|
||||
fillOpacity: configuration.regionstyle.fillOpacity || 0.01,
|
||||
fillColor: configuration.regionstyle.fillColor
|
||||
}, configuration.regionstyle);
|
||||
}
|
||||
|
||||
function getStyle(name, group) {
|
||||
var style = $.extend({}, configuration.regionstyle);
|
||||
if(configuration.groupstyle && group && configuration.groupstyle[group]) {
|
||||
var cs = configuration.groupstyle[group];
|
||||
if(cs.strokeColor)
|
||||
style.color = cs.strokeColor;
|
||||
if(cs.strokeOpacity)
|
||||
style.opacity = cs.strokeOpacity;
|
||||
if(cs.strokeWeight)
|
||||
style.weight = cs.strokeWeight;
|
||||
if(cs.fillOpacity)
|
||||
style.fillOpacity = cs.fillOpacity;
|
||||
if(cs.fillColor)
|
||||
style.fillColor = cs.fillColor;
|
||||
}
|
||||
if(configuration.customstyle && name && configuration.customstyle[name]) {
|
||||
var cs = configuration.customstyle[name];
|
||||
if(cs.strokeColor)
|
||||
style.color = cs.strokeColor;
|
||||
if(cs.strokeOpacity)
|
||||
style.opacity = cs.strokeOpacity;
|
||||
if(cs.strokeWeight)
|
||||
style.weight = cs.strokeWeight;
|
||||
if(cs.fillOpacity)
|
||||
style.fillOpacity = cs.fillOpacity;
|
||||
if(cs.fillColor)
|
||||
style.fillColor = cs.fillColor;
|
||||
}
|
||||
return style;
|
||||
}
|
||||
|
||||
// Helper functions
|
||||
latlng = function(x, y, z) {
|
||||
return dynmap.getProjection().fromLocationToLatLng(new Location(undefined, x,y,z));
|
||||
}
|
||||
|
||||
function create3DBoxLayer(maxx, minx, maxy, miny, maxz, minz, style) {
|
||||
return new L.MultiPolygon([
|
||||
[
|
||||
latlng(minx,miny,minz),
|
||||
latlng(maxx,miny,minz),
|
||||
latlng(maxx,miny,maxz),
|
||||
latlng(minx,miny,maxz)
|
||||
],[
|
||||
latlng(minx,maxy,minz),
|
||||
latlng(maxx,maxy,minz),
|
||||
latlng(maxx,maxy,maxz),
|
||||
latlng(minx,maxy,maxz)
|
||||
],[
|
||||
latlng(minx,miny,minz),
|
||||
latlng(minx,maxy,minz),
|
||||
latlng(maxx,maxy,minz),
|
||||
latlng(maxx,miny,minz)
|
||||
],[
|
||||
latlng(maxx,miny,minz),
|
||||
latlng(maxx,maxy,minz),
|
||||
latlng(maxx,maxy,maxz),
|
||||
latlng(maxx,miny,maxz)
|
||||
],[
|
||||
latlng(minx,miny,maxz),
|
||||
latlng(minx,maxy,maxz),
|
||||
latlng(maxx,maxy,maxz),
|
||||
latlng(maxx,miny,maxz)
|
||||
],[
|
||||
latlng(minx,miny,minz),
|
||||
latlng(minx,maxy,minz),
|
||||
latlng(minx,maxy,maxz),
|
||||
latlng(minx,miny,maxz)
|
||||
]], style);
|
||||
}
|
||||
|
||||
function create2DBoxLayer(maxx, minx, maxy, miny, maxz, minz, style) {
|
||||
return new L.Polygon([
|
||||
latlng(minx,64,minz),
|
||||
latlng(maxx,64,minz),
|
||||
latlng(maxx,64,maxz),
|
||||
latlng(minx,64,maxz)
|
||||
], style);
|
||||
}
|
||||
|
||||
function create3DOutlineLayer(xarray, maxy, miny, zarray, style) {
|
||||
var toplist = [];
|
||||
var botlist = [];
|
||||
var i;
|
||||
var polylist = [];
|
||||
for(i = 0; i < xarray.length; i++) {
|
||||
toplist[i] = latlng(xarray[i], maxy, zarray[i]);
|
||||
botlist[i] = latlng(xarray[i], miny, zarray[i]);
|
||||
}
|
||||
for(i = 0; i < xarray.length; i++) {
|
||||
var sidelist = [];
|
||||
sidelist[0] = toplist[i];
|
||||
sidelist[1] = botlist[i];
|
||||
sidelist[2] = botlist[(i+1)%xarray.length];
|
||||
sidelist[3] = toplist[(i+1)%xarray.length];
|
||||
polylist[i] = sidelist;
|
||||
}
|
||||
polylist[xarray.length] = botlist;
|
||||
polylist[xarray.length+1] = toplist;
|
||||
|
||||
return new L.MultiPolygon(polylist, style);
|
||||
}
|
||||
|
||||
function create2DOutlineLayer(xarray, maxy, miny, zarray, style) {
|
||||
var llist = [];
|
||||
var i;
|
||||
for(i = 0; i < xarray.length; i++) {
|
||||
llist[i] = latlng(xarray[i], 64, zarray[i]);
|
||||
}
|
||||
return new L.Polygon(llist, style);
|
||||
}
|
||||
|
||||
function createPopupContent(name, region) {
|
||||
function join(a) {
|
||||
if (a instanceof Array) {
|
||||
return a.join(', ');
|
||||
} else if (typeof a === 'string') {
|
||||
return a;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
var members = region.members || {};
|
||||
var popup = this.infowindow || '<div class="infowindow"><span style="font-size:120%;">%regionname%</span><br /> Owner <span style="font-weight:bold;">%playerowners%</span><br />Flags<br /><span style="font-weight:bold;">%flags%</span></div>';
|
||||
popup = popup.replace('%regionname%', name);
|
||||
popup = popup.replace('%playerowners%', join(region.owners.players));
|
||||
popup = popup.replace('%groupowners%', join(region.owners.groups));
|
||||
popup = popup.replace('%playermanagers%', join(region.associates || ""));
|
||||
popup = popup.replace('%playermembers%', join(members.players));
|
||||
popup = popup.replace('%groupmembers%', join(members.groups));
|
||||
popup = popup.replace('%parent%', region.parent || "");
|
||||
popup = popup.replace('%priority%', region.priority || "");
|
||||
popup = popup.replace('%nation%', region.nation || "");
|
||||
var regionflags = "";
|
||||
$.each(region.flags, function(name, value) {
|
||||
regionflags = regionflags + "<span>" + name + ": " + value + "</span><br>";
|
||||
});
|
||||
popup = popup.replace('%flags%', regionflags);
|
||||
return $('<div/>').addClass('regioninfo')
|
||||
.append(popup)[0];
|
||||
}
|
||||
|
||||
var self = this;
|
||||
loadcss('css/regions.css');
|
||||
var regionType = configuration.name;
|
||||
loadjs('js/regions_' + regionType + '.js', function() {
|
||||
configuration.activeLayer = undefined;
|
||||
function undraw() {
|
||||
if (configuration.activeLayer) {
|
||||
configuration.activeLayer.clearLayers();
|
||||
}
|
||||
}
|
||||
function redraw() {
|
||||
undraw();
|
||||
var worldName = dynmap.world && dynmap.world.name;
|
||||
if (worldName) {
|
||||
regionConstructors[regionType](dynmap, $.extend({}, configuration, {
|
||||
component: self,
|
||||
worldName: worldName,
|
||||
createPopupContent: createPopupContent,
|
||||
createBoxLayer: configuration.use3dregions ? create3DBoxLayer : create2DBoxLayer,
|
||||
createOutlineLayer: configuration.use3dregions ? create3DOutlineLayer : create2DOutlineLayer,
|
||||
getStyle: getStyle,
|
||||
result: function(regionsLayer) {
|
||||
if(configuration.activeLayer) { /* Not first time */
|
||||
for(var i in regionsLayer._layers) {
|
||||
configuration.activeLayer.addLayer(regionsLayer._layers[i]);
|
||||
}
|
||||
regionsLayer.clearLayers();
|
||||
}
|
||||
else {
|
||||
configuration.activeLayer = regionsLayer;
|
||||
if(!configuration.hidebydefault)
|
||||
dynmap.map.addLayer(configuration.activeLayer);
|
||||
//dynmap.layercontrol.addOverlay(configuration.activeLayer, regionType);
|
||||
dynmap.addToLayerSelector(configuration.activeLayer, regionType, configuration.layerprio || 0);
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
$(dynmap).bind('mapchanged', redraw);
|
||||
$(dynmap).bind('mapchanging', undraw);
|
||||
redraw(true);
|
||||
});
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
regionConstructors['Factions'] = function(dynmap, configuration) {
|
||||
// Helper function.
|
||||
function createOutlineFromRegion(name, region, points, outCreator) {
|
||||
var xarray = [];
|
||||
var zarray = [];
|
||||
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;
|
||||
|
||||
return outCreator(xarray, ymax, ymin, zarray, configuration.getStyle(name, region.nation));
|
||||
}
|
||||
|
||||
var regionFile = 'factions_'+configuration.worldName+'.json';
|
||||
$.getJSON('standalone/'+regionFile, function(data) {
|
||||
var boxLayers = [];
|
||||
$.each(data, function(name, region) {
|
||||
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));
|
||||
|
||||
});
|
||||
};
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
regionConstructors['Residence'] = function(dynmap, configuration) {
|
||||
// Helper function.
|
||||
function createBoxFromArea(area, boxCreator) {
|
||||
return boxCreator(area.X1, area.X2, area.Y1, area.Y2, area.Z1, area.Z2);
|
||||
}
|
||||
|
||||
$.getJSON('standalone/res_' + configuration.worldName + '.json', function(data) {
|
||||
var boxLayers = [];
|
||||
$.each(data, function(name, residence) {
|
||||
if(configuration.worldName == residence.Permissions.World) {
|
||||
$.each(residence.Areas, function(aname, area) {
|
||||
var boxLayer = configuration.createBoxLayer(area.X1, area.X2, area.Y1, area.Y2, area.Z1, area.Z2, configuration.getStyle(name));
|
||||
|
||||
boxLayer.bindPopup(configuration.createPopupContent(name, $.extend(residence, {
|
||||
owners: { players: [residence.Permissions.Owner] },
|
||||
flags: residence.Permissions.AreaFlags
|
||||
})));
|
||||
|
||||
boxLayers.push(boxLayer);
|
||||
});
|
||||
$.each(residence.Subzones, function(szname, subzone) {
|
||||
$.each(subzone.Areas, function(name2, area2) {
|
||||
var subzoneLayer = configuration.createBoxLayer(area2.X1, area2.X2, area2.Y1, area2.Y2, area2.Z1, area2.Z2, configuration.getStyle(name+"."+szname, name));
|
||||
subzoneLayer.bindPopup(configuration.createPopupContent(name + '.' + szname, $.extend(subzone, {
|
||||
owners: { players: [subzone.Permissions.Owner] },
|
||||
flags: subzone.Permissions.AreaFlags
|
||||
})));
|
||||
boxLayers.push(subzoneLayer);
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
configuration.result(new L.LayerGroup(boxLayers));
|
||||
|
||||
});
|
||||
};
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
regionConstructors['Towny'] = function(dynmap, configuration) {
|
||||
// Helper function.
|
||||
function createOutlineFromRegion(name, region, points, outCreator) {
|
||||
var xarray = [];
|
||||
var zarray = [];
|
||||
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;
|
||||
|
||||
return outCreator(xarray, ymax, ymin, zarray, configuration.getStyle(name, region.nation));
|
||||
}
|
||||
|
||||
var regionFile = 'towny_'+configuration.worldName+'.json';
|
||||
$.getJSON('standalone/'+regionFile, function(data) {
|
||||
var boxLayers = [];
|
||||
$.each(data, function(name, region) {
|
||||
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));
|
||||
|
||||
});
|
||||
};
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
regionConstructors['WorldGuard'] = function(dynmap, configuration) {
|
||||
// Helper function.
|
||||
function createBoxFromRegion(name, region, boxCreator) {
|
||||
function ArrayMax( array ) {
|
||||
return Math.max.apply( Math, array );
|
||||
}
|
||||
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), configuration.getStyle(name));
|
||||
}
|
||||
if(!region.min || !region.max)
|
||||
return null;
|
||||
if(region.max.y <= region.min.y)
|
||||
region.min.y = region.max.y - 1;
|
||||
return boxCreator(region.max.x+1, region.min.x, region.max.y, region.min.y, region.max.z+1, region.min.z, configuration.getStyle(name));
|
||||
}
|
||||
|
||||
function createOutlineFromRegion(name, region, 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 ymin = 64;
|
||||
var ymax = 64;
|
||||
if(region['max-y'])
|
||||
ymax = region['max-y'];
|
||||
if(region['min-y'])
|
||||
ymin = region['min-y'];
|
||||
if(ymax < ymin) ymax = ymin;
|
||||
|
||||
return outCreator(xarray, ymax, ymin, zarray, configuration.getStyle(name));
|
||||
}
|
||||
|
||||
var regionFile = configuration.filename.substr(0, configuration.filename.lastIndexOf('.'));
|
||||
regionFile += '_'+configuration.worldName+'.json';
|
||||
$.getJSON('standalone/'+regionFile, function(data) {
|
||||
var boxLayers = [];
|
||||
$.each(data, function(name, region) {
|
||||
// Only handle cuboids for the moment (therefore skipping 'global')
|
||||
if (region.type === 'cuboid') {
|
||||
var boxLayer = createBoxFromRegion(name, region, configuration.createBoxLayer);
|
||||
// Skip errorous regions.
|
||||
if (boxLayer) {
|
||||
boxLayer.bindPopup(configuration.createPopupContent(name, region));
|
||||
|
||||
boxLayers.push(boxLayer);
|
||||
}
|
||||
}
|
||||
else if(region.type === 'poly2d') {
|
||||
var outLayer = createOutlineFromRegion(name, region, configuration.createOutlineLayer);
|
||||
if (outLayer) {
|
||||
outLayer.bindPopup(configuration.createPopupContent(name, region));
|
||||
boxLayers.push(outLayer);
|
||||
}
|
||||
}
|
||||
});
|
||||
configuration.result(new L.LayerGroup(boxLayers));
|
||||
|
||||
});
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue