summaryrefslogtreecommitdiff
path: root/region_wrapper.go
diff options
context:
space:
mode:
Diffstat (limited to 'region_wrapper.go')
-rw-r--r--region_wrapper.go24
1 files changed, 13 insertions, 11 deletions
diff --git a/region_wrapper.go b/region_wrapper.go
index bf23913..d27d1ad 100644
--- a/region_wrapper.go
+++ b/region_wrapper.go
@@ -28,9 +28,11 @@ type RegionWrapper struct {
bio mcmap.Biome
startX, startZ, endX, endZ int
+
+ bioLookup BiomeLookup
}
-func renderTile(chunk *mcmap.Chunk) (maptile, biotile *gdk.Pixmap, biocache []mcmap.Biome) {
+func (rw *RegionWrapper) renderTile(chunk *mcmap.Chunk) (maptile, biotile *gdk.Pixmap, biocache []mcmap.Biome) {
maptile = emptyPixmap(tileSize, tileSize, 24)
mtDrawable := maptile.GetDrawable()
mtGC := gdk.NewGC(mtDrawable)
@@ -46,7 +48,7 @@ func renderTile(chunk *mcmap.Chunk) (maptile, biotile *gdk.Pixmap, biocache []mc
scanX:
for x := 0; x < mcmap.ChunkSizeXZ; x++ {
bio := chunk.Biome(x, z)
- btGC.SetRgbFgColor(bioColors[bio])
+ btGC.SetRgbFgColor(rw.bioLookup.Color(bio))
btDrawable.DrawRectangle(btGC, true, x*zoom, z*zoom, zoom, zoom)
biocache[i] = bio
@@ -115,7 +117,7 @@ func (rw *RegionWrapper) tileUpdater() {
return
}
- rw.Maptiles[pos], rw.Biotiles[pos], rw.bioCache[pos] = renderTile(chunk)
+ rw.Maptiles[pos], rw.Biotiles[pos], rw.bioCache[pos] = rw.renderTile(chunk)
chunk.MarkUnused()
rw.redraw()
@@ -129,11 +131,11 @@ func (rw *RegionWrapper) tileUpdater() {
func (rw *RegionWrapper) SetRegion(region *mcmap.Region) {
if rw.RegionLoaded() {
- rw.flushTiles()
+ rw.FlushTiles()
}
rw.region = NewCachedRegion(region, cacheSize)
- rw.tileUpdates <- true
+ rw.UpdateTiles()
}
func (rw *RegionWrapper) SetChunkBounds(startX, startZ, endX, endZ int) {
@@ -150,7 +152,7 @@ func (rw *RegionWrapper) SetFixSnowIce(b bool) { rw.fixSnowIce = b }
func (rw *RegionWrapper) RegionLoaded() bool { return rw.region != nil }
func (rw *RegionWrapper) ToolSingleClick() bool { return rw.tool.SingleClick() }
-func (rw *RegionWrapper) flushTiles() {
+func (rw *RegionWrapper) FlushTiles() {
if err := rw.region.Flush(); err != nil {
rw.guicbs.reportFail(fmt.Sprintf("Error while flushing cache: %s", err))
return
@@ -169,7 +171,7 @@ func (rw *RegionWrapper) flushTiles() {
}
func (rw *RegionWrapper) Save() {
- rw.flushTiles()
+ rw.FlushTiles()
if err := rw.region.Flush(); err != nil {
rw.guicbs.reportFail(fmt.Sprintf("Error while flushing cache: %s", err))
@@ -242,8 +244,8 @@ func (rw *RegionWrapper) GetBiomeAt(x, z int) (mcmap.Biome, bool) {
return chunk.Biome(bx, bz), true
}
-func fixWeather(bio mcmap.Biome, bx, bz int, chunk *mcmap.Chunk) (newcol *gdk.Color) {
- snowLine := snowLines[bio]
+func (rw *RegionWrapper) fixWeather(bio mcmap.Biome, bx, bz int, chunk *mcmap.Chunk) (newcol *gdk.Color) {
+ snowLine := rw.bioLookup.SnowLine(bio)
for y := mcmap.ChunkSizeY; y >= 0; y-- {
blk := chunk.Block(bx, y, bz)
@@ -306,7 +308,7 @@ func (rw *RegionWrapper) SetBiomeAt(x, z int, bio mcmap.Biome) {
var newcol *gdk.Color
if rw.fixSnowIce {
- newcol = fixWeather(bio, bx, bz, chunk)
+ newcol = rw.fixWeather(bio, bx, bz, chunk)
}
chunk.MarkModified()
@@ -322,7 +324,7 @@ func (rw *RegionWrapper) SetBiomeAt(x, z int, bio mcmap.Biome) {
drawable := biotile.GetDrawable()
gc := gdk.NewGC(drawable)
- gc.SetRgbFgColor(bioColors[bio])
+ gc.SetRgbFgColor(rw.bioLookup.Color(bio))
drawable.DrawRectangle(gc, true, bx*zoom, bz*zoom, zoom, zoom)
if newcol != nil {