diff options
author | Griffin Smith <root@gws.fyi> | 2019-11-30T03·59-0500 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2019-11-30T03·59-0500 |
commit | 8a1235c3dcf7fe69b2e2ea3eea326858d26d38b9 (patch) | |
tree | 398c6dce549602c9890fbded64e3bdf2646b2a1f /src/Xanthous/Game/Lenses.hs | |
parent | 7d8ce026a2acc5a4d208110750be188f0ce5591c (diff) |
Use menus for combat and picking up items
Refactor a bunch of stuff around to allow for polymorphically surfacing an EntityChar for all entities, and use this to write a generic `entityMenu` function, which generates a menu from the chars of a list of entities - and use that to fully implement (removing `undefined`) menus for both attacking and picking things up when there are multiple entities on the relevant tile.
Diffstat (limited to 'src/Xanthous/Game/Lenses.hs')
-rw-r--r-- | src/Xanthous/Game/Lenses.hs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/Xanthous/Game/Lenses.hs b/src/Xanthous/Game/Lenses.hs index cd7148442ace..7dbd60290144 100644 --- a/src/Xanthous/Game/Lenses.hs +++ b/src/Xanthous/Game/Lenses.hs @@ -37,11 +37,11 @@ getInitialState = initialStateFromSeed <$> getRandom initialStateFromSeed :: Int -> GameState initialStateFromSeed seed = let _randomGen = mkStdGen seed - char = mkCharacter + chr = mkCharacter (_characterEntityID, _entities) = EntityMap.insertAtReturningID (Position 0 0) - (SomeEntity char) + (SomeEntity chr) mempty _messageHistory = mempty _revealedPositions = mempty @@ -56,10 +56,10 @@ positionedCharacter :: Lens' GameState (Positioned Character) positionedCharacter = lens getPositionedCharacter setPositionedCharacter where setPositionedCharacter :: GameState -> Positioned Character -> GameState - setPositionedCharacter game char + setPositionedCharacter game chr = game & entities . at (game ^. characterEntityID) - ?~ fmap SomeEntity char + ?~ fmap SomeEntity chr getPositionedCharacter :: GameState -> Positioned Character getPositionedCharacter game |