tcod-haskell-0.2.0.0: src/Game/TCOD/MouseTypes.hsc
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE CPP #-}
module Game.TCOD.MouseTypes(
TCODMouse(..)
, defaultTCODMouse
) where
import Foreign
import Game.TCOD.Context
import GHC.Generics
#include "libtcod/mouse_types.h"
-- | Get 'TCODMouse' with default values
defaultTCODMouse :: TCODMouse
defaultTCODMouse = TCODMouse {
mouseX = 0
, mouseY = 0
, mouseDx = 0
, mouseDy = 0
, mouseCx = 0
, mouseCy = 0
, mouseDcx = 0
, mouseDcy = 0
, mouseLButton = False
, mouseRButton = False
, mouseMButton = False
, mouseLButtonPressed = False
, mouseRButtonPressed = False
, mouseMButtonPressed = False
, mouseWheelUp = False
, mouseWheelDown = False
}
instance Storable TCODMouse where
sizeOf _ = #{size TCOD_mouse_t}
alignment _ = #{alignment TCOD_mouse_t}
poke p TCODMouse{..} = do
#{poke TCOD_mouse_t, x} p mouseX
#{poke TCOD_mouse_t, y} p mouseY
#{poke TCOD_mouse_t, dx} p mouseDx
#{poke TCOD_mouse_t, dy} p mouseDy
#{poke TCOD_mouse_t, cx} p mouseCx
#{poke TCOD_mouse_t, cy} p mouseCy
#{poke TCOD_mouse_t, dcx} p mouseDcx
#{poke TCOD_mouse_t, dcy} p mouseDcy
#{poke TCOD_mouse_t, lbutton} p mouseLButton
#{poke TCOD_mouse_t, rbutton} p mouseRButton
#{poke TCOD_mouse_t, mbutton} p mouseMButton
#{poke TCOD_mouse_t, lbutton_pressed} p mouseLButtonPressed
#{poke TCOD_mouse_t, rbutton_pressed} p mouseRButtonPressed
#{poke TCOD_mouse_t, mbutton_pressed} p mouseMButtonPressed
#{poke TCOD_mouse_t, wheel_up} p mouseWheelUp
#{poke TCOD_mouse_t, wheel_down} p mouseWheelDown
peek p = TCODMouse
<$> (#{peek TCOD_mouse_t, x} p)
<*> (#{peek TCOD_mouse_t, y} p)
<*> (#{peek TCOD_mouse_t, dx} p)
<*> (#{peek TCOD_mouse_t, dy} p)
<*> (#{peek TCOD_mouse_t, cx} p)
<*> (#{peek TCOD_mouse_t, cy} p)
<*> (#{peek TCOD_mouse_t, dcx} p)
<*> (#{peek TCOD_mouse_t, dcy} p)
<*> (#{peek TCOD_mouse_t, lbutton} p)
<*> (#{peek TCOD_mouse_t, rbutton} p)
<*> (#{peek TCOD_mouse_t, mbutton} p)
<*> (#{peek TCOD_mouse_t, lbutton_pressed} p)
<*> (#{peek TCOD_mouse_t, rbutton_pressed} p)
<*> (#{peek TCOD_mouse_t, mbutton_pressed} p)
<*> (#{peek TCOD_mouse_t, wheel_up} p)
<*> (#{peek TCOD_mouse_t, wheel_down} p)