Apply side effects to universe not world
This commit is contained in:
+15
-8
@@ -18,11 +18,12 @@ import Dodge.Event.Keyboard
|
||||
import Dodge.Data
|
||||
import Dodge.Base
|
||||
import Dodge.Base.Window
|
||||
import Dodge.PreloadData
|
||||
--import Dodge.Creature.Action
|
||||
import Dodge.SoundLogic
|
||||
import Dodge.Inventory
|
||||
--import Geometry
|
||||
import Preload.Update
|
||||
--import Preload.Update
|
||||
import qualified IntMapHelp as IM
|
||||
|
||||
import Control.Lens
|
||||
@@ -33,8 +34,14 @@ import Control.Lens
|
||||
import qualified Data.Set as S
|
||||
import SDL
|
||||
|
||||
handleEvent :: Event -> World -> Maybe World
|
||||
handleEvent e = case eventPayload e of
|
||||
|
||||
handleEvent :: Event -> Universe -> Maybe Universe
|
||||
handleEvent e uv = case handleEvent' e (_uvWorld uv) of
|
||||
Nothing -> Nothing
|
||||
Just w -> Just $ uv & uvWorld .~ w
|
||||
|
||||
handleEvent' :: Event -> World -> Maybe World
|
||||
handleEvent' e = case eventPayload e of
|
||||
KeyboardEvent kev -> handleKeyboardEvent kev
|
||||
MouseMotionEvent mmev -> handleMouseMotionEvent mmev
|
||||
MouseButtonEvent mbev -> handleMouseButtonEvent mbev
|
||||
@@ -70,13 +77,13 @@ handleResizeEvent :: WindowSizeChangedEventData -> World -> Maybe World
|
||||
handleResizeEvent sev w = Just
|
||||
. set (config . windowX) (fromIntegral x)
|
||||
. set (config . windowY) (fromIntegral y)
|
||||
$ over sideEffects up
|
||||
$ over sideEffects (sideEffectUpdatePreload divRes x y)
|
||||
w
|
||||
where
|
||||
up :: (World -> IO World) -> World -> IO World
|
||||
up f w' = do
|
||||
pdata <- pdataResizeUpdate (x `div` divRes) (y `div` divRes) x y (_preloadData w')
|
||||
f $ w' & preloadData .~ pdata
|
||||
-- up :: (World -> IO World) -> World -> IO World
|
||||
-- up f w' = do
|
||||
-- pdata <- pdataResizeUpdate (x `div` divRes) (y `div` divRes) x y (_preloadData w')
|
||||
-- f $ w' & preloadData .~ pdata
|
||||
x = fromIntegral x'
|
||||
y = fromIntegral y'
|
||||
V2 x' y' = windowSizeChangedEventSize sev
|
||||
|
||||
Reference in New Issue
Block a user