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.
This commit is contained in:
Griffin Smith 2019-11-29 22:59:15 -05:00
parent 7d8ce026a2
commit 8a1235c3dc
26 changed files with 232 additions and 212 deletions

View file

@ -18,11 +18,11 @@ import qualified Xanthous.Data.EntityMap as EntityMap
instance Arbitrary GameState where
arbitrary = do
char <- arbitrary @Character
chr <- arbitrary @Character
charPos <- arbitrary
_messageHistory <- arbitrary
(_characterEntityID, _entities) <- arbitrary <&>
EntityMap.insertAtReturningID charPos (SomeEntity char)
EntityMap.insertAtReturningID charPos (SomeEntity chr)
_revealedPositions <- fmap setFromList . sublistOf $ EntityMap.positions _entities
_randomGen <- mkStdGen <$> arbitrary
let _promptState = NoPrompt -- TODO