module HGamer3D.Input.InputEventHandler
(
InputEventType (..),
InputEventHandler (..),
ctInputEventHandler,
ExitRequestedEvent (..),
ctExitRequestedEvent
)
where
import Fresco
import Data.MessagePack
import Debug.Trace
import Data.Text
import HGamer3D.Data
data InputEventType = IEMouseButtonUp
| IEMouseButtonDown
| IEMouseMove
| IEMouseButtonWheel
| IEMouseButtonVisibleChanged
| IEKeyUp
| IEKeyDown
| IEExitRequested
deriving (Eq, Show)
instance ComponentClass InputEventType where
toObj iet = case iet of
IEMouseButtonUp -> ObjectInt 1
IEMouseButtonDown -> ObjectInt 2
IEMouseMove -> ObjectInt 3
IEMouseButtonWheel -> ObjectInt 4
IEMouseButtonVisibleChanged -> ObjectInt 5
IEKeyUp -> ObjectInt 6
IEKeyDown -> ObjectInt 7
IEExitRequested -> ObjectInt 8
fromObj (ObjectInt n) = case n of
1 -> IEMouseButtonUp
2 -> IEMouseButtonDown
3 -> IEMouseMove
4 -> IEMouseButtonWheel
5 -> IEMouseButtonVisibleChanged
6 -> IEKeyUp
7 -> IEKeyDown
8 -> IEExitRequested
data InputEventHandler = DefaultEventHandler
| SpecificEventHandler [InputEventType]
instance ComponentClass InputEventHandler where
toObj DefaultEventHandler = ObjectArray [ObjectInt 0]
toObj (SpecificEventHandler iets) = ObjectArray [ObjectInt 1, ObjectArray (Prelude.map toObj iets)]
fromObj (ObjectArray [ObjectInt 0]) = DefaultEventHandler
fromObj (ObjectArray [ObjectInt 1, (ObjectArray iets_os)]) = SpecificEventHandler (Prelude.map fromObj iets_os)
ctInputEventHandler :: ComponentType InputEventHandler
ctInputEventHandler = ComponentType 0xfc0edefcebcb5878
data ExitRequestedEvent = ExitRequestedEvent
deriving (Eq, Show)
instance ComponentClass ExitRequestedEvent where
toObj ExitRequestedEvent = ObjectArray [ObjectInt 0]
fromObj (ObjectArray [ObjectInt 0]) = ExitRequestedEvent
ctExitRequestedEvent :: ComponentType ExitRequestedEvent
ctExitRequestedEvent = ComponentType 0x824517eb48d5c653