diff options
Diffstat (limited to 'src/Xanthous/Entities/RawTypes.hs')
-rw-r--r-- | src/Xanthous/Entities/RawTypes.hs | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/Xanthous/Entities/RawTypes.hs b/src/Xanthous/Entities/RawTypes.hs index 88087a5dab61..1546d85e4562 100644 --- a/src/Xanthous/Entities/RawTypes.hs +++ b/src/Xanthous/Entities/RawTypes.hs @@ -1,6 +1,6 @@ {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE DuplicateRecordFields #-} - +-------------------------------------------------------------------------------- module Xanthous.Entities.RawTypes ( CreatureType(..) , ItemType(..) @@ -9,19 +9,20 @@ module Xanthous.Entities.RawTypes , HasName(..) , HasDescription(..) , HasLongDescription(..) - , HasChar(..) , HasMaxHitpoints(..) , HasFriendly(..) , _Creature ) where - +-------------------------------------------------------------------------------- import Xanthous.Prelude +import Test.QuickCheck +import Test.QuickCheck.Arbitrary.Generic import Data.Aeson.Generic.DerivingVia -import Data.Aeson (FromJSON) +import Data.Aeson (ToJSON, FromJSON) import Data.Word - -import Xanthous.Entities (EntityChar) - +-------------------------------------------------------------------------------- +import Xanthous.Entities (EntityChar, HasChar(..)) +-------------------------------------------------------------------------------- data CreatureType = CreatureType { _name :: Text , _description :: Text @@ -35,7 +36,7 @@ data CreatureType = CreatureType via WithOptions '[ FieldLabelModifier '[Drop 1] ] CreatureType makeFieldsNoPrefix ''CreatureType - +-------------------------------------------------------------------------------- data ItemType = ItemType { _name :: Text , _description :: Text @@ -43,12 +44,15 @@ data ItemType = ItemType , _char :: EntityChar } deriving stock (Show, Eq, Generic) - deriving anyclass (NFData) - deriving (FromJSON) + deriving anyclass (NFData, CoArbitrary, Function) + deriving (ToJSON, FromJSON) via WithOptions '[ FieldLabelModifier '[Drop 1] ] ItemType makeFieldsNoPrefix ''ItemType +instance Arbitrary ItemType where + arbitrary = genericArbitrary + data EntityRaw = Creature CreatureType | Item ItemType |