diff options
author | Griffin Smith <root@gws.fyi> | 2020-01-25T16·18-0500 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2020-01-25T16·38-0500 |
commit | 9256c976edec462af26f33317df6171045e68aa5 (patch) | |
tree | cedf0e97a8a6a40f0f083e164ad88daad57dc3e7 /src/Xanthous/Game/Lenses.hs | |
parent | 2fc4fcfee95ad34a9272414c4fd214b10007539f (diff) |
Factor out an "entitiesAtCharacter" lens
Factor an "entitiesAtCharacter" lens from the one-two step of getting the character position, then getting the entities at that position.
Diffstat (limited to 'src/Xanthous/Game/Lenses.hs')
-rw-r--r-- | src/Xanthous/Game/Lenses.hs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/Xanthous/Game/Lenses.hs b/src/Xanthous/Game/Lenses.hs index 8f6053a5ecc6..dc886f65c698 100644 --- a/src/Xanthous/Game/Lenses.hs +++ b/src/Xanthous/Game/Lenses.hs @@ -10,6 +10,7 @@ module Xanthous.Game.Lenses , characterVisiblePositions , getInitialState , initialStateFromSeed + , entitiesAtCharacter -- * Collisions , Collision(..) @@ -28,6 +29,7 @@ import Xanthous.Data import Xanthous.Data.Levels import qualified Xanthous.Data.EntityMap as EntityMap import Xanthous.Data.EntityMap.Graphics (visiblePositions) +import Xanthous.Data.VectorBag import Xanthous.Entities.Character (Character, mkCharacter) import {-# SOURCE #-} Xanthous.Entities.Entities () -------------------------------------------------------------------------------- @@ -113,3 +115,10 @@ entitiesCollision = join . maximumMay . fmap entityCollision collisionAt :: MonadState GameState m => Position -> m (Maybe Collision) collisionAt p = uses (entities . EntityMap.atPosition p) entitiesCollision + +entitiesAtCharacter :: Lens' GameState (VectorBag SomeEntity) +entitiesAtCharacter = lens getter setter + where + getter gs = gs ^. entities . EntityMap.atPosition (gs ^. characterPosition) + setter gs ents = gs + & entities . EntityMap.atPosition (gs ^. characterPosition) .~ ents |