From 2aa3a8cc028a1c1a21f0e78a6aa268aeb6daa262 Mon Sep 17 00:00:00 2001 From: CounterPillow Date: Mon, 31 Dec 2012 16:22:41 +0100 Subject: [PATCH 1/2] Added manual POI option Here's how to use it: have a list called "manualpois" in your config filled with objects that contain the attributes id, x, y and z. Feel free to add more attributes as you need them. Then, write filter functions to filter for your custom POIs (hint: use the id). --- overviewer_core/aux_files/genPOI.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/overviewer_core/aux_files/genPOI.py b/overviewer_core/aux_files/genPOI.py index 78390a5..786134f 100755 --- a/overviewer_core/aux_files/genPOI.py +++ b/overviewer_core/aux_files/genPOI.py @@ -100,6 +100,13 @@ def handlePlayers(rset, render, worldpath): "z": data['SpawnZ']} rset._pois['Players'].append(spawn) +def handleManual(rset, render, manualpois): + if not hasattr(rset, "_pois"): + rset._pois = dict(TileEntities=[], Entities=[]) + + if manualpois: + rset._pois['Manual'] = manualpois + def main(): if os.path.basename(sys.argv[0]) == """genPOI.py""": @@ -177,6 +184,7 @@ def main(): handleEntities(rset, os.path.join(destdir, rname), render, rname) handlePlayers(rset, render, worldpath) + handleManual(rset, render, config['manualpois']) logging.info("Done scanning regions") logging.info("Writing out javascript files") @@ -215,6 +223,15 @@ def main(): if "createInfoWindow" in poi: d.update({"createInfoWindow": poi['createInfoWindow']}) markerSetDict[name]['raw'].append(d) + for poi in rset._pois['Manual']: + result = filter_function(poi) + if result: + d = dict(x=poi['x'], y=poi['y'], z=poi['z'], text=result) + if "icon" in poi: + d.update({"icon": poi['icon']}) + if "createInfoWindow" in poi: + d.update({"createInfoWindow": poi['createInfoWindow']}) + markerSetDict[name]['raw'].append(d) #print markerSetDict with open(os.path.join(destdir, "markersDB.js"), "w") as output: From b13f0044e283863cc8ac5f7e86d3ebde13f128c3 Mon Sep 17 00:00:00 2001 From: CounterPillow Date: Mon, 31 Dec 2012 18:54:31 +0100 Subject: [PATCH 2/2] manualpois is now a per-render option --- overviewer_core/aux_files/genPOI.py | 8 +++++--- overviewer_core/settingsDefinition.py | 1 + overviewer_core/settingsValidators.py | 6 ++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/overviewer_core/aux_files/genPOI.py b/overviewer_core/aux_files/genPOI.py index 786134f..80439cb 100755 --- a/overviewer_core/aux_files/genPOI.py +++ b/overviewer_core/aux_files/genPOI.py @@ -100,12 +100,14 @@ def handlePlayers(rset, render, worldpath): "z": data['SpawnZ']} rset._pois['Players'].append(spawn) -def handleManual(rset, render, manualpois): +def handleManual(rset, manualpois): if not hasattr(rset, "_pois"): rset._pois = dict(TileEntities=[], Entities=[]) + rset._pois['Manual'] = [] + if manualpois: - rset._pois['Manual'] = manualpois + rset._pois['Manual'].extend(manualpois) def main(): @@ -184,7 +186,7 @@ def main(): handleEntities(rset, os.path.join(destdir, rname), render, rname) handlePlayers(rset, render, worldpath) - handleManual(rset, render, config['manualpois']) + handleManual(rset, render['manualpois']) logging.info("Done scanning regions") logging.info("Writing out javascript files") diff --git a/overviewer_core/settingsDefinition.py b/overviewer_core/settingsDefinition.py index a9c62c1..22509de 100644 --- a/overviewer_core/settingsDefinition.py +++ b/overviewer_core/settingsDefinition.py @@ -86,6 +86,7 @@ renders = Setting(required=True, default=util.OrderedDict(), "poititle": Setting(required=False, validator=validateStr, default="Signs"), "customwebassets": Setting(required=False, validator=validateWebAssetsPath, default=None), "maxzoom": Setting(required=False, validator=validateInt, default=None), + "manualpois": Setting(required=False, validator=validateManualPOIs, default=[]), # Remove this eventually (once people update their configs) "worldname": Setting(required=False, default=None, validator=error("The option 'worldname' is now called 'world'. Please update your config files")), diff --git a/overviewer_core/settingsValidators.py b/overviewer_core/settingsValidators.py index 0c2a6cc..40000f1 100644 --- a/overviewer_core/settingsValidators.py +++ b/overviewer_core/settingsValidators.py @@ -227,6 +227,12 @@ def validatePath(p): if not os.path.exists(abs_path): raise ValidationException("'%s' does not exist. Path initially given as '%s'" % (abs_path,p)) +def validateManualPOIs(d): + for poi in d: + if not poi['x'] or not poi['y'] or not poi['z'] or not poi['id']: + raise ValidationException("Not all POIs have x/y/z coordinates or an id.") + return d + def make_dictValidator(keyvalidator, valuevalidator): """Compose and return a dict validator -- a validator that validates each key and value in a dictionary.