Affect universe in more events

This commit is contained in:
2021-11-28 13:45:00 +00:00
parent 0723def26a
commit 574f195b21
3 changed files with 21 additions and 23 deletions
+4 -5
View File
@@ -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
+7 -8
View File
@@ -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
+10 -10
View File
@@ -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 _ = []