about summary refs log tree commit diff
path: root/src/Xanthous/Entities/Item.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Xanthous/Entities/Item.hs')
-rw-r--r--src/Xanthous/Entities/Item.hs35
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 0000000000..baf4be2f54
--- /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