diff options
author | Griffin Smith <root@gws.fyi> | 2019-12-23T17·19-0500 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2019-12-23T22·22-0500 |
commit | 052bc8455a99e7f1a90b6c9354e54cff10de02cc (patch) | |
tree | 51b7ef3883804a0644d7cd242b228023e9624f69 /src/Xanthous/Game/State.hs | |
parent | bf7d139c1a17fe55921fb807aa249e93288d3e4d (diff) |
Add a drop command
Add a drop command, bound to 'd', which prompts the character for an item in their inventory, removes it from the inventory, and places it on the ground. Along the way I had to fix a bug in the `EntityMap.atPosition` lens, which was always appending to the existing entities at the position on set, without removing the entities that were already there - the rabbit hole of quickchecking the lens laws here also lead to replacing the target of this lens with a newtype called `VectorBag`, which ignores order (since the entitymap makes no guarantees about order of entities at a given position).
Diffstat (limited to 'src/Xanthous/Game/State.hs')
-rw-r--r-- | src/Xanthous/Game/State.hs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/Xanthous/Game/State.hs b/src/Xanthous/Game/State.hs index 3b401d366d10..d8a0f0b32077 100644 --- a/src/Xanthous/Game/State.hs +++ b/src/Xanthous/Game/State.hs @@ -80,6 +80,7 @@ import Xanthous.Util (KnownBool(..)) import Xanthous.Data import Xanthous.Data.EntityMap (EntityMap, EntityID) import Xanthous.Data.EntityChar +import Xanthous.Data.VectorBag import Xanthous.Orphans () import Xanthous.Game.Prompt import Xanthous.Resource @@ -185,7 +186,7 @@ type AppM = AppT (EventM Name) -------------------------------------------------------------------------------- class Draw a where - drawWithNeighbors :: Neighbors (Vector SomeEntity) -> a -> Widget n + drawWithNeighbors :: Neighbors (VectorBag SomeEntity) -> a -> Widget n drawWithNeighbors = const draw draw :: a -> Widget n |