{-# LANGUAGE MultiParamTypeClasses #-} module Types.ObjClass where import Affection import Data.Ecstasy import Types.Entity import Types.UserData class ObjectAction otype ostate where objectAction :: Double -> otype -> ostate -> Ent -> SystemT Entity (AffectionState (AffectionData UserData) IO) () objectTransition :: otype -> ostate -> Bool -> Ent -> SystemT Entity (AffectionState (AffectionData UserData) IO) (Entity 'SetterOf) class ActionTime otype ostate where actionTime :: otype -> ostate -> Double