Separate out input datatype
This commit is contained in:
@@ -62,21 +62,21 @@ see 'handlePressedKeyInGame'.
|
||||
-}
|
||||
handleKeyboardEvent :: KeyboardEventData -> Universe -> IO (Maybe Universe)
|
||||
handleKeyboardEvent kev u = case keyboardEventKeyMotion kev of
|
||||
Released -> return . Just $ u & uvWorld . keys %~ S.delete scode
|
||||
Released -> return . Just $ u & uvWorld . input . keys %~ S.delete scode
|
||||
Pressed ->
|
||||
handlePressedKey
|
||||
(keyboardEventRepeat kev)
|
||||
scode
|
||||
(u & uvWorld . keys %~ S.insert scode)
|
||||
(u & uvWorld . input . keys %~ S.insert scode)
|
||||
where
|
||||
scode = (keysymScancode . keyboardEventKeysym) kev
|
||||
|
||||
handlePressedKey :: Bool -> Scancode -> Universe -> IO (Maybe Universe)
|
||||
handlePressedKey True ScancodeBackspace u
|
||||
| _backspaceTimer (_uvWorld u) <= 0 =
|
||||
| _backspaceTimer (_input $ _uvWorld u) <= 0 =
|
||||
handlePressedKey False ScancodeBackspace u
|
||||
<&> _Just . uvWorld . backspaceTimer .~ 0
|
||||
| otherwise = return $ Just $ u & uvWorld . backspaceTimer -~ 1
|
||||
<&> _Just . uvWorld . input . backspaceTimer .~ 0
|
||||
| otherwise = return $ Just $ u & uvWorld . input . backspaceTimer -~ 1
|
||||
handlePressedKey True _ u = return $ Just u
|
||||
handlePressedKey _ scode u = case scode of
|
||||
-- ScancodeF1 -> Just <$> (writeSaveSlot (SaveSlotNum 1) u >> return u)
|
||||
@@ -114,7 +114,7 @@ handlePressedKeyTerminal tmid scode w = case scode of
|
||||
ScancodeBackspace ->
|
||||
w
|
||||
& cWorld . lWorld . terminals . ix tmid . tmInput . tiText %~ doBackspace
|
||||
& backspaceTimer .~ 5
|
||||
& input . backspaceTimer .~ 5
|
||||
_ -> w
|
||||
where
|
||||
doBackspace t = case T.unsnoc t of
|
||||
|
||||
Reference in New Issue
Block a user