Add sounds when connecting/disconnecting items

This commit is contained in:
2024-11-05 19:14:09 +00:00
parent 9b3518e4eb
commit ecbd51135b
4 changed files with 18 additions and 12 deletions
+1 -1
View File
@@ -1 +1 @@
All good (594 modules, at 18:20:01)
All good (594 modules, at 19:11:58)
+1
View File
@@ -11,6 +11,7 @@ import Dodge.Data.Material
data SoundOrigin
= InventorySound
| InventoryConnectSound
| BackgroundSound
| OnceSound
| CrSound Int
+8 -6
View File
@@ -189,7 +189,8 @@ swapInvItems f i w = fromMaybe w $ do
Just (0, j) | j == i -> hud . hudElement . diSelection . _Just . _2 .~ k
_ -> id
return $
w & checkdisconnect k
w
& checkconnect k InventorySound disconnectItemS
& cWorld . lWorld . creatures . ix 0 %~ updatecreature k
& updateselection
& worldEventFlags . at InventoryChange ?~ ()
@@ -197,14 +198,15 @@ swapInvItems f i w = fromMaybe w $ do
& setInvPosFromSS
& cWorld . lWorld %~ crUpdateItemLocations 0 -- the double application is inefficient, but necessary without further changes
-- a rethink is maybe in order
& checkconnect k InventoryConnectSound connectItemS
where
cpos = fromMaybe 0 $ w ^? cWorld . lWorld . creatures . ix 0 . crPos
checkdisconnect k
| a || b = soundStart InventorySound cpos disconnectItemS Nothing
| otherwise = id
checkconnect k stype s w'
| p (i+1) || p (i-1)
|| p (k+1) || p (k-1) = soundStart stype cpos s Nothing w'
| otherwise = w'
where
a = maybe False not $ w ^? cWorld . lWorld . creatures . ix 0 . crInv . ix i . itLocation . ilIsRoot
b = maybe False not $ w ^? cWorld . lWorld . creatures . ix 0 . crInv . ix k . itLocation . ilIsRoot
p j = maybe False not $ w' ^? cWorld . lWorld . creatures . ix 0 . crInv . ix j . itLocation . ilIsRoot
updatecreature k =
(crInv %~ IM.safeSwapKeys i k)
. (crManipulation . manObject . imSelectedItem .~ k)
+8 -5
View File
@@ -6,6 +6,7 @@ module Dodge.Inventory.Location (
import Control.Applicative
import Control.Lens
import Data.IntMap.Merge.Strict
import qualified Data.IntSet as IS
import Data.Maybe
import Dodge.Base.You
@@ -13,7 +14,6 @@ import Dodge.Data.Item.Use.Consumption.LoadAction
import Dodge.Data.World
import Dodge.Item.Grammar
import qualified IntMapHelp as IM
import Data.IntMap.Merge.Strict
import NewInt
-- assumes all item locations inside the items are correct
@@ -48,10 +48,13 @@ crUpdateItemLocations crid lw = fromMaybe lw $ do
crSetRoots :: Int -> LWorld -> LWorld
crSetRoots cid w = fromMaybe w $ do
inv <- w ^? creatures . ix cid . crInv
-- invRootTrees inv
return $ w & creatures . ix cid . crInv %~ merge dropMissing preserveMissing
(zipWithMatched f)
(invRootTrees inv)
return $
w & creatures . ix cid . crInv
%~ merge
dropMissing
preserveMissing
(zipWithMatched f)
(invRootTrees inv)
where
f _ _ = itLocation . ilIsRoot .~ True