diff options
author | Griffin Smith <root@gws.fyi> | 2019-09-19T17·56-0400 |
---|---|---|
committer | Griffin Smith <root@gws.fyi> | 2019-09-19T17·56-0400 |
commit | 62a2e05ef222dd69263b819a400a83f8910816f9 (patch) | |
tree | b81ee35bcc1f6f20290e6347e5b6ceff8a9fff12 /src/Xanthous/Entities/Item.hs | |
parent | 15895c69fe8f1415f45fe33f7b3d564f4239496e (diff) |
Add items and inventory
Add a new "Item" entity, which pulls from the previously-existent ItemType raw, and add a "PickUp" command which takes the (currently *only*) item off the ground and puts it into the inventory.
Diffstat (limited to 'src/Xanthous/Entities/Item.hs')
-rw-r--r-- | src/Xanthous/Entities/Item.hs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/Xanthous/Entities/Item.hs b/src/Xanthous/Entities/Item.hs new file mode 100644 index 000000000000..baf4be2f5426 --- /dev/null +++ b/src/Xanthous/Entities/Item.hs @@ -0,0 +1,35 @@ +{-# LANGUAGE TemplateHaskell #-} +module Xanthous.Entities.Item + ( Item(..) + , itemType + , newWithType + ) where +-------------------------------------------------------------------------------- +import Xanthous.Prelude +import Test.QuickCheck +import Data.Aeson (ToJSON, FromJSON) +import Data.Aeson.Generic.DerivingVia +-------------------------------------------------------------------------------- +import Xanthous.Entities.RawTypes hiding (Item) +import Xanthous.Entities (Draw(..), Entity(..), DrawRawChar(..)) +-------------------------------------------------------------------------------- + +data Item = Item + { _itemType :: ItemType + } + deriving stock (Eq, Show, Generic) + deriving anyclass (CoArbitrary, Function) + deriving Draw via DrawRawChar "_itemType" Item + deriving (ToJSON, FromJSON) + via WithOptions '[ FieldLabelModifier '[Drop 1] ] + Item +makeLenses ''Item + +instance Arbitrary Item where + arbitrary = Item <$> arbitrary + +instance Entity Item where + blocksVision _ = False + +newWithType :: ItemType -> Item +newWithType = Item |