about summary refs log tree commit diff
path: root/src/Xanthous
diff options
context:
space:
mode:
authorGriffin Smith <root@gws.fyi>2019-12-23T22·55-0500
committerGriffin Smith <root@gws.fyi>2019-12-23T22·55-0500
commit32421916e09dc56d91707af10474644276712fc5 (patch)
treed48ae5b6bf5239ddffe13f0fa3c2c34448839a78 /src/Xanthous
parenta58966d43f86d6fae92c1fc11e43650177fcecd1 (diff)
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.
Diffstat (limited to 'src/Xanthous')
-rw-r--r--src/Xanthous/App.hs3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/Xanthous/App.hs b/src/Xanthous/App.hs
index 2ffc11e8e6c7..2029be6f108f 100644
--- a/src/Xanthous/App.hs
+++ b/src/Xanthous/App.hs
@@ -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