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:
parent
7d8ce026a2
commit
8a1235c3dc
26 changed files with 232 additions and 212 deletions
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue