48 lines
1.2 KiB
Haskell
48 lines
1.2 KiB
Haskell
{-# 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
|