32 lines
929 B
Go
32 lines
929 B
Go
package game
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"gitea.boner.be/bdnugget/goonscape/types"
|
|
rl "github.com/gen2brain/raylib-go/raylib"
|
|
)
|
|
|
|
func (g *Game) GetTileAtMouse() (types.Tile, bool) {
|
|
if !rl.IsMouseButtonPressed(rl.MouseLeftButton) {
|
|
return types.Tile{}, false
|
|
}
|
|
mouse := rl.GetMousePosition()
|
|
ray := rl.GetMouseRay(mouse, g.Camera)
|
|
|
|
for x := 0; x < types.MapWidth; x++ {
|
|
for y := 0; y < types.MapHeight; y++ {
|
|
tile := GetTile(x, y)
|
|
tilePos := rl.NewVector3(float32(x*types.TileSize), tile.Height*types.TileHeight, float32(y*types.TileSize))
|
|
boxMin := rl.Vector3Subtract(tilePos, rl.NewVector3(types.TileSize/2, types.TileHeight/2, types.TileSize/2))
|
|
boxMax := rl.Vector3Add(tilePos, rl.NewVector3(types.TileSize/2, types.TileHeight/2, types.TileSize/2))
|
|
|
|
if RayIntersectsBox(ray, boxMin, boxMax) {
|
|
fmt.Printf("Clicked: %d, %d\n", tile.X, tile.Y)
|
|
return tile, true
|
|
}
|
|
}
|
|
}
|
|
return types.Tile{}, false
|
|
}
|