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 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
|
||||
|
||||
@@ -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
@@ -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 _ = []
|
||||
|
||||
Reference in New Issue
Block a user