From 574f195b21b5d2210a8cc541d217126509b65974 Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 28 Nov 2021 13:45:00 +0000 Subject: [PATCH] Affect universe in more events --- src/Dodge/Event.hs | 9 ++++----- src/Dodge/Event/Keyboard.hs | 15 +++++++-------- src/Dodge/Event/Menu.hs | 20 ++++++++++---------- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/src/Dodge/Event.hs b/src/Dodge/Event.hs index 4b0c1f291..2c57d0888 100644 --- a/src/Dodge/Event.hs +++ b/src/Dodge/Event.hs @@ -60,8 +60,7 @@ handleMouseMotionEvent mmev u = Just $ u & uvWorld . mousePos .~ V2 handleMouseButtonEvent :: MouseButtonEventData -> Universe -> Maybe Universe handleMouseButtonEvent mbev u = case mouseButtonEventMotion mbev of Released -> Just $ u & uvWorld . mouseButtons %~ S.delete but - Pressed -> uvWorld - (handlePressedMouseButton but) + Pressed -> (handlePressedMouseButton but) (u & uvWorld . mouseButtons %~ S.insert but) where but = mouseButtonEventButton mbev @@ -87,10 +86,10 @@ handleResizeEvent sev u = Just $ u V2 x' y' = windowSizeChangedEventSize sev divRes = w ^. config . resolution_factor -handlePressedMouseButton :: MouseButton -> World -> Maybe World +handlePressedMouseButton :: MouseButton -> Universe -> Maybe Universe handlePressedMouseButton but w - | but == ButtonMiddle || _carteDisplay w - = Just $ w & clickMousePos .~ _mousePos w + | but == ButtonMiddle || _carteDisplay (_uvWorld w) + = Just $ w & uvWorld . clickMousePos .~ _mousePos (_uvWorld w) | otherwise = Just w handleMouseWheelEvent :: MouseWheelEventData -> Universe -> Maybe Universe diff --git a/src/Dodge/Event/Keyboard.hs b/src/Dodge/Event/Keyboard.hs index 01d46da30..5cdacce55 100644 --- a/src/Dodge/Event/Keyboard.hs +++ b/src/Dodge/Event/Keyboard.hs @@ -26,20 +26,19 @@ see 'handlePressedKeyInGame'. handleKeyboardEvent :: KeyboardEventData -> Universe -> Maybe Universe handleKeyboardEvent kev u = case keyboardEventKeyMotion kev of Released -> Just $ u & uvWorld . keys %~ S.delete kcode - Pressed -> uvWorld - (handlePressedKey (keyboardEventRepeat kev) kcode) + Pressed -> (handlePressedKey (keyboardEventRepeat kev) kcode) (u & uvWorld . keys %~ S.insert kcode) where kcode = (keysymScancode . keyboardEventKeysym) kev -handlePressedKey :: Bool -> Scancode -> World -> Maybe World +handlePressedKey :: Bool -> Scancode -> Universe -> Maybe Universe handlePressedKey True _ w = Just w -handlePressedKey _ ScancodeF5 w = Just $ doQuicksave w -handlePressedKey _ ScancodeF9 w = Just $ loadSaveSlot QuicksaveSlot w -handlePressedKey _ ScancodeSemicolon w = Just $ gotoTerminal w +handlePressedKey _ ScancodeF5 w = Just $ over uvWorld doQuicksave w +handlePressedKey _ ScancodeF9 w = Just $ over uvWorld (loadSaveSlot QuicksaveSlot) w +handlePressedKey _ ScancodeSemicolon w = Just $ over uvWorld gotoTerminal w handlePressedKey _ scode w - | null (_menuLayers w) = handlePressedKeyInGame scode w - | otherwise = handlePressedKeyInMenu (head $ _menuLayers w) scode w + | null (_menuLayers (_uvWorld w)) = uvWorld (handlePressedKeyInGame scode) w + | otherwise = handlePressedKeyInMenu (head $ _menuLayers (_uvWorld w)) scode w handlePressedKeyInGame :: Scancode -> World -> Maybe World handlePressedKeyInGame scode w diff --git a/src/Dodge/Event/Menu.hs b/src/Dodge/Event/Menu.hs index 48401f507..4d8d69cd9 100644 --- a/src/Dodge/Event/Menu.hs +++ b/src/Dodge/Event/Menu.hs @@ -10,21 +10,21 @@ import Control.Monad import Control.Lens import SDL -handlePressedKeyInMenu :: ScreenLayer -> Scancode -> World -> Maybe World +handlePressedKeyInMenu :: ScreenLayer -> Scancode -> Universe -> Maybe Universe handlePressedKeyInMenu mState scode = case mState of OptionScreen { _scOptions = mos, _scDefaultEff = defeff} - -> optionListToEffects mos defeff scode - DisplayScreen {} -> popScreen - ColumnsScreen {} -> popScreen + -> uvWorld $ optionListToEffects mos defeff scode + DisplayScreen {} -> uvWorld $ popScreen + ColumnsScreen {} -> uvWorld $ popScreen WaitScreen {} -> Just - TerminalScreen 0 _ -> popScreen - TerminalScreen _ m -> Just . ( menuLayers %~ ( (TerminalScreen 0 m : ) . tail) ) + TerminalScreen 0 _ -> uvWorld $ popScreen + TerminalScreen _ m -> Just . (uvWorld . menuLayers %~ ( (TerminalScreen 0 m : ) . tail) ) InputScreen s -> case scode of - ScancodeEscape -> popScreen - ScancodeReturn -> popScreen . applyTerminalString s + ScancodeEscape -> uvWorld $ popScreen + ScancodeReturn -> uvWorld $ popScreen . applyTerminalString s ScancodeBackspace - -> popScreen >=> pushScreen (InputScreen $ dropLast s) - _ -> popScreen >=> pushScreen (InputScreen $ s ++ [scodeToChar scode]) + -> uvWorld $ popScreen >=> pushScreen (InputScreen $ dropLast s) + _ -> uvWorld $ popScreen >=> pushScreen (InputScreen $ s ++ [scodeToChar scode]) where dropLast (x:xs) = init (x:xs) dropLast _ = []