Add in "linear" lWorld to separate time reversable worlds
This commit is contained in:
+12
-12
@@ -18,21 +18,21 @@ import System.Random
|
||||
doWdWd :: WdWd -> World -> World
|
||||
doWdWd we = case we of
|
||||
NoWorldEffect -> id
|
||||
SetTrigger bool tid -> cWorld . triggers . ix tid .~ bool
|
||||
SetLSCol col lsid -> cWorld . lightSources . ix lsid . lsParam . lsCol .~ col
|
||||
SetTrigger bool tid -> cWorld . lWorld . triggers . ix tid .~ bool
|
||||
SetLSCol col lsid -> cWorld . lWorld . lightSources . ix lsid . lsParam . lsCol .~ col
|
||||
AccessTerminal mtmid -> accessTerminal mtmid
|
||||
WorldEffects wes -> \w -> foldr doWdWd w wes
|
||||
UnlockInv cid -> unlockInv cid
|
||||
MakeStartCloudAt p -> makeStartCloudAt p
|
||||
TorqueCr x cid -> torqueCr x cid
|
||||
SoundStart so p sid mi -> soundStart so p sid mi
|
||||
WdWdNegateTrig trid -> cWorld . triggers . ix trid %~ not
|
||||
WdWdNegateTrig trid -> cWorld . lWorld . triggers . ix trid %~ not
|
||||
WdWdFromItixCrixWdWd itid crid f -> \w -> fromMaybe w $ do
|
||||
cr <- w ^? cWorld . creatures . ix crid
|
||||
cr <- w ^? cWorld . lWorld . creatures . ix crid
|
||||
it <- getItem itid w
|
||||
return $ doItCrWdWd f it cr w
|
||||
WdWdFromItCrixWdWd it crid f -> \w -> fromMaybe w $ do
|
||||
cr <- w ^? cWorld . creatures . ix crid
|
||||
cr <- w ^? cWorld . lWorld . creatures . ix crid
|
||||
return $ doItCrWdWd f it cr w
|
||||
|
||||
doItCrWdWd :: ItCrWdWd -> Item -> Creature -> World -> World
|
||||
@@ -44,9 +44,9 @@ accessTerminal :: Maybe Int -> World -> World
|
||||
accessTerminal mtmid w = case mtmid of
|
||||
Nothing -> w
|
||||
Just tmid ->
|
||||
w & cWorld . hud . hudElement .~ DisplayInventory (DisplayTerminal tmid)
|
||||
& cWorld . terminals . ix tmid . tmInput . tiFocus .~ True
|
||||
& cWorld . terminals . ix tmid %~ tryToBoot
|
||||
w & cWorld . lWorld . hud . hudElement .~ DisplayInventory (DisplayTerminal tmid)
|
||||
& cWorld . lWorld . terminals . ix tmid . tmInput . tiFocus .~ True
|
||||
& cWorld . lWorld . terminals . ix tmid %~ tryToBoot
|
||||
where
|
||||
tryToBoot tm = case _tmStatus tm of
|
||||
TerminalReady -> tm
|
||||
@@ -58,8 +58,8 @@ accessTerminal mtmid w = case mtmid of
|
||||
|
||||
torqueCr :: Float -> Int -> World -> World
|
||||
torqueCr x cid w
|
||||
| cid == 0 = set randGen g $ over (cWorld . cwCam . cwcRot) (+ rot) w
|
||||
| otherwise = set randGen g $ over (cWorld . creatures . ix cid . crDir) (+ rot) w
|
||||
| cid == 0 = set randGen g $ over (cWorld . lWorld . cwCam . cwcRot) (+ rot) w
|
||||
| otherwise = set randGen g $ over (cWorld . lWorld . creatures . ix cid . crDir) (+ rot) w
|
||||
where
|
||||
(rot, g) = randomR (- x, x) $ _randGen w
|
||||
|
||||
@@ -91,7 +91,7 @@ lineOutputTerminal tls =
|
||||
doDeathTriggers :: Terminal -> World -> World
|
||||
doDeathTriggers tm w =
|
||||
w
|
||||
& cWorld . triggers %~ flip (foldl' $ flip doDeathToggle) xs
|
||||
& cWorld . lWorld . triggers %~ flip (foldl' $ flip doDeathToggle) xs
|
||||
where
|
||||
xs = M.elems $ _tmToggles tm
|
||||
|
||||
@@ -114,7 +114,7 @@ doTmWdWd tmwdwd = case tmwdwd of
|
||||
TmWdId -> const id
|
||||
TmWdWdDisconnectTerminal -> disconnectTerminal
|
||||
TmWdWdTermSound sid -> \tm w ->
|
||||
let tpos = fromMaybe 0 $ w ^? cWorld . buttons . ix (_tmButtonID tm) . btPos
|
||||
let tpos = fromMaybe 0 $ w ^? cWorld . lWorld . buttons . ix (_tmButtonID tm) . btPos
|
||||
in soundStart TerminalSound tpos sid Nothing w
|
||||
TmWdWdDoDeathTriggers -> doDeathTriggers
|
||||
TmWdWdfromWdWd f -> \_ -> doWdWd f
|
||||
|
||||
Reference in New Issue
Block a user