From eea1fa93880a3bd5c06b5ba047769d0d04871327 Mon Sep 17 00:00:00 2001 From: gmzar Date: Wed, 17 Jul 2019 18:37:24 -0700 Subject: [PATCH] Fixed the problem! Fov works now --- fov.go | 7 ++++--- main.go | 22 +++++++++++----------- render.go | 26 +++++++++++++------------- 3 files changed, 28 insertions(+), 27 deletions(-) diff --git a/fov.go b/fov.go index 11aa3d0..0cde484 100644 --- a/fov.go +++ b/fov.go @@ -2,6 +2,7 @@ package main import ( "steel/mapping" + "github.com/kettek/goro/fov" ) @@ -14,10 +15,10 @@ func InitializeFoV(g *mapping.GameMap) fov.Map { fovMap.SetBlocksLight(x, y, tile.BlockSight) } } - + return fovMap } -func RecomputeFov(fovMap fov.Map, centerX, centerY int, radius int, fov.Light) { - fovMap.Recompute(centerX, centerY, radius, light) +func RecomputeFov(fovMap fov.Map, centerX, centerY int, radius int, fovLight fov.Light) { + fovMap.Recompute(centerX, centerY, radius, fovLight) } diff --git a/main.go b/main.go index 0599861..542b046 100644 --- a/main.go +++ b/main.go @@ -1,13 +1,12 @@ package main import ( - "github.com/kettek/goro" - "github.com/kettek/goro-game/entity" - "github.com/kettek/goro-game/mapping" - "github.com/kettek/goro/fov" "log" "steel/entity" "steel/mapping" + + "github.com/kettek/goro" + "github.com/kettek/goro/fov" ) func main() { @@ -32,14 +31,14 @@ func main() { fovRecompute := true colors := map[string]goro.Color{ - "darkWall": goro.Color{R: 25, G: 25, B: 25, A: 255}, - "darkGround": goro.Color{R: 100, G: 100, B: 100, A: 255}, - "lightWall": goro.Color{R: 50, G: 50, B: 50, A: 255}, + "darkWall": goro.Color{R: 25, G: 25, B: 25, A: 255}, + "darkGround": goro.Color{R: 100, G: 100, B: 100, A: 255}, + "lightWall": goro.Color{R: 50, G: 50, B: 50, A: 255}, "lightGround": goro.Color{R: 150, G: 150, B: 150, A: 255}, } player := entity.NewEntity(screen.Columns/2, screen.Rows/2+5, '@', goro.Style{Foreground: goro.ColorWhite}) - npc := entity.NewEntity(screen.Columns/2-5, screen. Rows/2, '@', goro.Style{Foreground: goro.ColorYellow}) + npc := entity.NewEntity(screen.Columns/2-5, screen.Rows/2, '@', goro.Style{Foreground: goro.ColorYellow}) entities := []*entity.Entity{ player, @@ -47,12 +46,12 @@ func main() { } gameMap := mapping.GameMap{ - Width: mapWidth, + Width: mapWidth, Height: mapHeight, } gameMap.Initialize() - + gameMap.MakeMap(maxRooms, roomMinSize, roomMaxSize, player) fovMap := InitializeFoV(&gameMap) @@ -60,7 +59,7 @@ func main() { for { if fovRecompute { - RecomputeFoV(fovMap, player.X, player.Y, fovRadius, fov.Light{}) + RecomputeFov(fovMap, player.X, player.Y, fovRadius, fov.Light{}) } // Draw screen. @@ -77,6 +76,7 @@ func main() { case ActionMove: if !gameMap.IsBlocked(player.X+action.X, player.Y+action.Y) { player.Move(action.X, action.Y) + fovRecompute = true } case ActionQuit: goro.Quit() diff --git a/render.go b/render.go index 7cb08e8..b7277fd 100644 --- a/render.go +++ b/render.go @@ -21,29 +21,29 @@ func DrawAll(screen *goro.Screen, entities []*entity.Entity, gameMap mapping.Gam screen.SetBackground(x, y, colors["lightWall"]) } else { screen.SetBackground(x, y, colors["lightGround"]) - } + } } else { - if tile.BlockSight { - screen.SetBackground(x, y, colors["darkWall"]) - } else { - screen.SetBackground(x, y, colors["darkGround"]) + if tile.BlockSight { + screen.SetBackground(x, y, colors["darkWall"]) + } else { + screen.SetBackground(x, y, colors["darkGround"]) + } } } } } -} -// Draw all the entities in the game map. -for_, entity := range entities { - DrawEntity(screen, entity) -} -screen.Flush() + // Draw all the entities in the game map. + for _, entity := range entities { + DrawEntity(screen, entity) + } + screen.Flush() } // ClearAll clears all entities from the screen. -func ClearAll(screen *goro.Screen, entities[]*entity.Entity) { +func ClearAll(screen *goro.Screen, entities []*entity.Entity) { for _, entity := range entities { - ClearEntity(screen, entity) + ClearEntity(screen, entity) } }