1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-09 09:20:44 +00:00

Toggle tile display in map test with F7 (#172)

* Toggle tile display in map test with F7
* Sub-tile display
Cycle through tile display modes with F7
This commit is contained in:
Ziemas 2019-11-15 15:04:27 +01:00 committed by Tim Sarbin
parent b9209541c8
commit 0475a11512
2 changed files with 37 additions and 1 deletions

View File

@ -3,6 +3,7 @@ package d2scene
import (
"fmt"
"math"
"os"
"github.com/OpenDiablo2/OpenDiablo2/d2helper"
@ -16,7 +17,7 @@ import (
"github.com/OpenDiablo2/OpenDiablo2/d2render/d2ui"
"github.com/hajimehoshi/ebiten"
"github.com/hajimehoshi/ebiten/ebitenutil"
"os"
"github.com/hajimehoshi/ebiten/inpututil"
)
type MapEngineTest struct {
@ -150,6 +151,15 @@ func (v *MapEngineTest) Update(tickTime float64) {
if v.uiManager.KeyPressed(ebiten.KeyRight) {
v.mapEngine.OffsetX -= tickTime * 800
}
if inpututil.IsKeyJustPressed(ebiten.KeyF7) {
if v.mapEngine.ShowTiles < 2 {
v.mapEngine.ShowTiles++
} else {
v.mapEngine.ShowTiles = 0
}
}
if v.uiManager.KeyPressed(ebiten.KeyEscape) {
os.Exit(0)
}

View File

@ -1,6 +1,8 @@
package d2mapengine
import (
"fmt"
"image/color"
"math"
"math/rand"
"strings"
@ -16,6 +18,7 @@ import (
"github.com/OpenDiablo2/OpenDiablo2/d2audio"
"github.com/OpenDiablo2/OpenDiablo2/d2common"
"github.com/hajimehoshi/ebiten"
"github.com/hajimehoshi/ebiten/ebitenutil"
)
type EngineRegion struct {
@ -30,6 +33,7 @@ type Engine struct {
regions []EngineRegion
OffsetX float64
OffsetY float64
ShowTiles int
}
func CreateMapEngine(gameState *d2core.GameState, soundManager *d2audio.Manager, fileProvider d2interface.FileProvider) *Engine {
@ -148,4 +152,26 @@ func (v *Engine) RenderTile(region *Region, offX, offY, x, y int, target *ebiten
}
region.RenderTile(offX+int(v.OffsetX), offY+int(v.OffsetY), x, y, d2enum.RegionLayerTypeWalls, i, target)
}
if v.ShowTiles > 0 {
subtileColor := color.RGBA{255, 100, 100, 140}
tileColor := color.RGBA{255, 255, 255, 255}
ebitenutil.DrawLine(target, float64(offX)+v.OffsetX, float64(offY)+v.OffsetY, float64(offX)+v.OffsetX+80, float64(offY)+v.OffsetY+40, tileColor)
ebitenutil.DrawLine(target, float64(offX)+v.OffsetX, float64(offY)+v.OffsetY, float64(offX)+v.OffsetX-80, float64(offY)+v.OffsetY+40, tileColor)
coords := fmt.Sprintf("%v,%v", x, y)
ebitenutil.DebugPrintAt(target, coords, offX+int(v.OffsetX)-10, offY+int(v.OffsetY)+10)
if v.ShowTiles > 1 {
for i := 1; i <= 4; i++ {
x := (16 * i)
y := (8 * i)
ebitenutil.DrawLine(target, float64(offX-x)+v.OffsetX, float64(offY+y)+v.OffsetY,
float64(offX-x)+v.OffsetX+80, float64(offY+y)+v.OffsetY+40, subtileColor)
ebitenutil.DrawLine(target, float64(offX+x)+v.OffsetX, float64(offY+y)+v.OffsetY,
float64(offX+x)+v.OffsetX-80, float64(offY+y)+v.OffsetY+40, subtileColor)
}
}
}
}