Skip to content

Commit 571825e

Browse files
add new mapblock+pos type / refactor listeners
1 parent 73c93af commit 571825e

File tree

7 files changed

+62
-28
lines changed

7 files changed

+62
-28
lines changed

coords/iterate_mapblock.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package coords
2+
3+
type MapblockIterator func(x, y, z int)
4+
5+
func IterateMapblock(it MapblockIterator) {
6+
for x := 0; x < 16; x++ {
7+
for y := 0; y < 16; y++ {
8+
for z := 0; z < 16; z++ {
9+
it(x, y, z)
10+
}
11+
}
12+
}
13+
}

mapblockaccessor/get.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package mapblockaccessor
33
import (
44
"mapserver/coords"
55
"mapserver/eventbus"
6+
"mapserver/types"
67
"sync"
78

89
"github.com/minetest-go/mapparser"
@@ -84,7 +85,7 @@ func (a *MapBlockAccessor) GetMapBlock(pos *coords.MapBlockCoords) (*mapparser.M
8485
return nil, err
8586
}
8687

87-
a.Eventbus.Emit(eventbus.MAPBLOCK_RENDERED, mapblock)
88+
a.Eventbus.Emit(eventbus.MAPBLOCK_RENDERED, types.NewParsedMapblock(mapblock, pos))
8889

8990
cacheBlockCount.Inc()
9091
a.blockcache.Set(key, mapblock, cache.DefaultExpiration)

mapblockaccessor/legacyblocks.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"mapserver/eventbus"
55
"mapserver/layer"
66
"mapserver/settings"
7+
"mapserver/types"
78

89
"github.com/minetest-go/mapparser"
910
cache "github.com/patrickmn/go-cache"
@@ -12,7 +13,7 @@ import (
1213

1314
type FindNextLegacyBlocksResult struct {
1415
HasMore bool
15-
List []*mapparser.MapBlock
16+
List []*types.ParsedMapblock
1617
UnfilteredCount int
1718
Progress float64
1819
LastMtime int64
@@ -29,7 +30,7 @@ func (a *MapBlockAccessor) FindNextLegacyBlocks(s settings.Settings, layers []*l
2930
blocks := nextResult.List
3031
result := FindNextLegacyBlocksResult{}
3132

32-
mblist := make([]*mapparser.MapBlock, 0)
33+
mblist := make([]*types.ParsedMapblock, 0)
3334
result.HasMore = nextResult.HasMore
3435
result.UnfilteredCount = nextResult.UnfilteredCount
3536
result.Progress = nextResult.Progress
@@ -59,11 +60,11 @@ func (a *MapBlockAccessor) FindNextLegacyBlocks(s settings.Settings, layers []*l
5960
return nil, err
6061
}
6162

62-
a.Eventbus.Emit(eventbus.MAPBLOCK_RENDERED, mapblock)
63+
a.Eventbus.Emit(eventbus.MAPBLOCK_RENDERED, types.NewParsedMapblock(mapblock, block.Pos))
6364

6465
a.blockcache.Set(key, mapblock, cache.DefaultExpiration)
6566
cacheBlockCount.Inc()
66-
mblist = append(mblist, mapblock)
67+
mblist = append(mblist, types.NewParsedMapblock(mapblock, block.Pos))
6768

6869
}
6970

mapblockaccessor/mtime.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"mapserver/coords"
55
"mapserver/eventbus"
66
"mapserver/layer"
7+
"mapserver/types"
78

89
"github.com/minetest-go/mapparser"
910
cache "github.com/patrickmn/go-cache"
@@ -15,7 +16,7 @@ type FindMapBlocksByMtimeResult struct {
1516
HasMore bool
1617
LastPos *coords.MapBlockCoords
1718
LastMtime int64
18-
List []*mapparser.MapBlock
19+
List []*types.ParsedMapblock
1920
UnfilteredCount int
2021
}
2122

@@ -39,7 +40,7 @@ func (a *MapBlockAccessor) FindMapBlocksByMtime(lastmtime int64, limit int, laye
3940

4041
result := FindMapBlocksByMtimeResult{}
4142

42-
mblist := make([]*mapparser.MapBlock, 0)
43+
mblist := make([]*types.ParsedMapblock, 0)
4344
var newlastpos *coords.MapBlockCoords
4445
result.HasMore = len(blocks) == limit
4546
result.UnfilteredCount = len(blocks)
@@ -77,11 +78,11 @@ func (a *MapBlockAccessor) FindMapBlocksByMtime(lastmtime int64, limit int, laye
7778
continue
7879
}
7980

80-
a.Eventbus.Emit(eventbus.MAPBLOCK_RENDERED, mapblock)
81+
a.Eventbus.Emit(eventbus.MAPBLOCK_RENDERED, types.NewParsedMapblock(mapblock, block.Pos))
8182

8283
a.blockcache.Set(key, mapblock, cache.DefaultExpiration)
8384
cacheBlockCount.Inc()
84-
mblist = append(mblist, mapblock)
85+
mblist = append(mblist, types.NewParsedMapblock(mapblock, block.Pos))
8586

8687
}
8788

mapobject/listener.go

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,21 @@ package mapobject
22

33
import (
44
"mapserver/app"
5+
"mapserver/coords"
56
"mapserver/eventbus"
6-
"mapserver/mapblockparser"
77
"mapserver/mapobjectdb"
8+
"mapserver/types"
89

10+
"github.com/minetest-go/mapparser"
911
"github.com/sirupsen/logrus"
1012
)
1113

1214
type MapObjectListener interface {
13-
onMapObject(x, y, z int, block *mapblockparser.MapBlock) *mapobjectdb.MapObject
15+
onMapObject(mbpos *coords.MapBlockCoords, x, y, z int, block *mapparser.MapBlock) *mapobjectdb.MapObject
1416
}
1517

1618
type MapMultiObjectListener interface {
17-
onMapObject(x, y, z int, block *mapblockparser.MapBlock) []*mapobjectdb.MapObject
19+
onMapObject(mbpos *coords.MapBlockCoords, x, y, z int, block *mapparser.MapBlock) []*mapobjectdb.MapObject
1820
}
1921

2022
type Listener struct {
@@ -36,26 +38,26 @@ func (this *Listener) OnEvent(eventtype string, o interface{}) {
3638
return
3739
}
3840

39-
block := o.(*mapblockparser.MapBlock)
41+
pmb := o.(*types.ParsedMapblock)
4042

41-
err := this.ctx.Objectdb.RemoveMapData(block.Pos)
43+
err := this.ctx.Objectdb.RemoveMapData(pmb.Pos)
4244
if err != nil {
4345
panic(err)
4446
}
4547

46-
this.ctx.WebEventbus.Emit("mapobjects-cleared", block.Pos)
48+
this.ctx.WebEventbus.Emit("mapobjects-cleared", pmb.Pos)
4749

4850
//TODO: refactor into single loop
49-
for id, name := range block.BlockMapping {
51+
for id, name := range pmb.Mapblock.BlockMapping {
5052

5153
for k, v := range this.multiobjectlisteners {
5254
if k == name {
5355
//block matches
54-
mapblockparser.IterateMapblock(func(x, y, z int) {
55-
nodeid := block.GetNodeId(x, y, z)
56+
coords.IterateMapblock(func(x, y, z int) {
57+
nodeid := pmb.Mapblock.GetNodeId(x, y, z)
5658
if nodeid == id {
5759
fields := logrus.Fields{
58-
"mbpos": block.Pos,
60+
"mbpos": pmb.Pos,
5961
"x": x,
6062
"y": y,
6163
"z": z,
@@ -64,14 +66,14 @@ func (this *Listener) OnEvent(eventtype string, o interface{}) {
6466
}
6567
log.WithFields(fields).Debug("OnEvent()")
6668

67-
objs := v.onMapObject(x, y, z, block)
69+
objs := v.onMapObject(pmb.Pos, x, y, z, pmb.Mapblock)
6870

6971
if len(objs) > 0 {
7072
for _, obj := range objs {
7173
err := this.ctx.Objectdb.AddMapData(obj)
7274
if err != nil {
7375
fields = logrus.Fields{
74-
"mbpos": block.Pos,
76+
"mbpos": pmb.Pos,
7577
"x": x,
7678
"y": y,
7779
"z": z,
@@ -95,11 +97,11 @@ func (this *Listener) OnEvent(eventtype string, o interface{}) {
9597
for k, v := range this.objectlisteners {
9698
if k == name {
9799
//block matches
98-
mapblockparser.IterateMapblock(func(x, y, z int) {
99-
nodeid := block.GetNodeId(x, y, z)
100+
coords.IterateMapblock(func(x, y, z int) {
101+
nodeid := pmb.Mapblock.GetNodeId(x, y, z)
100102
if nodeid == id {
101103
fields := logrus.Fields{
102-
"mbpos": block.Pos,
104+
"mbpos": pmb.Pos,
103105
"x": x,
104106
"y": y,
105107
"z": z,
@@ -108,13 +110,13 @@ func (this *Listener) OnEvent(eventtype string, o interface{}) {
108110
}
109111
log.WithFields(fields).Debug("OnEvent()")
110112

111-
obj := v.onMapObject(x, y, z, block)
113+
obj := v.onMapObject(pmb.Pos, x, y, z, pmb.Mapblock)
112114

113115
if obj != nil {
114116
err := this.ctx.Objectdb.AddMapData(obj)
115117
if err != nil {
116118
fields = logrus.Fields{
117-
"mbpos": block.Pos,
119+
"mbpos": pmb.Pos,
118120
"x": x,
119121
"y": y,
120122
"z": z,

tilerendererjob/common.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ package tilerendererjob
33
import (
44
"mapserver/app"
55
"mapserver/coords"
6+
"mapserver/types"
67
"strconv"
78

8-
"github.com/minetest-go/mapparser"
99
"github.com/sirupsen/logrus"
1010
)
1111

@@ -14,7 +14,7 @@ func getTileKey(tc *coords.TileCoords) string {
1414
strconv.Itoa(tc.Zoom) + "/" + strconv.Itoa(tc.LayerId)
1515
}
1616

17-
func renderMapblocks(ctx *app.App, mblist []*mapparser.MapBlock) int {
17+
func renderMapblocks(ctx *app.App, mblist []*types.ParsedMapblock) int {
1818
tileRenderedMap := make(map[string]bool)
1919
tilecount := 0
2020
totalRenderedMapblocks.Add(float64(len(mblist)))

types/parsedmapblock.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package types
2+
3+
import (
4+
"mapserver/coords"
5+
6+
"github.com/minetest-go/mapparser"
7+
)
8+
9+
type ParsedMapblock struct {
10+
Mapblock *mapparser.MapBlock
11+
Pos *coords.MapBlockCoords
12+
}
13+
14+
func NewParsedMapblock(mb *mapparser.MapBlock, pos *coords.MapBlockCoords) *ParsedMapblock {
15+
return &ParsedMapblock{Mapblock: mb, Pos: pos}
16+
}

0 commit comments

Comments
 (0)