Affect universe in more events
This commit is contained in:
+4
-5
@@ -60,8 +60,7 @@ handleMouseMotionEvent mmev u = Just $ u & uvWorld . mousePos .~ V2
|
|||||||
handleMouseButtonEvent :: MouseButtonEventData -> Universe -> Maybe Universe
|
handleMouseButtonEvent :: MouseButtonEventData -> Universe -> Maybe Universe
|
||||||
handleMouseButtonEvent mbev u = case mouseButtonEventMotion mbev of
|
handleMouseButtonEvent mbev u = case mouseButtonEventMotion mbev of
|
||||||
Released -> Just $ u & uvWorld . mouseButtons %~ S.delete but
|
Released -> Just $ u & uvWorld . mouseButtons %~ S.delete but
|
||||||
Pressed -> uvWorld
|
Pressed -> (handlePressedMouseButton but)
|
||||||
(handlePressedMouseButton but)
|
|
||||||
(u & uvWorld . mouseButtons %~ S.insert but)
|
(u & uvWorld . mouseButtons %~ S.insert but)
|
||||||
where
|
where
|
||||||
but = mouseButtonEventButton mbev
|
but = mouseButtonEventButton mbev
|
||||||
@@ -87,10 +86,10 @@ handleResizeEvent sev u = Just $ u
|
|||||||
V2 x' y' = windowSizeChangedEventSize sev
|
V2 x' y' = windowSizeChangedEventSize sev
|
||||||
divRes = w ^. config . resolution_factor
|
divRes = w ^. config . resolution_factor
|
||||||
|
|
||||||
handlePressedMouseButton :: MouseButton -> World -> Maybe World
|
handlePressedMouseButton :: MouseButton -> Universe -> Maybe Universe
|
||||||
handlePressedMouseButton but w
|
handlePressedMouseButton but w
|
||||||
| but == ButtonMiddle || _carteDisplay w
|
| but == ButtonMiddle || _carteDisplay (_uvWorld w)
|
||||||
= Just $ w & clickMousePos .~ _mousePos w
|
= Just $ w & uvWorld . clickMousePos .~ _mousePos (_uvWorld w)
|
||||||
| otherwise = Just w
|
| otherwise = Just w
|
||||||
|
|
||||||
handleMouseWheelEvent :: MouseWheelEventData -> Universe -> Maybe Universe
|
handleMouseWheelEvent :: MouseWheelEventData -> Universe -> Maybe Universe
|
||||||
|
|||||||
@@ -26,20 +26,19 @@ see 'handlePressedKeyInGame'.
|
|||||||
handleKeyboardEvent :: KeyboardEventData -> Universe -> Maybe Universe
|
handleKeyboardEvent :: KeyboardEventData -> Universe -> Maybe Universe
|
||||||
handleKeyboardEvent kev u = case keyboardEventKeyMotion kev of
|
handleKeyboardEvent kev u = case keyboardEventKeyMotion kev of
|
||||||
Released -> Just $ u & uvWorld . keys %~ S.delete kcode
|
Released -> Just $ u & uvWorld . keys %~ S.delete kcode
|
||||||
Pressed -> uvWorld
|
Pressed -> (handlePressedKey (keyboardEventRepeat kev) kcode)
|
||||||
(handlePressedKey (keyboardEventRepeat kev) kcode)
|
|
||||||
(u & uvWorld . keys %~ S.insert kcode)
|
(u & uvWorld . keys %~ S.insert kcode)
|
||||||
where
|
where
|
||||||
kcode = (keysymScancode . keyboardEventKeysym) kev
|
kcode = (keysymScancode . keyboardEventKeysym) kev
|
||||||
|
|
||||||
handlePressedKey :: Bool -> Scancode -> World -> Maybe World
|
handlePressedKey :: Bool -> Scancode -> Universe -> Maybe Universe
|
||||||
handlePressedKey True _ w = Just w
|
handlePressedKey True _ w = Just w
|
||||||
handlePressedKey _ ScancodeF5 w = Just $ doQuicksave w
|
handlePressedKey _ ScancodeF5 w = Just $ over uvWorld doQuicksave w
|
||||||
handlePressedKey _ ScancodeF9 w = Just $ loadSaveSlot QuicksaveSlot w
|
handlePressedKey _ ScancodeF9 w = Just $ over uvWorld (loadSaveSlot QuicksaveSlot) w
|
||||||
handlePressedKey _ ScancodeSemicolon w = Just $ gotoTerminal w
|
handlePressedKey _ ScancodeSemicolon w = Just $ over uvWorld gotoTerminal w
|
||||||
handlePressedKey _ scode w
|
handlePressedKey _ scode w
|
||||||
| null (_menuLayers w) = handlePressedKeyInGame scode w
|
| null (_menuLayers (_uvWorld w)) = uvWorld (handlePressedKeyInGame scode) w
|
||||||
| otherwise = handlePressedKeyInMenu (head $ _menuLayers w) scode w
|
| otherwise = handlePressedKeyInMenu (head $ _menuLayers (_uvWorld w)) scode w
|
||||||
|
|
||||||
handlePressedKeyInGame :: Scancode -> World -> Maybe World
|
handlePressedKeyInGame :: Scancode -> World -> Maybe World
|
||||||
handlePressedKeyInGame scode w
|
handlePressedKeyInGame scode w
|
||||||
|
|||||||
+10
-10
@@ -10,21 +10,21 @@ import Control.Monad
|
|||||||
import Control.Lens
|
import Control.Lens
|
||||||
import SDL
|
import SDL
|
||||||
|
|
||||||
handlePressedKeyInMenu :: ScreenLayer -> Scancode -> World -> Maybe World
|
handlePressedKeyInMenu :: ScreenLayer -> Scancode -> Universe -> Maybe Universe
|
||||||
handlePressedKeyInMenu mState scode = case mState of
|
handlePressedKeyInMenu mState scode = case mState of
|
||||||
OptionScreen { _scOptions = mos, _scDefaultEff = defeff}
|
OptionScreen { _scOptions = mos, _scDefaultEff = defeff}
|
||||||
-> optionListToEffects mos defeff scode
|
-> uvWorld $ optionListToEffects mos defeff scode
|
||||||
DisplayScreen {} -> popScreen
|
DisplayScreen {} -> uvWorld $ popScreen
|
||||||
ColumnsScreen {} -> popScreen
|
ColumnsScreen {} -> uvWorld $ popScreen
|
||||||
WaitScreen {} -> Just
|
WaitScreen {} -> Just
|
||||||
TerminalScreen 0 _ -> popScreen
|
TerminalScreen 0 _ -> uvWorld $ popScreen
|
||||||
TerminalScreen _ m -> Just . ( menuLayers %~ ( (TerminalScreen 0 m : ) . tail) )
|
TerminalScreen _ m -> Just . (uvWorld . menuLayers %~ ( (TerminalScreen 0 m : ) . tail) )
|
||||||
InputScreen s -> case scode of
|
InputScreen s -> case scode of
|
||||||
ScancodeEscape -> popScreen
|
ScancodeEscape -> uvWorld $ popScreen
|
||||||
ScancodeReturn -> popScreen . applyTerminalString s
|
ScancodeReturn -> uvWorld $ popScreen . applyTerminalString s
|
||||||
ScancodeBackspace
|
ScancodeBackspace
|
||||||
-> popScreen >=> pushScreen (InputScreen $ dropLast s)
|
-> uvWorld $ popScreen >=> pushScreen (InputScreen $ dropLast s)
|
||||||
_ -> popScreen >=> pushScreen (InputScreen $ s ++ [scodeToChar scode])
|
_ -> uvWorld $ popScreen >=> pushScreen (InputScreen $ s ++ [scodeToChar scode])
|
||||||
where
|
where
|
||||||
dropLast (x:xs) = init (x:xs)
|
dropLast (x:xs) = init (x:xs)
|
||||||
dropLast _ = []
|
dropLast _ = []
|
||||||
|
|||||||
Reference in New Issue
Block a user