28 lines
626 B
Haskell
28 lines
626 B
Haskell
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
|