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")
 | |
| 	}
 | |
| 
 | |
| }
 |