Add debug command to reveal the game
Add a (debug) command to reveal all tiles on the game regardless of the character's vision, which'll make it easier to debug creature's behavior while they're not visible.
This commit is contained in:
parent
1a0f618a82
commit
abea2dcfac
7 changed files with 52 additions and 10 deletions
|
|
@ -23,6 +23,7 @@ import Xanthous.Game
|
|||
, messageHistory
|
||||
, GamePromptState(..)
|
||||
, promptState
|
||||
, debugState, allRevealed
|
||||
)
|
||||
import Xanthous.Game.Prompt
|
||||
import Xanthous.Resource (Name)
|
||||
|
|
@ -46,14 +47,11 @@ drawPromptState (WaitingPrompt msg (Prompt _ pt ps _)) =
|
|||
_ -> undefined
|
||||
|
||||
drawEntities
|
||||
:: Set Position
|
||||
-- ^ Positions the character has seen
|
||||
-- FIXME: this will break down as soon as creatures can walk around on their
|
||||
-- own, since we don't want to render things walking around when the
|
||||
-- character can't see them
|
||||
:: (Position -> Bool)
|
||||
-- ^ Can we render a given position?
|
||||
-> EntityMap SomeEntity -- ^ all entities
|
||||
-> Widget Name
|
||||
drawEntities visiblePositions allEnts
|
||||
drawEntities canRenderPos allEnts
|
||||
= vBox rows
|
||||
where
|
||||
entityPositions = EntityMap.positions allEnts
|
||||
|
|
@ -62,7 +60,7 @@ drawEntities visiblePositions allEnts
|
|||
rows = mkRow <$> [0..maxY]
|
||||
mkRow rowY = hBox $ renderEntityAt . flip Position rowY <$> [0..maxX]
|
||||
renderEntityAt pos
|
||||
| pos `member` visiblePositions
|
||||
| canRenderPos pos
|
||||
= let neighbors = EntityMap.neighbors pos allEnts
|
||||
in maybe (str " ") (drawWithNeighbors neighbors)
|
||||
$ allEnts ^? atPosition pos . folded
|
||||
|
|
@ -73,7 +71,12 @@ drawMap game
|
|||
= viewport Resource.MapViewport Both
|
||||
. showCursor Resource.Character (game ^. characterPosition . loc)
|
||||
$ drawEntities
|
||||
(game ^. revealedPositions)
|
||||
(\pos ->
|
||||
(game ^. debugState . allRevealed)
|
||||
|| (pos `member` (game ^. revealedPositions)))
|
||||
-- FIXME: this will break down as soon as creatures can walk around on their
|
||||
-- own, since we don't want to render things walking around when the
|
||||
-- character can't see them
|
||||
(game ^. entities)
|
||||
|
||||
drawGame :: GameState -> [Widget Name]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue