From 4d1426a46693688b0b4d3110a6c0b190e0d8bf07 Mon Sep 17 00:00:00 2001
From: NatureFreshMilk <naturefreshmilk@github.com>
Date: Wed, 23 Jan 2019 13:41:26 +0100
Subject: [PATCH] mapobject setup

---
 server/mapobject/clearmapdata.go | 17 -----------------
 server/mapobject/poi.go          | 18 +-----------------
 server/mapobject/setup.go        | 23 ++++++++++++++++++++---
 3 files changed, 21 insertions(+), 37 deletions(-)
 delete mode 100644 server/mapobject/clearmapdata.go

diff --git a/server/mapobject/clearmapdata.go b/server/mapobject/clearmapdata.go
deleted file mode 100644
index 34d0879..0000000
--- a/server/mapobject/clearmapdata.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package mapobject
-
-import (
-	"mapserver/mapblockparser"
-	"mapserver/mapobjectdb"
-)
-
-type ClearMapData struct {
-	db mapobjectdb.DBAccessor
-}
-
-func (this *ClearMapData) OnParsedMapBlock(block *mapblockparser.MapBlock) {
-	err := this.db.RemoveMapData(block.Pos)
-	if err != nil {
-		panic(err)
-	}
-}
diff --git a/server/mapobject/poi.go b/server/mapobject/poi.go
index 172d229..031aeaf 100644
--- a/server/mapobject/poi.go
+++ b/server/mapobject/poi.go
@@ -5,22 +5,6 @@ import (
 	"mapserver/mapobjectdb"
 )
 
-type POI struct {
-	db mapobjectdb.DBAccessor
-}
-
-func (this *POI) OnParsedMapBlock(block *mapblockparser.MapBlock) {
-	var found bool
-	for _, v := range block.BlockMapping {
-		if v == "mapserver:poi" {
-			found = true
-			break
-		}
-	}
-
-	if !found {
-		return
-	}
-
+func onPoiBlock(id int, block *mapblockparser.MapBlock, odb mapobjectdb.DBAccessor) {
 	panic("OK") //XXX
 }
diff --git a/server/mapobject/setup.go b/server/mapobject/setup.go
index e7d8ae5..a272dd2 100644
--- a/server/mapobject/setup.go
+++ b/server/mapobject/setup.go
@@ -2,9 +2,26 @@ package mapobject
 
 import (
 	"mapserver/app"
+  "mapserver/mapblockparser"
 )
 
-func Setup(ctx *app.App) {
-	ctx.BlockAccessor.AddListener(&ClearMapData{db: ctx.Objectdb})
-	ctx.BlockAccessor.AddListener(&POI{db: ctx.Objectdb})
+type Listener struct {
+  ctx *app.App
+}
+
+func (this *Listener) OnParsedMapBlock(block *mapblockparser.MapBlock) {
+  err := this.ctx.Objectdb.RemoveMapData(block.Pos)
+  if err != nil {
+    panic(err)
+  }
+
+  for id, name := range block.BlockMapping {
+    if name == "mapserver:poi" {
+      onPoiBlock(id, block, this.ctx.Objectdb)
+    }
+  }
+}
+
+func Setup(ctx *app.App) {
+	ctx.BlockAccessor.AddListener(&Listener{ctx: ctx})
 }