Add in "linear" lWorld to separate time reversable worlds
This commit is contained in:
+5
-5
@@ -27,7 +27,7 @@ doorMechanism dr w = case mvDir of
|
||||
w
|
||||
& flip (IS.foldl' (flip (`translateWallID` d))) (_drWallIDs dr)
|
||||
& moveUpdate
|
||||
& cWorld . doors . ix drid . drPos . each %~ (+.+ d)
|
||||
& cWorld . lWorld . doors . ix drid . drPos . each %~ (+.+ d)
|
||||
& maybeClearDoorPaths (_drObstacleType dr) (_drObstructs dr)
|
||||
Nothing -> w
|
||||
where
|
||||
@@ -47,9 +47,9 @@ doorMechanism dr w = case mvDir of
|
||||
dop = snd $ _drOpenPos dr
|
||||
dcp = snd $ _drClosePos dr
|
||||
setStatus
|
||||
| dist dpos dop < 1 = cWorld . doors . ix drid . drStatus .~ DoorOpen
|
||||
| dist dpos dcp < 1 = cWorld . doors . ix drid . drStatus .~ DoorClosed
|
||||
| otherwise = cWorld . doors . ix drid . drStatus .~ DoorHalfway
|
||||
| dist dpos dop < 1 = cWorld . lWorld . doors . ix drid . drStatus .~ DoorOpen
|
||||
| dist dpos dcp < 1 = cWorld . lWorld . doors . ix drid . drStatus .~ DoorClosed
|
||||
| otherwise = cWorld . lWorld . doors . ix drid . drStatus .~ DoorHalfway
|
||||
|
||||
-- TODO use vector instead of list, perhaps also memoisation of rectanglePairs
|
||||
-- TODO update _drPos
|
||||
@@ -72,7 +72,7 @@ doorMechanismStepwise nsteps wlids pss dr w
|
||||
toOpen = doWdBl (_drTrigger dr) w
|
||||
setWalls n =
|
||||
playSound (foldl' (&) w (zipWith moveWallID wlids newps))
|
||||
& cWorld . doors . ix drid . drStatus .~ DoorInt n
|
||||
& cWorld . lWorld . doors . ix drid . drStatus .~ DoorInt n
|
||||
where
|
||||
newps = uncurry (rectanglePairs 9) (pss !! n)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user