Add looping sound, add sound to terminals

This commit is contained in:
2022-03-16 09:23:17 +00:00
parent 5623747b01
commit 5aeb04ba05
24 changed files with 156 additions and 133 deletions
+18 -23
View File
@@ -122,31 +122,26 @@ invSelPos w = splitgap + (foldl' (+) 0 . fst $ IM.split invsel (augmentedInvSize
| otherwise = 1
updateTerminal :: World -> World
updateTerminal w = case _hudElement $ _hud w of
DisplayInventory dt@DisplayTerminal{} -> w & hud . hudElement %~ updateDisplayTerminal dt w
_ -> w
updateTerminal = checkTermDist . updateTerminalLine
updateDisplayTerminal :: SubInventory -> World -> HUDElement -> HUDElement
updateDisplayTerminal sub w inv
| closetest == Just True = inv & subInventory %~ tickDisplayTerminal
| otherwise = DisplayInventory NoSubInventory
where
closetest = do
btpos <- w ^? buttons . ix (_termID sub) . btPos
return $ dist btpos (_crPos $ you w) < 40
tickDisplayTerminal :: SubInventory -> SubInventory
tickDisplayTerminal dt = case dt of
DisplayTerminal{} -> dt & termParams . termDisplayedLines .++~ maybeToList ml
& termParams . termFutureLines .~ newtfl
where
tfl = _termFutureLines $ _termParams dt
(ml,newtfl) = tickFutureLines tfl
tickFutureLines ((0,sc):xs) = (Just sc,xs)
tickFutureLines ((i,sc):xs) = (Nothing,(i-1,sc):xs)
tickFutureLines [] = (Nothing,[])
_ -> dt
checkTermDist :: World -> World
checkTermDist w = case w ^? hud . hudElement . subInventory . termID of
Just btid -> fromMaybe (w & hud . hudElement .~ DisplayInventory NoSubInventory) $ do
btpos <- w ^? buttons . ix btid . btPos
if dist btpos (_crPos $ you w) < 40 then Just w else Nothing
Nothing -> w
updateTerminalLine :: World -> World
updateTerminalLine w = case w ^? hud . hudElement . subInventory . termParams . termFutureLines . ix 0 of
Nothing -> w
Just tl | _tlPause tl > 0 -> w
& hud . hudElement . subInventory . termParams . termFutureLines . ix 0 . tlPause -~ 1
Just (TerminalLineDisplay _ s c) -> w
& hud . hudElement . subInventory . termParams . termFutureLines %~ tail
& hud . hudElement . subInventory . termParams . termDisplayedLines .:~ (s,c)
Just (TerminalLineEffect _ eff) -> w
& hud . hudElement . subInventory . termParams . termFutureLines %~ tail
& eff (_subInventory . _hudElement $ _hud w)
-- this looks ugly...
updateCloseObjects :: World -> World