Update the vision every time we step the game

Recalculate the character's lines of sight every time we step the game,
rather than just every time the character *moves*. I had originally
thought this was a non-contiguous lines-of-sight bug - which there's a
test disproving - but it actually turned out to be that actions like
eating or attacking would step the game forward (thus moving gormlaks)
without re-calculating the positions visible to the character.
This commit is contained in:
Griffin Smith 2019-12-23 17:55:28 -05:00
parent a58966d43f
commit 32421916e0
4 changed files with 53 additions and 2 deletions

View file

@ -102,6 +102,8 @@ stepGameBy ticks = do
pEntity' <- step ticks pEntity
entities . ix eid .= pEntity'
modify updateCharacterVision
whenM (uses character isDead)
. prompt_ @'Continue ["dead"] Uncancellable
. const . lift . liftIO
@ -137,7 +139,6 @@ handleCommand (Move dir) = do
characterPosition .= newPos
stepGameBy =<< uses (character . speed) (|*| 1)
describeEntitiesAt newPos
modify updateCharacterVision
Just Combat -> attackAt newPos
Just Stop -> pure ()
continue