about summary refs log tree commit diff
path: root/src/Xanthous/App.hs
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/App.hs
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/App.hs')
-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