86 lines
1.9 KiB
Go
86 lines
1.9 KiB
Go
package precomputed_shade
|
|
|
|
import (
|
|
"fmt"
|
|
"lab.zaar.be/thefish/alchemyst-go/engine/gamemap"
|
|
"lab.zaar.be/thefish/alchemyst-go/engine/types"
|
|
"testing"
|
|
)
|
|
|
|
func TestPsDistance(t *testing.T) {
|
|
iterCoords := types.Coords{0, 0}
|
|
|
|
fmt.Printf("\n dto: \t %v", iterCoords.DistanceTo(types.Coords{0, 1}))
|
|
fmt.Printf("\n dto: \t %v", iterCoords.DistanceTo(types.Coords{0, 5}))
|
|
fmt.Printf("\n dto: \t %v", iterCoords.DistanceTo(types.Coords{3, 3}))
|
|
fmt.Printf("\n dto: \t %v", iterCoords.DistanceTo(types.Coords{100, 0}))
|
|
}
|
|
|
|
func TestPrecompShade(t *testing.T) {
|
|
ppFov := NewPrecomputedShade(15)
|
|
_ = ppFov
|
|
t.Log("ok")
|
|
|
|
//level := gamemap.NewLevel(util.ClientCtx{}, "test", 1)
|
|
|
|
level := &gamemap.Level{
|
|
Name: "test1",
|
|
Depth: 1,
|
|
Rect: types.NewRect(0, 0, 20, 20),
|
|
}
|
|
|
|
level.Tiles = make([]*gamemap.Tile, level.W * level.H)
|
|
|
|
var tile func() (*gamemap.Tile)
|
|
|
|
for x := 0; x < level.W; x++ {
|
|
for y := 0; y < level.H; y++ {
|
|
if x == 0 || y == 0 || x == (level.W-1) || y == (level.H-1) {
|
|
tile = gamemap.NewWall
|
|
} else {
|
|
tile = gamemap.NewFloor
|
|
}
|
|
level.SetTileByXY(x, y, tile())
|
|
}
|
|
}
|
|
|
|
playerCoords := types.Coords{10, 10}
|
|
|
|
level.SetTileByXY(8, 12, gamemap.NewWall())
|
|
level.SetTileByXY(10, 8, gamemap.NewWall())
|
|
|
|
level.SetTileByXY(7, 9, gamemap.NewWall())
|
|
level.SetTileByXY(7, 11, gamemap.NewWall())
|
|
level.SetTileByXY(5, 10, gamemap.NewWall())
|
|
|
|
level.SetTileByXY(10, 11, gamemap.NewWall())
|
|
level.SetTileByXY(10, 12, gamemap.NewWall())
|
|
level.SetTileByXY(10, 13, gamemap.NewWall())
|
|
|
|
level.SetTileByXY(11, 10, gamemap.NewWall())
|
|
|
|
ppFov.ComputeFov(level, playerCoords, 12)
|
|
|
|
fmt.Printf("\n\n")
|
|
|
|
var render = func(x, y int) string {
|
|
if playerCoords.X == x && playerCoords.Y == y {
|
|
return "@"
|
|
}
|
|
result := level.GetTileByXY(x, y).Char
|
|
if !level.GetTileByXY(x, y).Visible {
|
|
result = "?"
|
|
}
|
|
return result
|
|
}
|
|
|
|
for y := 0; y < level.H; y++ {
|
|
for x := 0; x < level.W; x++ {
|
|
|
|
fmt.Printf("%s", render(x, y))
|
|
}
|
|
fmt.Printf("\n")
|
|
}
|
|
|
|
}
|