module Classes.Collectable where import Classes.Physics.Collidible (Collidible) -- | All kinds of Effects present in the game data Effect = HealthUp | SpeedUp | JumpUp | ArmorUp | Antidote | StopTime | Invisibility deriving (Show) -- | The Effect holder type definition data EffectHolder = EffectHolder { effectDuration :: Double -- ^ Duration of stored effect , effectReleased :: Effect -- ^ The actual effect released } deriving (Show) class Collidible c => Collectable c where effect :: c -- ^ Collectable object -> EffectHolder -- ^ The descriptor of the effect contained