mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2025-02-04 15:46:51 -05:00
parent
5458859faf
commit
a0c966eeeb
@ -69,7 +69,7 @@ var (
|
||||
d2enum.KeyF10: ebiten.KeyF10,
|
||||
d2enum.KeyF11: ebiten.KeyF11,
|
||||
d2enum.KeyF12: ebiten.KeyF12,
|
||||
d2enum.KeyGraveAccent: ebiten.KeyGraveAccent,
|
||||
d2enum.KeyGraveAccent: ebiten.KeyF12,
|
||||
d2enum.KeyHome: ebiten.KeyHome,
|
||||
d2enum.KeyInsert: ebiten.KeyInsert,
|
||||
d2enum.KeyKP0: ebiten.KeyKP0,
|
||||
|
@ -4,6 +4,7 @@ import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2map/d2mapgen"
|
||||
@ -12,6 +13,7 @@ import (
|
||||
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2map/d2maprenderer"
|
||||
|
||||
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2enum"
|
||||
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2fileformats/d2ds1"
|
||||
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface"
|
||||
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2screen"
|
||||
"github.com/OpenDiablo2/OpenDiablo2/d2game/d2player"
|
||||
@ -87,6 +89,10 @@ type MapEngineTest struct {
|
||||
renderer d2interface.Renderer
|
||||
inputManager d2interface.InputManager
|
||||
|
||||
lastMouseX, lastMouseY int
|
||||
selX, selY int
|
||||
selectedTile *d2ds1.TileRecord
|
||||
|
||||
//TODO: this is region specific properties, should be refactored for multi-region rendering
|
||||
currentRegion int
|
||||
levelPreset int
|
||||
@ -190,102 +196,134 @@ func (met *MapEngineTest) OnUnload() error {
|
||||
func (met *MapEngineTest) Render(screen d2interface.Surface) error {
|
||||
met.mapRenderer.Render(screen)
|
||||
|
||||
// levelFilesToPick := make([]string, 0)
|
||||
// fileIndex := met.fileIndex
|
||||
// levelPreset := curRegion.LevelPreset()
|
||||
// regionPath := curRegion.RegionPath()
|
||||
// for n, fileRecord := range levelPreset.Files {
|
||||
// if len(fileRecord) == 0 || fileRecord == "" || fileRecord == "0" {
|
||||
// continue
|
||||
// }
|
||||
// levelFilesToPick = append(levelFilesToPick, fileRecord)
|
||||
// if fileRecord == regionPath {
|
||||
// fileIndex = n
|
||||
// }
|
||||
// }
|
||||
// if met.fileIndex == -1 {
|
||||
// met.fileIndex = fileIndex
|
||||
// }
|
||||
// met.filesCount = len(levelFilesToPick)
|
||||
//
|
||||
//
|
||||
// regionWidth, regionHeight := curRegion.GetTileSize()
|
||||
// if tileX >= 0 && tileY >= 0 && tileX < regionWidth && tileY < regionHeight {
|
||||
// tile := curRegion.Tile(tileX, tileY)
|
||||
// screen.PushTranslation(5, 5)
|
||||
// screen.DrawText("%d, %d (Tile %d.%d, %d.%d)", screenX, screenY, tileX, subtileX, tileY, subtileY)
|
||||
// screen.PushTranslation(0, 16)
|
||||
// screen.DrawText("Map: " + curRegion.LevelType().Name)
|
||||
// screen.PushTranslation(0, 16)
|
||||
// screen.DrawText("%v: %v/%v [%v, %v]", regionPath, fileIndex+1, met.filesCount, met.currentRegion, met.levelPreset)
|
||||
// screen.PushTranslation(0, 16)
|
||||
// screen.DrawText("N - next region, P - previous region")
|
||||
// screen.PushTranslation(0, 16)
|
||||
// screen.DrawText("Shift+N - next preset, Shift+P - previous preset")
|
||||
// screen.PushTranslation(0, 16)
|
||||
// screen.DrawText("Ctrl+N - next file, Ctrl+P - previous file")
|
||||
// screen.PushTranslation(0, 16)
|
||||
// popN := 7
|
||||
// if len(tile.Floors) > 0 {
|
||||
// screen.PushTranslation(0, 16)
|
||||
// screen.DrawText("Floors:")
|
||||
// screen.PushTranslation(16, 0)
|
||||
// for idx, floor := range tile.Floors {
|
||||
// popN++
|
||||
// screen.PushTranslation(0, 16)
|
||||
// tileData := curRegion.TileData(int32(floor.Style), int32(floor.Sequence), d2enum.Floor)
|
||||
// tileSubAttrs := d2dt1.SubTileFlags{}
|
||||
// if tileData != nil {
|
||||
// tileSubAttrs = *tileData.GetSubTileFlags(subtileX, subtileY)
|
||||
// }
|
||||
// screen.DrawText("Floor %v: [ANI:%t] %s", idx, floor.Animated, tileSubAttrs.DebugString())
|
||||
//
|
||||
// }
|
||||
// screen.PushTranslation(-16, 0)
|
||||
// popN += 3
|
||||
// }
|
||||
// if len(tile.Walls) > 0 {
|
||||
// screen.PushTranslation(0, 16)
|
||||
// screen.DrawText("Walls:")
|
||||
// screen.PushTranslation(16, 0)
|
||||
// for idx, wall := range tile.Walls {
|
||||
// popN++
|
||||
// screen.PushTranslation(0, 16)
|
||||
// tileData := curRegion.TileData(int32(wall.Style), int32(wall.Sequence), d2enum.Floor)
|
||||
// tileSubAttrs := d2dt1.SubTileFlags{}
|
||||
// if tileData != nil {
|
||||
// tileSubAttrs = *tileData.GetSubTileFlags(subtileX, subtileY)
|
||||
// }
|
||||
// screen.DrawText("Wall %v: [HID:%t] %s", idx, wall.Hidden, tileSubAttrs.DebugString())
|
||||
//
|
||||
// }
|
||||
// screen.PushTranslation(-16, 0)
|
||||
// popN += 3
|
||||
// }
|
||||
// if len(tile.Walls) > 0 {
|
||||
// screen.PushTranslation(0, 16)
|
||||
// screen.DrawText("Shadows:")
|
||||
// screen.PushTranslation(16, 0)
|
||||
// for idx, shadow := range tile.Shadows {
|
||||
// popN++
|
||||
// screen.PushTranslation(0, 16)
|
||||
// tileData := curRegion.TileData(int32(shadow.Style), int32(shadow.Sequence), d2enum.Floor)
|
||||
// tileSubAttrs := d2dt1.SubTileFlags{}
|
||||
// if tileData != nil {
|
||||
// tileSubAttrs = *tileData.GetSubTileFlags(subtileX, subtileY)
|
||||
// }
|
||||
// screen.DrawText("Wall %v: [HID:%t] %s", idx, shadow.Hidden, tileSubAttrs.DebugString())
|
||||
//
|
||||
// }
|
||||
// screen.PushTranslation(-16, 0)
|
||||
// popN += 3
|
||||
// }
|
||||
// screen.PopN(popN)
|
||||
// }
|
||||
screen.PushTranslation(0, 16)
|
||||
screen.DrawText("N - next region, P - previous region")
|
||||
screen.PushTranslation(0, 16)
|
||||
screen.DrawText("Shift+N - next preset, Shift+P - previous preset")
|
||||
screen.PushTranslation(0, 16)
|
||||
screen.DrawText("Ctrl+N - next file, Ctrl+P - previous file")
|
||||
screen.PushTranslation(0, 16)
|
||||
screen.DrawText("Left click selects tile, right click unselects")
|
||||
screen.PushTranslation(0, 16)
|
||||
|
||||
popN := 5
|
||||
|
||||
if met.selectedTile == nil {
|
||||
screen.PushTranslation(15, 16)
|
||||
popN++
|
||||
|
||||
screen.DrawText("No tile selected")
|
||||
} else {
|
||||
screen.PushTranslation(10, 32)
|
||||
screen.DrawText("Tile %v,%v", met.selX, met.selY)
|
||||
|
||||
screen.PushTranslation(15, 16)
|
||||
screen.DrawText("Walls")
|
||||
tpop := 0
|
||||
for _, wall := range met.selectedTile.Walls {
|
||||
screen.PushTranslation(0, 12)
|
||||
tpop++
|
||||
tmpString := fmt.Sprintf("%#v", wall)
|
||||
stringSlice := strings.Split(tmpString, " ")
|
||||
tmp2 := strings.Split(stringSlice[0], "{")
|
||||
stringSlice[0] = tmp2[1]
|
||||
for _, str := range stringSlice {
|
||||
screen.PushTranslation(0, 12)
|
||||
tpop++
|
||||
screen.DrawText(str)
|
||||
}
|
||||
}
|
||||
screen.PopN(tpop)
|
||||
|
||||
screen.PushTranslation(170, 0)
|
||||
screen.DrawText("Floors")
|
||||
tpop = 0
|
||||
for _, floor := range met.selectedTile.Floors {
|
||||
screen.PushTranslation(0, 12)
|
||||
tpop++
|
||||
tmpString := fmt.Sprintf("%#v", floor)
|
||||
stringSlice := strings.Split(tmpString, " ")
|
||||
tmp2 := strings.Split(stringSlice[0], "{")
|
||||
stringSlice[0] = tmp2[1]
|
||||
for _, str := range stringSlice {
|
||||
screen.PushTranslation(0, 12)
|
||||
tpop++
|
||||
screen.DrawText(str)
|
||||
}
|
||||
}
|
||||
screen.PopN(tpop)
|
||||
|
||||
tpop = 0
|
||||
screen.PushTranslation(170, 0)
|
||||
screen.DrawText("Shadows")
|
||||
for _, shadow := range met.selectedTile.Shadows {
|
||||
screen.PushTranslation(0, 12)
|
||||
tpop++
|
||||
tmpString := fmt.Sprintf("%#v", shadow)
|
||||
stringSlice := strings.Split(tmpString, " ")
|
||||
tmp2 := strings.Split(stringSlice[0], "{")
|
||||
stringSlice[0] = tmp2[1]
|
||||
for _, str := range stringSlice {
|
||||
screen.PushTranslation(0, 12)
|
||||
tpop++
|
||||
screen.DrawText(str)
|
||||
}
|
||||
}
|
||||
screen.PopN(tpop)
|
||||
|
||||
tpop = 0
|
||||
screen.PushTranslation(170, 0)
|
||||
screen.DrawText("Substitutions")
|
||||
for _, subst := range met.selectedTile.Substitutions {
|
||||
screen.PushTranslation(0, 12)
|
||||
tpop++
|
||||
tmpString := fmt.Sprintf("%#v", subst)
|
||||
stringSlice := strings.Split(tmpString, " ")
|
||||
tmp2 := strings.Split(stringSlice[0], "{")
|
||||
stringSlice[0] = tmp2[1]
|
||||
for _, str := range stringSlice {
|
||||
screen.PushTranslation(0, 12)
|
||||
tpop++
|
||||
screen.DrawText(str)
|
||||
}
|
||||
}
|
||||
screen.PopN(tpop)
|
||||
|
||||
popN += 5
|
||||
}
|
||||
|
||||
screen.PopN(popN)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (met *MapEngineTest) OnMouseMove(event d2interface.MouseMoveEvent) bool {
|
||||
mx, my := event.X(), event.Y()
|
||||
met.lastMouseX = mx
|
||||
met.lastMouseY = my
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
func (met *MapEngineTest) OnMouseButtonDown(event d2interface.MouseEvent) bool {
|
||||
if event.Button() == d2enum.MouseButtonLeft {
|
||||
px, py := met.mapRenderer.ScreenToWorld(met.lastMouseX, met.lastMouseY)
|
||||
met.selX = int(px)
|
||||
met.selY = int(py)
|
||||
met.selectedTile = met.mapEngine.TileAt(int(px), int(py))
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
if event.Button() == d2enum.MouseButtonRight {
|
||||
met.selectedTile = nil
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
// Advance runs the update logic on the Map Engine Test screen
|
||||
func (met *MapEngineTest) Advance(tickTime float64) error {
|
||||
met.mapEngine.Advance(tickTime)
|
||||
|
Loading…
Reference in New Issue
Block a user