Start to generalise text input to "terminal signal" input
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
module Dodge.Data.CWorld (
|
||||
module Dodge.Data.CWorld,
|
||||
module Dodge.Data.LWorld,
|
||||
module Dodge.Data.CamPos
|
||||
module Dodge.Data.Camera
|
||||
) where
|
||||
|
||||
import Data.Tile
|
||||
@@ -18,13 +18,13 @@ import Data.Aeson.TH
|
||||
--import Dodge.Data.GenParams
|
||||
import Dodge.GameRoom
|
||||
import Geometry.ConvexPoly
|
||||
import Dodge.Data.CamPos
|
||||
import Dodge.Data.Camera
|
||||
import qualified Data.IntSet as IS
|
||||
import Data.Graph.Inductive
|
||||
|
||||
data CWorld = CWorld
|
||||
{ _lWorld :: LWorld
|
||||
, _cwCamPos :: CamPos
|
||||
, _cwCam :: Camera
|
||||
, _cwGen :: CWGen
|
||||
, _cClock :: Int
|
||||
, _seenWalls :: IS.IntSet
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
{-# LANGUAGE DeriveAnyClass #-}
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
module Dodge.Data.CamPos where
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Geometry.Data
|
||||
|
||||
data CamPos = CamPos
|
||||
{ _camCenter :: Point2
|
||||
, _camRot :: Float
|
||||
, _camZoom :: Float -- smaller values zoom out
|
||||
, _camItemZoom :: Float
|
||||
, _camDefaultZoom :: Float
|
||||
, _camViewFrom :: Point2
|
||||
, _camViewDistance :: Float
|
||||
, _camBoundBox :: [Point2]
|
||||
, _camBoundDist :: (Float, Float, Float, Float) -- NSEW, S and W negative
|
||||
}
|
||||
|
||||
makeLenses ''CamPos
|
||||
concat
|
||||
<$> mapM
|
||||
(deriveJSON defaultOptions)
|
||||
[ ''CamPos ]
|
||||
+19
-5
@@ -1,24 +1,27 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE DeriveAnyClass #-}
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Input where
|
||||
|
||||
import Control.Lens
|
||||
import qualified Data.Map.Strict as M
|
||||
import Geometry.Data
|
||||
import SDL (MouseButton, Scancode)
|
||||
|
||||
data PressType = InitialPress
|
||||
data PressType
|
||||
= InitialPress
|
||||
| ShortPress
|
||||
| LongPress
|
||||
deriving (Eq,Show)
|
||||
deriving (Eq, Show)
|
||||
|
||||
data Input = Input
|
||||
{ _mousePos :: Point2 -- in pixels, from the center of the screen
|
||||
, _mouseMoving :: Bool
|
||||
, _pressedKeys :: M.Map Scancode PressType
|
||||
, _mouseButtons :: M.Map MouseButton Bool -- shortpress False, repeatpress True
|
||||
, _scrollAmount :: Int
|
||||
, _scrollAmount :: Int
|
||||
, _previousScrollAmount :: Int
|
||||
, _lLine :: (Point2, Point2)
|
||||
, _rLine :: (Point2, Point2)
|
||||
@@ -26,9 +29,20 @@ data Input = Input
|
||||
, _lSelect :: Point2
|
||||
, _rSelect :: Point2
|
||||
, _clickMousePos :: Point2
|
||||
, _textInput :: String
|
||||
, _textInput :: [Either TermSignal Char]
|
||||
, _scrollTestFloat :: Float
|
||||
, _scrollTestInt :: Int
|
||||
}
|
||||
|
||||
data TermSignal
|
||||
= TSescape
|
||||
| TSreturn
|
||||
| TSbackspace
|
||||
| TSdelete
|
||||
| TStab
|
||||
| TSleft
|
||||
| TSright
|
||||
| TSup
|
||||
| TSdown
|
||||
|
||||
makeLenses ''Input
|
||||
|
||||
Reference in New Issue
Block a user