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

@ -14,17 +14,9 @@ import Brick.Widgets.Border.Style (unicode)
import Brick.Types (Edges(..))
import Data.Aeson
--------------------------------------------------------------------------------
import Xanthous.Entities
( Draw(..)
, entityIs
, Entity(..)
, SomeEntity
, Brain(..)
, Brainless(..)
, brainVia
)
import Xanthous.Entities.Draw.Util
import Xanthous.Data
import Xanthous.Game.State
--------------------------------------------------------------------------------
data Wall = Wall
@ -45,6 +37,7 @@ instance Brain Wall where step = brainVia Brainless
instance Entity Wall where
blocksVision _ = True
description _ = "a wall"
entityChar _ = ""
instance Arbitrary Wall where
arbitrary = pure Wall
@ -90,3 +83,4 @@ instance Brain Door where step = brainVia Brainless
instance Entity Door where
blocksVision = not . view open
description _ = "a door"
entityChar _ = "d"