module Input.InputState (MousePos(MousePos), mouseX, mouseY, KeysState(KeysState), leftKeyDown, rightKeyDown, downKeyDown, upKeyDown, lMousePrevDown, lMouseDown, rMouseDown, spaceKeyDown, escKeyDown, translateMousePos) where import Unsafe.Coerce import Graphics.Rendering.OpenGL import Nxt.Graphics import Settings.DisplaySettings data KeysState = KeysState { leftKeyDown :: Bool, rightKeyDown :: Bool, downKeyDown :: Bool, upKeyDown :: Bool, lMousePrevDown :: Bool, lMouseDown :: Bool, rMouseDown :: Bool, spaceKeyDown :: Bool, escKeyDown :: Bool } data MousePos = MousePos { mouseX :: Int, mouseY :: Int } -- fromGLsizei fromGLsizei :: a -> Int fromGLsizei = unsafeCoerce -- translateMousePos translateMousePos :: MousePos -> GLsizei -> GLsizei -> (Double, Double) translateMousePos (MousePos x y) winW winH = let x' = fromIntegral x sW' = fromGLdouble screenResWidth :: Double wW' = (fromIntegral (fromGLsizei winW)) y' = fromIntegral y sH' = fromGLdouble screenResHeight :: Double wH' = (fromIntegral (fromGLsizei winH)) in (x' * (sW' / wW'), sH' - ((sH' - y') * (sH' / wH')))