diff options
author | Griffin Smith <root@gws.fyi> | 2020-01-05T17·55-0500 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2020-01-05T17·55-0500 |
commit | 0f79a06733c30ddca4bc0746ddc99e1626775fff (patch) | |
tree | 7f9bffb1740a531ac11c3130020bb86723bde5a8 /src/Xanthous/Entities/Environment.hs | |
parent | 6b0bab0e85266ce66836c4584f8cc83b307a3af5 (diff) |
Add staircases, and moving between levels
Currently we just pick randomly between the cave and dungeon level generators. There's a lot of bugs here, but it's *sorta* working, so I'm leaving it as is.
Diffstat (limited to 'src/Xanthous/Entities/Environment.hs')
-rw-r--r-- | src/Xanthous/Entities/Environment.hs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/Xanthous/Entities/Environment.hs b/src/Xanthous/Entities/Environment.hs index dee8d83c3239..993714c844c5 100644 --- a/src/Xanthous/Entities/Environment.hs +++ b/src/Xanthous/Entities/Environment.hs @@ -3,13 +3,18 @@ module Xanthous.Entities.Environment ( -- * Walls Wall(..) + -- * Doors , Door(..) , open , locked , unlockedDoor + -- * Messages , GroundMessage(..) + + -- * Stairs + , Staircase(..) ) where -------------------------------------------------------------------------------- import Xanthous.Prelude @@ -122,3 +127,28 @@ instance Entity GroundMessage where description = const "a message on the ground. Press r. to read it." entityChar = const "≈" entityCollision = const Nothing + +-------------------------------------------------------------------------------- + +data Staircase = UpStaircase | DownStaircase + deriving stock (Show, Eq, Ord, Generic) + deriving anyclass (NFData, CoArbitrary, Function) + deriving Arbitrary via GenericArbitrary Staircase + deriving (ToJSON, FromJSON) + via WithOptions '[ 'TagSingleConstructors 'True + , 'SumEnc 'ObjWithSingleField + ] + Staircase +instance Brain Staircase where step = brainVia Brainless + +instance Draw Staircase where + draw UpStaircase = str "<" + draw DownStaircase = str ">" + +instance Entity Staircase where + blocksVision = const False + description UpStaircase = "a staircase leading upwards" + description DownStaircase = "a staircase leading downwards" + entityChar UpStaircase = "<" + entityChar DownStaircase = ">" + entityCollision = const Nothing |