{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Input where import Control.Lens import qualified Data.Map.Strict as M import Dodge.Data.CWorld import Geometry.Data import SDL (MouseButton, Scancode) data PressType = InitialPress | ShortPress | LongPress deriving (Eq,Show) data MouseButtonInfo = MouseButtonInfo { _mbHeldDown :: Bool , _mbFlags :: [MouseButtonFlag] } data MouseButtonFlag = PressedStartRewind data Input = Input { _mousePos :: Point2 , _mouseMoving :: Bool , _pressedKeys :: M.Map Scancode PressType , _mouseButtons :: M.Map MouseButton Bool , _scrollAmount :: Int , _previousScrollAmount :: Int , _hammers :: M.Map WorldHammer HammerPosition , _lLine :: (Point2, Point2) , _rLine :: (Point2, Point2) , _lrLine :: (Point2, Point2) , _lSelect :: Point2 , _rSelect :: Point2 , _clickMousePos :: Point2 , _textInput :: String , _scrollTestValue :: Float } data WorldHammer = SubInvHam | DoubleMouseHam deriving (Eq, Ord, Show, Read, Enum, Bounded) makeLenses ''Input