From d107b6f76cce12db615f0adafcee290226b33d92 Mon Sep 17 00:00:00 2001 From: nek0 Date: Sun, 6 Jan 2019 03:52:43 +0100 Subject: [PATCH] I have no MonadErr instances --- src/MainGame/WorldMap.hs | 10 ++++++---- src/MindMap.hs | 2 +- src/NPC.hs | 8 ++++---- src/Object.hs | 40 ++++++++++++++++++++-------------------- 4 files changed, 31 insertions(+), 29 deletions(-) diff --git a/src/MainGame/WorldMap.hs b/src/MainGame/WorldMap.hs index 16201d3..a04da78 100644 --- a/src/MainGame/WorldMap.hs +++ b/src/MainGame/WorldMap.hs @@ -337,7 +337,7 @@ playerInteract (MsgMouseButton _ _ SDL.Pressed _ SDL.ButtonRight _ m) = do return $ unchanged { rot = Set $ fromMaybe rot' ndir } - [(ppos, pdir, pent)] <- efor allEnts $ do + pdata <- efor allEnts $ do with player with pos with rot @@ -345,6 +345,7 @@ playerInteract (MsgMouseButton _ _ SDL.Pressed _ SDL.ButtonRight _ m) = do rot' <- query rot ent <- queryEnt return (pos', rot', ent) + let (ppos, pdir, pent) = head pdata mrelEnts <- efor allEnts $ do with pos with objAccess @@ -376,7 +377,7 @@ playerInteract2 :: ActionMessage -> Affection UserData () playerInteract2 (ActionMessage Activate _) = do ud <- getAffection (nws, _) <- yieldSystemT (worldState ud) $ do - [(ppos, pdir, pent)] <- efor allEnts $ do + pdata <- efor allEnts $ do with player with pos with rot @@ -384,6 +385,7 @@ playerInteract2 (ActionMessage Activate _) = do rot' <- query rot ent <- queryEnt return (pos', rot', ent) + let (ppos, pdir, pent) = head pdata mrelEnts <- efor allEnts $ do with pos with objAccess @@ -421,7 +423,7 @@ drawMap = do _ -> do dt <- getDelta (_, (playerPos, posanims, posActions)) <- yieldSystemT (worldState ud) $ do - [pc] <- efor allEnts $ do + pc <- efor allEnts $ do with player with pos query pos @@ -445,7 +447,7 @@ drawMap = do let maxt = actionTime t s ttl <- query objStateTime return (pos', pa, realToFrac (1 - ttl / maxt)) - return (pc, posanims, posActions) + return (head pc, posanims, posActions) let V2 pr pc = playerPos mat = imgMat (stateData ud) cols = fromIntegral (ncols mat) diff --git a/src/MindMap.hs b/src/MindMap.hs index 22b198d..f91052b 100644 --- a/src/MindMap.hs +++ b/src/MindMap.hs @@ -82,7 +82,7 @@ buildFloorMap inGraph = (floor r + 2, floor c + 2) amat ) emptyFloor - floorGraph + (vertexList floorGraph) , fmap (\n -> n { mmPos = (+ 2) <$> mmPos n} ) floorGraph ) where diff --git a/src/NPC.hs b/src/NPC.hs index 73477a3..b1ad36e 100644 --- a/src/NPC.hs +++ b/src/NPC.hs @@ -166,7 +166,7 @@ updateNPCs imgmat ws rp dt = do , vel = Set $ V2 0 0 })) mapM_ (\(oent, npcent, future) -> do - [mts] <- efor (anEnt oent) $ do + mts <- efor (anEnt oent) $ do with objType with objState moub <- queryMaybe objUsedBy @@ -182,8 +182,8 @@ updateNPCs imgmat ws rp dt = do (\(t, s) -> setEntity oent =<< objectTransition t s False oent (Just npcent) ) - mts - [mntns] <- efor (anEnt oent) $ do + (head mts) + mntns <- efor (anEnt oent) $ do with objType with objState moub <- queryMaybe objUsedBy @@ -195,7 +195,7 @@ updateNPCs imgmat ws rp dt = do then return $ Just (otyp, ostat) else return Nothing emap (anEnt npcent) $ do - let ttl = case mntns of + let ttl = case head mntns of Just (nt, ns) -> actionTime nt ns Nothing -> 1 return unchanged diff --git a/src/Object.hs b/src/Object.hs index ccfbfdb..fd1debe 100644 --- a/src/Object.hs +++ b/src/Object.hs @@ -29,18 +29,18 @@ instance ObjectAction ObjType ObjState where return unchanged { objStateTime = Set (ttl - dt) } - [trans] <- efor (anEnt ent) $ do + trans <- efor (anEnt ent) $ do mttl <- queryMaybe objStateTime case mttl of Nothing -> return False Just ttl -> return (ttl < 0) - when trans (setEntity ent =<< objectTransition t s False ent Nothing) + when (head trans) (setEntity ent =<< objectTransition t s False ent Nothing) objectAction dt t@ObjComputer s@"on" ent = do - [pent] <- efor (anEnt ent) $ do + pent <- efor (anEnt ent) $ do with objUsedBy query objUsedBy - vls <- efor (anEnt pent) $ do + vls <- efor (anEnt $ head pent) $ do with player with vel query vel @@ -57,7 +57,7 @@ instance ObjectAction ObjType ObjState where return unchanged { objStateTime = Set (ttl - dt) } - [trans] <- efor (anEnt ent) $ do + trans <- efor (anEnt ent) $ do mttl <- queryMaybe objStateTime case mttl of Nothing -> return Nothing @@ -72,13 +72,13 @@ instance ObjectAction ObjType ObjState where maybe (return ()) (\tpa -> setEntity ent =<< objectTransition t s tpa ent Nothing) - trans + (head trans) objectAction dt t@ObjComputer s@"hack" ent = do - [aent] <- efor (anEnt ent) $ do + aent <- efor (anEnt ent) $ do with objUsedBy query objUsedBy - vls <- efor (anEnt aent) $ do + vls <- efor (anEnt $ head aent) $ do with player with vel query vel @@ -94,7 +94,7 @@ instance ObjectAction ObjType ObjState where return unchanged { objStateTime = Set (ttl - dt) } - [trans] <- efor (anEnt ent) $ do + trans <- efor (anEnt ent) $ do mttl <- queryMaybe objStateTime case mttl of Nothing -> return Nothing @@ -107,12 +107,12 @@ instance ObjectAction ObjType ObjState where maybe (return ()) (\tpa -> setEntity ent =<< objectTransition t s tpa ent Nothing) - trans + (head trans) objectAction _ _ _ _ = return () objectTransition ObjCopier "idle" playerActivated ent (Just aent) = do - [e] <- efor (anEnt ent) $ do + e <- efor (anEnt ent) $ do let nstat = AnimState (AnimId "copier" "copy" N) 0 @@ -123,10 +123,10 @@ instance ObjectAction ObjType ObjState where , objPlayerActivated = Set playerActivated , anim = Set nstat } - return e + return (head e) objectTransition ObjCopier "copying" _ ent _ = do - [e] <- efor (anEnt ent) $ do + e <- efor (anEnt ent) $ do ttl <- query objStateTime if ttl < 0 then do @@ -142,10 +142,10 @@ instance ObjectAction ObjType ObjState where , objUsedBy = Unset } else return unchanged - return e + return (head e) objectTransition ObjComputer "off" pa ent (Just aent) = do - [e] <- efor (anEnt ent) $ do + e <- efor (anEnt ent) $ do solved <- queryMaybe objSolved if pa then if not (fromMaybe False solved) @@ -182,10 +182,10 @@ instance ObjectAction ObjType ObjState where , objPlayerActivated = Set False , objUsedBy = Set aent } - return e + return (head e) objectTransition ObjComputer "on" _ ent _ = do - [e] <- efor (anEnt ent) $ do + e <- efor (anEnt ent) $ do let nstat = AnimState (AnimId "computer" "off" N) 0 @@ -197,12 +197,12 @@ instance ObjectAction ObjType ObjState where , objStateTime = Unset , objUsedBy = Unset } - return e + return (head e) objectTransition ObjComputer "hack" pa ent _ = if pa then do - [e] <- efor (anEnt ent) $ do + e <- efor (anEnt ent) $ do let nstat = AnimState (AnimId "computer" "off" N) 0 @@ -216,7 +216,7 @@ instance ObjectAction ObjType ObjState where , objUsedBy = Unset , objSolved = if pa then Set (ost < 0) else Keep } - return e + return (head e) else return unchanged objectTransition _ _ _ _ _ = return unchanged