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

@ -24,8 +24,7 @@ import Xanthous.Entities.Creature
import Xanthous.Entities.Character (Character)
import qualified Xanthous.Entities.Character as Character
import qualified Xanthous.Entities.RawTypes as Raw
import Xanthous.Entities (Entity(..), Brain(..), brainVia)
import Xanthous.Game.State (entities, GameState, entityIs)
import Xanthous.Game.State
import Xanthous.Game.Lenses
( Collision(..), entityCollision, collisionAt
, character, characterPosition
@ -99,3 +98,4 @@ instance Brain Creature where step = brainVia GormlakBrain
instance Entity Creature where
blocksVision _ = False
description = view $ Creature.creatureType . Raw.description
entityChar = view $ Creature.creatureType . char