From 52d0008441ff112bf58eb85b3f89a1427e9f073c Mon Sep 17 00:00:00 2001 From: justin Date: Mon, 9 Sep 2024 23:13:00 +0100 Subject: [PATCH] Add files, move towards joining items in inventory --- ghcidOutput | 98 +++++--------------------- src/Dodge/Combine.hs | 80 +++++++++++---------- src/Dodge/Combine/Combinations.hs | 2 +- src/Dodge/Data/ComposedItem.hs | 19 +++++ src/Dodge/Data/DoubleTree.hs | 17 +++++ src/Dodge/Default/Weapon.hs | 71 ------------------- src/Dodge/Item/Amount.hs | 8 --- src/Dodge/Item/Grammar.hs | 52 ++++++++++++++ src/Dodge/Item/SlotsTaken.hs | 2 +- src/Dodge/Projectile/Update.hs | 1 - src/Dodge/Render/HUD.hs | 38 +++++----- tags | 112 ++++++++++++++++-------------- 12 files changed, 230 insertions(+), 270 deletions(-) create mode 100644 src/Dodge/Data/ComposedItem.hs create mode 100644 src/Dodge/Data/DoubleTree.hs delete mode 100644 src/Dodge/Default/Weapon.hs delete mode 100644 src/Dodge/Item/Amount.hs create mode 100644 src/Dodge/Item/Grammar.hs diff --git a/ghcidOutput b/ghcidOutput index e7010e19d..2c1bd9dca 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1,95 +1,35 @@ -/home/justin/Haskell/loop/src/Dodge/Combine.hs:31:1-15: warning: [-Wunused-top-binds] - Defined but not used: ‘invertInventory’ - | -31 | invertInventory = - | ^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Combine.hs:43:1-14: warning: [-Wunused-top-binds] - Defined but not used: ‘splitItAmounts’ - | -43 | splitItAmounts = concatMap f - | ^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Combine.hs:53:1-18: warning: [-Wunused-top-binds] - Defined but not used: ‘flatSplitItAmounts’ - | -53 | flatSplitItAmounts = concatMap f - | ^^^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Combine.hs:58:1-11: warning: [-Wunused-top-binds] - Defined but not used: ‘lookupItems’ - | -58 | lookupItems = flip multiLookupTrieI combinationsTrie . sortOn fst . splitItAmounts . invertInventory - | ^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Combine/Combinations.hs:9:1-21: warning: [-Wunused-imports] - The import of ‘Data.Bifunctor’ is redundant - | -9 | import Data.Bifunctor - | ^^^^^^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Render/HUD.hs:237:15-18: warning: [-Wunused-matches] - Defined but not used: ‘cfig’ - | -237 | combineCounts cfig w = foldMap f . group - | ^^^^ -/home/justin/Haskell/loop/src/Dodge/Render/HUD.hs:237:20: warning: [-Wunused-matches] - Defined but not used: ‘w’ - | -237 | combineCounts cfig w = foldMap f . group - | ^ -/home/justin/Haskell/loop/src/Dodge/Item/Amount.hs:3:1-19: warning: [-Wunused-imports] - The import of ‘Control.Lens’ is redundant - | -3 | import Control.Lens - | ^^^^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Amount.hs:4:1-17: warning: [-Wunused-imports] - The import of ‘Data.Maybe’ is redundant - | -4 | import Data.Maybe - | ^^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Amount.hs:8:15-16: warning: [-Wunused-matches] - Defined but not used: ‘it’ - | -8 | itStackAmount it = 1 -- fromMaybe 1 $ it ^? itUse . useAmount - | ^^ -/home/justin/Haskell/loop/src/Dodge/Inventory/CheckSlots.hs:7:1-19: warning: [-Wunused-imports] - The import of ‘Control.Lens’ is redundant - | -7 | import Control.Lens - | ^^^^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Inventory/CheckSlots.hs:8:1-17: warning: [-Wunused-imports] - The import of ‘Data.Maybe’ is redundant - | -8 | import Data.Maybe - | ^^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Inventory/CheckSlots.hs:28:14-15: warning: [-Wunused-matches] - Defined but not used: ‘it’ - | -28 | findItemSlot it inv = maybe 0 ((+ 1) . fst) $ IM.lookupMax inv - | ^^ -/home/justin/Haskell/loop/src/Dodge/Item/SlotsTaken.hs:5:1-19: warning: [-Wunused-imports] - The import of ‘Control.Lens’ is redundant - | -5 | import Control.Lens - | ^^^^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:3:1-22: warning: [-Wunused-imports] - The import of ‘Dodge.Data.Item’ is redundant - | -3 | import Dodge.Data.Item - | ^^^^^^^^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Draw/SPic.hs:20:1-15: warning: [-Wunused-top-binds] +/home/justin/Haskell/loop/src/Dodge/Item/Draw/SPic.hs:20:1: warning: [-Wunused-top-binds] Defined but not used: ‘itemHeldAmmoPic’ | 20 | itemHeldAmmoPic itm amit = itemSPic itm <> addAmmoClip itm amit | ^^^^^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Draw/SPic.hs:23:1-11: warning: [-Wunused-top-binds] +/home/justin/Haskell/loop/src/Dodge/Item/Draw/SPic.hs:23:1: warning: [-Wunused-top-binds] Defined but not used: ‘addAmmoClip’ | 23 | addAmmoClip itm amit = fromMaybe mempty $ do | ^^^^^^^^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Draw/SPic.hs:23:17-20: warning: [-Wunused-matches] +/home/justin/Haskell/loop/src/Dodge/Item/Draw/SPic.hs:23:17: warning: [-Wunused-matches] Defined but not used: ‘amit’ | 23 | addAmmoClip itm amit = fromMaybe mempty $ do | ^^^^ -/home/justin/Haskell/loop/src/Dodge/Item/Draw/SPic.hs:24:5-7: warning: [-Wunused-matches] +/home/justin/Haskell/loop/src/Dodge/Item/Draw/SPic.hs:24:5: warning: [-Wunused-matches] Defined but not used: ‘hit’ | 24 | hit <- itm ^? itType . iyBase . ibtHeld | ^^^ +/home/justin/Haskell/loop/src/Dodge/Inventory/CheckSlots.hs:7:1: warning: [-Wunused-imports] + The import of ‘Control.Lens’ is redundant + | +7 | import Control.Lens + | ^^^^^^^^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/Inventory/CheckSlots.hs:8:1: warning: [-Wunused-imports] + The import of ‘Data.Maybe’ is redundant + | +8 | import Data.Maybe + | ^^^^^^^^^^^^^^^^^ +/home/justin/Haskell/loop/src/Dodge/Inventory/CheckSlots.hs:28:14: warning: [-Wunused-matches] + Defined but not used: ‘it’ + | +28 | findItemSlot it inv = maybe 0 ((+ 1) . fst) $ IM.lookupMax inv + | ^^ diff --git a/src/Dodge/Combine.hs b/src/Dodge/Combine.hs index c8b3515d0..16b4ccc16 100644 --- a/src/Dodge/Combine.hs +++ b/src/Dodge/Combine.hs @@ -4,64 +4,67 @@ module Dodge.Combine ( combineList', ) where -import Dodge.Item.SlotsTaken -import Dodge.Data.Universe -import Dodge.Data.Combine -import Dodge.Item.Display -import Dodge.Item.InventoryColor import Color --import Dodge.Data.SelectionList -import qualified Data.IntSet as IS + import Control.Lens import Control.Monad import Data.Bifunctor +import qualified Data.IntSet as IS import Data.List (sortOn) import Data.Map.Merge.Strict import qualified Data.Map.Strict as M import Data.Maybe import Dodge.Base.You import Dodge.Combine.Trie +import Dodge.Data.Combine +import Dodge.Data.Universe +import Dodge.Item.Display +import Dodge.Item.InventoryColor +import Dodge.Item.SlotsTaken --import Dodge.Data.World -import Dodge.Item.Amount +--import Dodge.Item.Amount import Dodge.Module import qualified IntMapHelp as IM import SimpleTrie -invertInventory :: IM.IntMap Item -> [(ItemBaseType, ItAmount, Int)] -invertInventory = - IM.foldrWithKey - (\k it -> ((_iyBase $ _itType it, itStackAmount it, k) :)) - [] +--invertInventory :: IM.IntMap Item -> [(ItemBaseType, ItAmount, Int)] +--invertInventory = +-- IM.foldrWithKey +-- (\k it -> ((_iyBase $ _itType it, itStackAmount it, k) :)) +-- [] invertInventoryToMap :: IM.IntMap Item -> M.Map ItemBaseType [Int] invertInventoryToMap = IM.foldrWithKey - (\k it -> (M.insertWith (++) (_iyBase $ _itType it) (replicate (fromIntegral $ itStackAmount it) k))) + (\k it -> (M.insertWith (++) (_iyBase $ _itType it) [k])) mempty -splitItAmounts :: [(ItemBaseType, ItAmount, Int)] -> [((ItAmount, ItemBaseType), (ItAmount, Int))] -splitItAmounts = concatMap f - where - f (x, n, y) = [((i, x), (i, y)) | i <- [1 .. n]] +--splitItAmounts :: [(ItemBaseType, ItAmount, Int)] -> [((ItAmount, ItemBaseType), (ItAmount, Int))] +--splitItAmounts = concatMap f +-- where +-- f (x, n, y) = [((i, x), (i, y)) | i <- [1 .. n]] groupSplitItemAmounts :: M.Map ItemBaseType [Int] -> [((ItAmount, ItemBaseType), [Int])] groupSplitItemAmounts = M.foldrWithKey f [] where - f ibt is = (++) [((fromIntegral i, ibt), take i is) | i <- [1..length is]] + f ibt is = (++) [((fromIntegral i, ibt), take i is) | i <- [1 .. length is]] -flatSplitItAmounts :: [(ItemBaseType, ItAmount, Int)] -> [((ItAmount, ItemBaseType), [Int])] -flatSplitItAmounts = concatMap f - where - f (x, n, y) = [((i, x), replicate (fromIntegral i) y) | i <- [1 .. n]] +--flatSplitItAmounts :: [(ItemBaseType, ItAmount, Int)] -> [((ItAmount, ItemBaseType), [Int])] +--flatSplitItAmounts = concatMap f +-- where +-- f (x, n, y) = [((i, x), replicate (fromIntegral i) y) | i <- [1 .. n]] -lookupItems :: IM.IntMap Item -> [([(ItAmount, Int)], Item)] -lookupItems = flip multiLookupTrieI combinationsTrie . sortOn fst . splitItAmounts . invertInventory +--lookupItems :: IM.IntMap Item -> [([(ItAmount, Int)], Item)] +--lookupItems = flip multiLookupTrieI combinationsTrie . sortOn fst . splitItAmounts . invertInventory + +flatLookupItems :: IM.IntMap Item -> [([[Int]], Item)] +flatLookupItems = + flip multiLookupTrieI combinationsTrie . sortOn fst . groupSplitItemAmounts + . invertInventoryToMap -flatLookupItems :: IM.IntMap Item -> [([[Int]],Item)] -flatLookupItems = flip multiLookupTrieI combinationsTrie . sortOn fst . groupSplitItemAmounts - . invertInventoryToMap --flatLookupItems :: IM.IntMap Item -> [([[Int]],Item)] ---flatLookupItems = flip multiLookupTrieI combinationsTrie . sortOn fst . flatSplitItAmounts +--flatLookupItems = flip multiLookupTrieI combinationsTrie . sortOn fst . flatSplitItAmounts -- . invertInventory combineItemListYouX :: World -> [([Int], Item)] @@ -80,21 +83,22 @@ combineList w = case combineList' w of combineList' :: World -> [SelectionItem CombinableItem] combineList' = map f . combineListInfo where - f (is,(strs,itm)) = SelectionItem - { _siPictures = basicItemDisplay itm - , _siHeight = itSlotsTaken itm - , _siIsSelectable = True - , _siColor = itemInvColor itm - , _siOffX = 0 - , _siOffY = 0 - , _siPayload = CombinableItem is itm strs - } + f (is, (strs, itm)) = + SelectionItem + { _siPictures = basicItemDisplay itm + , _siHeight = itSlotsTaken itm + , _siIsSelectable = True + , _siColor = itemInvColor itm + , _siOffX = 0 + , _siOffY = 0 + , _siPayload = CombinableItem is itm strs + } combineListInfo :: World -> [([Int], ([String], Item))] combineListInfo w = filter f . map (cmm inv) $ combineItemListYouX w where inv = yourInv w - f (is,(_,itm)) = _itType itm `notElem` fmap _itType (IM.restrictKeys inv (IS.fromList is)) + f (is, (_, itm)) = _itType itm `notElem` fmap _itType (IM.restrictKeys inv (IS.fromList is)) cmm :: IM.IntMap Item -> ([Int], Item) -> ([Int], ([String], Item)) cmm inv (is, itm) = (is, itm & itType . iyModules %%~ flip combineModuleMaps mms) diff --git a/src/Dodge/Combine/Combinations.hs b/src/Dodge/Combine/Combinations.hs index 8e6510772..260b0ac50 100644 --- a/src/Dodge/Combine/Combinations.hs +++ b/src/Dodge/Combine/Combinations.hs @@ -6,7 +6,7 @@ module Dodge.Combine.Combinations , bulletWeapons ) where -import Data.Bifunctor +--import Data.Bifunctor import Dodge.Item.Ammo import Dodge.Data.Item import Dodge.Item diff --git a/src/Dodge/Data/ComposedItem.hs b/src/Dodge/Data/ComposedItem.hs new file mode 100644 index 000000000..346097ef4 --- /dev/null +++ b/src/Dodge/Data/ComposedItem.hs @@ -0,0 +1,19 @@ +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE StrictData #-} +{-# LANGUAGE TemplateHaskell #-} + +module Dodge.Data.ComposedItem + where +import Control.Lens +import Data.Aeson +import Data.Aeson.TH + + +data ComposedItem = WeaponCI + | BulletAmmoCI + | UncomposableCI + deriving (Eq,Ord,Show,Read) + +makeLenses ''ComposedItem +deriveJSON defaultOptions ''ComposedItem diff --git a/src/Dodge/Data/DoubleTree.hs b/src/Dodge/Data/DoubleTree.hs new file mode 100644 index 000000000..589366aa1 --- /dev/null +++ b/src/Dodge/Data/DoubleTree.hs @@ -0,0 +1,17 @@ +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE StrictData #-} +{-# LANGUAGE TemplateHaskell #-} +module Dodge.Data.DoubleTree + where + +import Control.Lens +import Data.Aeson +import Data.Aeson.TH + + +data DoubleTree a = DT {_dtValue :: a,_dtLeft :: [DoubleTree a],_dtRight :: [DoubleTree a]} + deriving (Eq,Ord,Show,Read) + +makeLenses ''DoubleTree +deriveJSON defaultOptions ''DoubleTree diff --git a/src/Dodge/Default/Weapon.hs b/src/Dodge/Default/Weapon.hs deleted file mode 100644 index 8a7522517..000000000 --- a/src/Dodge/Default/Weapon.hs +++ /dev/null @@ -1,71 +0,0 @@ -module Dodge.Default.Weapon where - ---import Control.Lens ---import qualified Data.Map.Strict as M ---import Dodge.Data.Hammer ---import Dodge.Data.Item ---import Dodge.Default.Item ---import Dodge.Item.Weapon.Bullet ---import Dodge.Reloading.Action ---import Picture - --- ---defaultLoadable :: HeldConsumption ---defaultLoadable = --- LoadableAmmo --- { _laAmmoType = GenericAmmo --- , _laMax = 15 --- , _laLoaded = 0 --- , _laPrimed = True --- , _laCycle = [loadEject 10, loadInsert 10, loadPrime 10] --- , _laProgress = Nothing --- } --- -----defaultBulletLoadable :: HeldConsumption -----defaultBulletLoadable = defaultLoadable & laAmmoType .~ basicBullet --- ---defaultChargeable :: LeftConsumption ---defaultChargeable = ChargeableAmmo 100 100 - - --- --- ---luseInstantNoH :: Luse -> ItemUse ---luseInstantNoH f = --- defaultlUse --- & lUse .~ f --- & useDelay .~ NoDelay - ----- TODO change this ---defaultLeftItem :: Item ---defaultLeftItem = --- defaultWeapon --- & itUse .~ defaultlUse - --- --- ---defaultItemValue :: ItemValue ---defaultItemValue = ItemValue 10 MundaneItem --- ---defaultCraftable :: Item ---defaultCraftable = --- defaultItem --- { _itInvColor = green --- } --- ---defBulletShooter :: ItemParams ---defBulletShooter = --- BulletShooter --- { _muzVel = 1 --- , _rifling = 0.8 --- , _bore = 2 --- , _gunBarrels = SingleBarrel 0 --- , _recoil = 0 --- , _torqueAfter = 0 --- , _randomOffset = 0 --- } --- -----defaultAutoGun :: Item -----defaultAutoGun = ----- defaultBulletWeapon ----- & itUse . useAim . aimStance .~ TwoHandTwist diff --git a/src/Dodge/Item/Amount.hs b/src/Dodge/Item/Amount.hs deleted file mode 100644 index 82fcd9775..000000000 --- a/src/Dodge/Item/Amount.hs +++ /dev/null @@ -1,8 +0,0 @@ -module Dodge.Item.Amount where - -import Control.Lens -import Data.Maybe -import Dodge.Data.Item - -itStackAmount :: Item -> ItAmount -itStackAmount it = 1 -- fromMaybe 1 $ it ^? itUse . useAmount diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs new file mode 100644 index 000000000..694dd781c --- /dev/null +++ b/src/Dodge/Item/Grammar.hs @@ -0,0 +1,52 @@ +module Dodge.Item.Grammar + where +import Data.Maybe +import ListHelp +import Dodge.Data.Item +import Dodge.Data.DoubleTree +import Dodge.Data.ComposedItem +import TreeHelp + +type PCI = (ComposedItem, [ComposedItem]) + +baseComposedItem :: ItemBaseType -> PCI +baseComposedItem ibt = case ibt of + HELD BURSTRIFLE -> (WeaponCI, [BulletAmmoCI]) + AMMOMAG TINMAG -> (BulletAmmoCI, []) + _ -> (UncomposableCI, []) + +joinItems :: DoubleTree PCI -> DoubleTree PCI -> Maybe (DoubleTree PCI) +joinItems t@(DT (px,cx) ls' rs') s@(DT (py,_) _ _) + | py `elem` cx = Just (DT (px, delete py cx) ls' (rs' ++ [s])) + | otherwise = checkdepth t s + where + checkdepth a a'@(DT b ls rs) = fromMaybe (checktop a a') $ do + c <- safeHead ls + d <- checkdepth a c + return $ Just $ DT b (d:ls) rs + checktop a@(DT (pa,_) _ _) (DT (pb,cb) ls rs) + | pa `elem` cb = Just (DT (pb, delete pa cb) (a:ls) rs) + | otherwise = Nothing + +joinItems' :: Tree PCI -> Tree PCI -> Maybe (Tree PCI) +joinItems' t@(Node (px,cx) xs) s@(Node (py,_) _) +-- | fst y `elem` cx = Just (Node (px, delete y cx) (xs ++ [s])) + | py `elem` cx = Just (Node (px, delete py cx) (xs ++ [s])) + | otherwise = checkdepth t s + where + checkdepth a a'@(Node b cs) = fromMaybe (checktop a a') $ do + c <- safeHead cs + d <- checkdepth a c + return $ Just $ Node b (d:cs) + checktop a@(Node (pa,_) _) (Node (pb,cb) bs) + | pa `elem` cb = Just (Node (pb, delete pa cb) (a:bs)) + | otherwise = Nothing + +joinItemsInList :: (a -> a -> Maybe a) -> [a] -> [a] +joinItemsInList f xs = snd $ h (xs,[]) + where + h ([],zs) = ([],zs) + h ((y:ys), []) = h (ys, [y]) + h ((y:ys),(z:zs)) = case f y z of + Nothing -> h (ys, (y:z:zs)) + Just w -> h ((w:ys),zs) diff --git a/src/Dodge/Item/SlotsTaken.hs b/src/Dodge/Item/SlotsTaken.hs index 344637293..89ce5be97 100644 --- a/src/Dodge/Item/SlotsTaken.hs +++ b/src/Dodge/Item/SlotsTaken.hs @@ -2,7 +2,7 @@ module Dodge.Item.SlotsTaken ( itSlotsTaken, ) where -import Control.Lens +--import Control.Lens import Dodge.Data.Item import Dodge.Module diff --git a/src/Dodge/Projectile/Update.hs b/src/Dodge/Projectile/Update.hs index 95bffa3da..8848be234 100644 --- a/src/Dodge/Projectile/Update.hs +++ b/src/Dodge/Projectile/Update.hs @@ -7,7 +7,6 @@ import qualified Data.Map.Strict as M import Data.Maybe import Dodge.Base import Dodge.Data.World -import Dodge.Default.Weapon import Dodge.EnergyBall import Dodge.Item.Location import Dodge.Item.Weapon.Launcher diff --git a/src/Dodge/Render/HUD.hs b/src/Dodge/Render/HUD.hs index db79a35f0..91809a697 100644 --- a/src/Dodge/Render/HUD.hs +++ b/src/Dodge/Render/HUD.hs @@ -33,7 +33,7 @@ import Dodge.Tweak.Show import Geometry import qualified IntMapHelp as IM import Justify -import ListHelp +--import ListHelp import Padding import Picture import SDL (MouseButton (..)) @@ -198,7 +198,7 @@ combineInventoryExtra sss cfig w = fromMaybe mempty $ do return $ lnkMidPosInvSelsCol cfig w j col lnks <> foldMap invcursor lnks - <> combineCounts cfig w lnks +-- <> combineCounts cfig w lnks ] where invcursor i = fromMaybe mempty $ do @@ -233,23 +233,23 @@ displayTerminal tid cfig w = fromMaybe mempty $ do | hasfoc = clockCycle 10 (V.fromList ["_", "."]) w | otherwise = [] -combineCounts :: Configuration -> World -> [Int] -> Picture -combineCounts cfig w = foldMap f . group - where --- f (i : is) = fromMaybe mempty $ do --- _ <- yourInv w ^? ix i . itUse . useAmount --- sss <- w ^? hud . hudElement . diSections --- --p <- selNumTextEndPos cfig (invDisplayParams w) sss 0 i --- col <- selSecSelCol 0 i sss --- yint <- selSecYint 0 i sss --- --return $ color col $ uncurryV translate p . scale 0.1 0.1 . text $ ('-' : show (length is + 1)) --- return --- . translateScreenPos cfig (invDisplayParams w ^. ldpPos) --- . color col --- . drawListElement 0 1 15 yint --- . text --- $ ('-' : show (length is + 1)) - f _ = mempty +--combineCounts :: Configuration -> World -> [Int] -> Picture +--combineCounts cfig w = foldMap f . group +-- where +---- f (i : is) = fromMaybe mempty $ do +---- _ <- yourInv w ^? ix i . itUse . useAmount +---- sss <- w ^? hud . hudElement . diSections +---- --p <- selNumTextEndPos cfig (invDisplayParams w) sss 0 i +---- col <- selSecSelCol 0 i sss +---- yint <- selSecYint 0 i sss +---- --return $ color col $ uncurryV translate p . scale 0.1 0.1 . text $ ('-' : show (length is + 1)) +---- return +---- . translateScreenPos cfig (invDisplayParams w ^. ldpPos) +---- . color col +---- . drawListElement 0 1 15 yint +---- . text +---- $ ('-' : show (length is + 1)) +-- f _ = mempty lnkMidPosInvSelsCol :: Configuration -> World -> Int -> Color -> [Int] -> Picture lnkMidPosInvSelsCol cfig w i col = foldMap f diff --git a/tags b/tags index 6e88014d8..9cf3b0d50 100644 --- a/tags +++ b/tags @@ -301,6 +301,7 @@ Bullet src/Dodge/Data/Bullet.hs 6;" m Bullet src/Dodge/Item/Weapon/Bullet.hs 1;" m BulletAmmo src/Dodge/Data/Ammo.hs 37;" C BulletAmmo src/Dodge/Data/Item/Use/Consumption/Ammo.hs 39;" C +BulletAmmoCI src/Dodge/Data/ComposedItem.hs 14;" C BulletBeltAttachment src/Dodge/Data/Item.hs 52;" C BulletClipAttachment src/Dodge/Data/Item.hs 51;" C BulletEffect src/Dodge/Data/Bullet.hs 36;" t @@ -448,6 +449,8 @@ CombineInventoryChange src/Dodge/Data/World.hs 33;" C Common src/Dodge/Zoning/Common.hs 1;" m Compile src/Shader/Compile.hs 1;" m Compose src/Dodge/Tree/Compose.hs 4;" m +ComposedItem src/Dodge/Data/ComposedItem.hs 13;" t +ComposedItem src/Dodge/Data/ComposedItem.hs 6;" m Composite src/Picture/Composite.hs 1;" m ComsSS src/Dodge/Data/Scenario.hs 98;" C ConcBall src/Dodge/Data/Bullet.hs 32;" C @@ -581,6 +584,7 @@ DRUM src/Dodge/Combine/Data.hs 34;" C DRUMMAG src/Dodge/Combine/Data.hs 199;" C DRUMMAG src/Dodge/Data/Item/Combine.hs 111;" C DS src/DoubleStack.hs 3;" t +DT src/Dodge/Data/DoubleTree.hs 13;" C DUALBEAM src/Dodge/Combine/Data.hs 171;" C DUALBEAM src/Dodge/Data/Item/Combine.hs 190;" C DUCTTAPE src/Dodge/Combine/Data.hs 31;" C @@ -719,6 +723,8 @@ DoorPart src/Dodge/Data/Wall.hs 50;" C DoorStatus src/Dodge/Data/Door.hs 23;" t DoubleRes src/Dodge/Data/Config.hs 95;" C DoubleStack src/DoubleStack.hs 1;" m +DoubleTree src/Dodge/Data/DoubleTree.hs 13;" t +DoubleTree src/Dodge/Data/DoubleTree.hs 5;" m DownscaleSize src/Dodge/DownscaleSize.hs 1;" m DrWdId src/Dodge/Data/WorldEffect.hs 65;" C DrWdMakeDoorDebris src/Dodge/Data/WorldEffect.hs 66;" C @@ -1831,6 +1837,7 @@ P2Ac src/Dodge/Data/CreatureEffect.hs 53;" t P2Imp src/Dodge/Data/CreatureEffect.hs 28;" t P2ImpNo src/Dodge/Data/CreatureEffect.hs 28;" C P2NoAction src/Dodge/Data/CreatureEffect.hs 53;" C +PCI src/Dodge/Item/Grammar.hs 10;" t PENBUL src/Dodge/Combine/Data.hs 204;" C PENMODULE src/Dodge/Combine/Data.hs 70;" C PIERCING src/Dodge/Data/Damage/Type.hs 12;" C @@ -2699,6 +2706,7 @@ TwoHandUnder src/Dodge/Data/Item/Use.hs 120;" C Type src/Dodge/Data/Damage/Type.hs 6;" m Typical src/Shape/Data.hs 36;" C UPtLayer src/Dodge/Picture/Layer/Data.hs 16;" C +UncomposableCI src/Dodge/Data/ComposedItem.hs 15;" C Uncursed src/Dodge/Data/Item/CurseStatus.hs 12;" C Uncursed src/Dodge/Item/Data.hs 8;" C UnderGround src/Dodge/Data/Scenario.hs 78;" C @@ -2860,6 +2868,7 @@ WdWdNegateTrig src/Dodge/Data/WorldEffect.hs 31;" C WdYouPos src/Dodge/Data/WorldEffect.hs 39;" C Weapon src/Dodge/Default/Weapon.hs 1;" m Weapon src/Dodge/Item/Weapon.hs 2;" m +WeaponCI src/Dodge/Data/ComposedItem.hs 13;" C Weapons src/Dodge/Item/Held/Weapons.hs 1;" m West src/Dodge/Data/CardinalPoint.hs 7;" C WinScale src/Dodge/Base/WinScale.hs 1;" m @@ -3286,6 +3295,8 @@ _drSpeed src/Dodge/Data/Door.hs 45;" f _drStatus src/Dodge/Data/Door.hs 37;" f _drTrigger src/Dodge/Data/Door.hs 38;" f _drWallIDs src/Dodge/Data/Door.hs 36;" f +_dtLeft src/Dodge/Data/DoubleTree.hs 13;" f +_dtRight src/Dodge/Data/DoubleTree.hs 13;" f _ebColor src/Dodge/Data/EnergyBall.hs 17;" f _ebEff src/Dodge/Data/EnergyBall.hs 21;" f _ebPos src/Dodge/Data/EnergyBall.hs 18;" f @@ -4155,8 +4166,6 @@ _unShadNum src/Picture/Data.hs 47;" f _unTO src/Shader/Data.hs 59;" f _unputTerminal src/Dodge/Data/GenWorld.hs 37;" f _useAheadPos src/Dodge/Data/ActionPlan.hs 161;" f -_useAmount src/Dodge/Data/Item/Use.hs 48;" f -_useAmount src/Dodge/Data/Item/Use.hs 55;" f _useMvTargetPos src/Dodge/Data/ActionPlan.hs 164;" f _useSelf src/Dodge/Data/ActionPlan.hs 158;" f _useTarget src/Dodge/Data/ActionPlan.hs 155;" f @@ -4491,6 +4500,7 @@ baseBlockPane src/Dodge/Placement/Instance/Wall.hs 86;" f baseBlockPane src/Dodge/Placements/Wall.hs 63;" f baseBlockPane src/Dodge/Room/Placement.hs 93;" f baseCaneShape src/Dodge/Item/Draw/SPic.hs 251;" f +baseComposedItem src/Dodge/Item/Grammar.hs 12;" f baseDebris src/Dodge/Block/Debris.hs 122;" f baseFloorTileSize src/Tile.hs 38;" f baseRifleShape src/Dodge/Item/Draw/SPic.hs 254;" f @@ -4616,7 +4626,7 @@ canSeeIndirect src/Dodge/Base/Collide.hs 235;" f caneStickSoundChoice src/Dodge/HeldUse.hs 483;" f cardList src/Dodge/Base/CardinalPoint.hs 6;" f cardVec src/Dodge/Base/CardinalPoint.hs 9;" f -cardinalVectors src/Dodge/FloorItem.hs 38;" f +cardinalVectors src/Dodge/FloorItem.hs 39;" f cartePosToScreen src/Dodge/Base/Coordinate.hs 37;" f cenLasTur src/Dodge/Room/LasTurret.hs 24;" f centerText src/Picture/Base.hs 184;" f @@ -4628,10 +4638,10 @@ chain src/Dodge/LightSources/Lamp.hs 119;" f chainCreatureUpdates src/Dodge/Creature/ChainUpdates.hs 6;" f chainPairs src/Geometry.hs 363;" f changeFuse src/Dodge/Item/Attachment.hs 25;" f -changeSwapClose src/Dodge/Inventory.hs 150;" f -changeSwapInv src/Dodge/Inventory.hs 166;" f -changeSwapSel src/Dodge/Inventory.hs 142;" f -changeSwapWith src/Dodge/Inventory.hs 201;" f +changeSwapClose src/Dodge/Inventory.hs 208;" f +changeSwapInv src/Dodge/Inventory.hs 224;" f +changeSwapSel src/Dodge/Inventory.hs 200;" f +changeSwapWith src/Dodge/Inventory.hs 259;" f changeTweakParam src/Dodge/Update/Scroll.hs 115;" f changeZonedWall src/Dodge/LevelGen/MoveDoor.hs 33;" f charFiringStratI src/Dodge/Item/Attachment.hs 15;" f @@ -4714,7 +4724,7 @@ clsNearRect src/Dodge/Zoning/Cloud.hs 15;" f clsNearSeg src/Dodge/Zoning/Cloud.hs 12;" f clusterFormatting src/Dodge/Combine/Graph.hs 113;" f clusterFunc src/Dodge/Combine/Graph.hs 107;" f -cmm src/Dodge/Combine.hs 91;" f +cmm src/Dodge/Combine.hs 103;" f cogRaised src/Dodge/Creature/Perception.hs 101;" f colCrWall src/Dodge/WallCreatureCollisions.hs 26;" f colCrsWalls src/Dodge/WallCreatureCollisions.hs 17;" f @@ -4742,18 +4752,17 @@ combineAwareness src/Dodge/Creature/AlertLevel.hs 33;" f combineAwareness src/Dodge/Creature/Perception.hs 109;" f combineBeamBeams src/Dodge/Update.hs 475;" f combineBeams src/Dodge/Update.hs 466;" f -combineCounts src/Dodge/Render/HUD.hs 236;" f combineFloors src/Dodge/Room/Procedural.hs 171;" f combineInventoryExtra src/Dodge/Render/HUD.hs 181;" f -combineItemListYouX src/Dodge/Combine.hs 59;" f -combineList src/Dodge/Combine.hs 67;" f -combineList' src/Dodge/Combine.hs 72;" f -combineListInfo src/Dodge/Combine.hs 85;" f -combineModuleMaps src/Dodge/Combine.hs 96;" f +combineItemListYouX src/Dodge/Combine.hs 70;" f +combineList src/Dodge/Combine.hs 78;" f +combineList' src/Dodge/Combine.hs 83;" f +combineListInfo src/Dodge/Combine.hs 97;" f +combineModuleMaps src/Dodge/Combine.hs 108;" f combineRooms src/Dodge/Room/Procedural.hs 151;" f combineS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 344;" f combineTree src/Dodge/Tree/Compose.hs 66;" f -combineTwoModuleMaps src/Dodge/Combine.hs 102;" f +combineTwoModuleMaps src/Dodge/Combine.hs 114;" f commandColor src/Dodge/Terminal.hs 130;" f commandFutureLines src/Dodge/Terminal.hs 252;" f commandsCommand src/Dodge/Terminal.hs 91;" f @@ -4809,7 +4818,7 @@ crHit src/Dodge/WorldEvent/ThingsHit.hs 68;" f crIXsNearCirc src/Dodge/Zoning/Creature.hs 30;" f crIXsNearPoint src/Dodge/Zoning/Creature.hs 13;" f crInAimStance src/Dodge/Creature/Test.hs 88;" f -crInvSize src/Dodge/Inventory/CheckSlots.hs 38;" f +crInvSize src/Dodge/Inventory/CheckSlots.hs 39;" f crIsAiming src/Dodge/Creature/Test.hs 56;" f crIsArmouredFrom src/Dodge/Creature/Property.hs 16;" f crIsArmouredFrom src/Dodge/Creature/Test.hs 109;" f @@ -4822,7 +4831,7 @@ crMvForward src/Dodge/Creature/Impulse/Movement.hs 38;" f crNearPoint src/Dodge/Creature/Property.hs 39;" f crNearPoint src/Dodge/Creature/Test.hs 135;" f crNearSeg src/Dodge/Creature/Property.hs 36;" f -crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 35;" f +crNumFreeSlots src/Dodge/Inventory/CheckSlots.hs 36;" f crOnWall src/Dodge/WallCreatureCollisions.hs 84;" f crReloadToggle src/Dodge/Reloading.hs 45;" f crSafeDistFromTarg src/Dodge/Creature/Test.hs 67;" f @@ -4835,7 +4844,7 @@ crZoneOfPoint src/Dodge/Base/Zone.hs 54;" f crZoneSize src/Dodge/Zoning/Creature.hs 39;" f craftInfo src/Dodge/Item/Info.hs 155;" f crankSlowS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 420;" f -createAndSelectItem src/Dodge/Inventory/Add.hs 43;" f +createAndSelectItem src/Dodge/Inventory/Add.hs 44;" f createArc src/Dodge/Tesla/Arc.hs 67;" f createAttachLight src/Dodge/Creature/State.hs 252;" f createBarrelSpark src/Dodge/Particle/Spark.hs 21;" f @@ -4849,7 +4858,7 @@ createLightMap src/Render.hs 26;" f createNewArc src/Dodge/Tesla/Arc.hs 76;" f createPathGrid src/Dodge/Room/Path.hs 21;" f createProjectile src/Dodge/Projectile/Create.hs 12;" f -createPutItem src/Dodge/Inventory/Add.hs 52;" f +createPutItem src/Dodge/Inventory/Add.hs 53;" f createShieldWall src/Dodge/Euse.hs 134;" f createTorchLightOffset src/Dodge/LightSource/Torch.hs 9;" f createUnusedLinkPos src/Dodge/Tree/Shift.hs 117;" f @@ -5198,7 +5207,7 @@ doTerminalEffectLB src/Dodge/Terminal/LeftButton.hs 12;" f doTestDrawing src/Dodge/Render.hs 42;" f doTextInputOver src/Dodge/Update/Input/Text.hs 12;" f doTextInputOver' src/Dodge/Update/Input/Text.hs 15;" f -doThrust src/Dodge/Projectile/Update.hs 102;" f +doThrust src/Dodge/Projectile/Update.hs 101;" f doTimeScroll src/Dodge/Update.hs 185;" f doTmTm src/Dodge/TmTm.hs 6;" f doTmWdWd src/Dodge/WorldEffect.hs 103;" f @@ -5437,7 +5446,7 @@ findIndex src/IntMapHelp.hs 84;" f findItemSlot src/Dodge/Inventory/CheckSlots.hs 27;" f findReverseEdge src/Polyhedra.hs 49;" f findReverseEdgeList src/Polyhedra.hs 56;" f -findWallFreeDropPoint src/Dodge/FloorItem.hs 46;" f +findWallFreeDropPoint src/Dodge/FloorItem.hs 47;" f findWallsInPolygon src/Dodge/LevelGen/StaticWalls/Deprecated.hs 78;" f fireLoudS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 504;" f fireRemoteShell src/Dodge/HeldUse.hs 457;" f @@ -5465,10 +5474,9 @@ flamerPic src/Dodge/Item/Draw/SPic.hs 416;" f flareCircleAt src/Dodge/WorldEvent/Flash.hs 46;" f flatCombinationsTrie src/Dodge/Combine/Trie.hs 10;" f flatItemCombinations src/Dodge/Combine/Combinations.hs 49;" f -flatLookupItems src/Dodge/Combine.hs 55;" f +flatLookupItems src/Dodge/Combine.hs 61;" f flatShield src/Dodge/Item/Held/Utility.hs 9;" f flatShieldEquipSPic src/Dodge/Item/Draw/SPic.hs 489;" f -flatSplitItAmounts src/Dodge/Combine.hs 47;" f flatV2 src/Picture/Data.hs 65;" f flatV3 src/Picture/Data.hs 68;" f flatV4 src/Picture/Data.hs 71;" f @@ -5530,7 +5538,7 @@ fromV3 src/Geometry/Data.hs 43;" f frontArmour src/Dodge/Item/Equipment.hs 43;" f fstV2 src/Geometry/Data.hs 50;" f fuelPack src/Dodge/Item/Equipment.hs 66;" f -fullModuleName src/Dodge/Combine.hs 121;" f +fullModuleName src/Dodge/Combine.hs 133;" f functionalUpdate src/Dodge/Update.hs 230;" f fuseFunc src/Dodge/Path.hs 150;" f fusePairs src/Dodge/Path.hs 153;" f @@ -5621,6 +5629,7 @@ gridPoints src/Grid.hs 67;" f gridPoints' src/Grid.hs 79;" f gridPoints'' src/Grid.hs 74;" f gridPointsOff src/Grid.hs 62;" f +groupSplitItemAmounts src/Dodge/Combine.hs 48;" f gruntS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 484;" f guardDisconnectedID src/Dodge/Update/Scroll.hs 67;" f gut1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 516;" f @@ -5787,13 +5796,12 @@ invHead src/Dodge/Render/HUD.hs 276;" f invSelectionItem src/Dodge/Inventory/SelectionList.hs 16;" f invShiftPointBy src/Dodge/ShiftPoint.hs 8;" f invSideEff src/Dodge/Creature/State.hs 232;" f -invSize src/Dodge/Inventory/CheckSlots.hs 41;" f +invSize src/Dodge/Inventory/CheckSlots.hs 42;" f inventoryX src/Dodge/Creature.hs 115;" f inverseShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 43;" f invertEncircleDistP src/Dodge/Creature/Boid.hs 13;" f invertIntMap src/Multiset.hs 61;" f -invertInventory src/Dodge/Combine.hs 30;" f -invertInventoryToMap src/Dodge/Combine.hs 36;" f +invertInventoryToMap src/Dodge/Combine.hs 37;" f invisibleChaseCrit src/Dodge/Creature/ChaseCrit.hs 25;" f invisibleWall src/Dodge/Placement/Instance/Wall.hs 16;" f isAnimate src/Dodge/Creature/Test.hs 138;" f @@ -5868,6 +5876,8 @@ jShape src/Dodge/Placement/Instance/LightSource.hs 86;" f jShape src/Dodge/Placements/LightSource.hs 43;" f jaggedShape src/Dodge/Block/Debris.hs 191;" f jetPack src/Dodge/Item/Equipment.hs 92;" f +joinItems src/Dodge/Item/Grammar.hs 18;" f +joinItemsInList src/Dodge/Item/Grammar.hs 32;" f jps0' src/Dodge/LevelGen/Data.hs 60;" f jps0' src/Dodge/LevelGen/PlacementHelper.hs 60;" f jps0PushPS src/Dodge/LevelGen/Data.hs 63;" f @@ -5998,7 +6008,6 @@ longRoomRunPast src/Dodge/Room/LongRoom.hs 47;" f longestCommonPrefix src/Dodge/Debug/Terminal.hs 138;" f lookLookup src/Dodge/Base/Zone.hs 203;" f lookLookups src/Dodge/Base/Zone.hs 208;" f -lookupItems src/Dodge/Combine.hs 52;" f lookupTrie src/SimpleTrie.hs 24;" f loopPairs src/ListHelp.hs 28;" f lootRoom src/Dodge/Room/Treasure.hs 58;" f @@ -6110,11 +6119,11 @@ maybeDestroyBlock src/Dodge/Wall/Damage.hs 26;" f maybeDestroyDoor src/Dodge/Wall/Damage.hs 31;" f maybeExitCombine src/Dodge/Update/Input/InGame.hs 258;" f maybeOpenTerminal src/Dodge/Update.hs 113;" f -maybeRateStatus src/Dodge/Item/Display.hs 196;" f +maybeRateStatus src/Dodge/Item/Display.hs 198;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f maybeTakeOne src/Dodge/RandomHelp.hs 96;" f maybeTakeOne src/RandomHelp.hs 107;" f -maybeWarmupStatus src/Dodge/Item/Display.hs 186;" f +maybeWarmupStatus src/Dodge/Item/Display.hs 188;" f mcApplyDamage src/Dodge/Machine/Update.hs 90;" f mcKillBut src/Dodge/Machine/Destroy.hs 34;" f mcKillTerm src/Dodge/Machine/Destroy.hs 26;" f @@ -6440,7 +6449,7 @@ pistol src/Dodge/Item/Held/Stick.hs 38;" f pistol src/Dodge/Item/Weapon/BulletGun/Stick.hs 59;" f pistolCrit src/Dodge/Creature/PistolCrit.hs 13;" f pistolerRoom src/Dodge/Room/Room.hs 323;" f -pjTrack src/Dodge/Projectile/Update.hs 140;" f +pjTrack src/Dodge/Projectile/Update.hs 139;" f plBlock src/Dodge/Placement/PlaceSpot/Block.hs 18;" f plDoor src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 22;" f plLineBlock src/Dodge/Placement/PlaceSpot/Block.hs 50;" f @@ -6469,7 +6478,7 @@ placeSpotUsingLink src/Dodge/Placement/PlaceSpot.hs 59;" f placeString src/Dodge/Render/MenuScreen.hs 54;" f placeWallPoly src/Dodge/Placement/PlaceSpot.hs 154;" f plainRegex src/Dodge/DisplayInventory.hs 151;" f -plainShellCollisionCheck src/Dodge/Projectile/Update.hs 46;" f +plainShellCollisionCheck src/Dodge/Projectile/Update.hs 45;" f plateCraft src/Dodge/Item/Craftable.hs 47;" f playIfFree src/Sound.hs 136;" f playPositionalSoundQueue src/Sound.hs 144;" f @@ -6741,7 +6750,7 @@ rectXH src/Geometry/Polygon.hs 36;" f rectXY src/Geometry/Polygon.hs 39;" f rectanglePairs src/Dodge/LevelGen/DoorPane.hs 7;" f red src/Color.hs 14;" f -reduceSpinBy src/Dodge/Projectile/Update.hs 154;" f +reduceSpinBy src/Dodge/Projectile/Update.hs 153;" f reflDirWall src/Dodge/Base/Wall.hs 16;" f reflDirWall src/Dodge/Wall/Reflect.hs 6;" f reflVelWall src/Dodge/Base/Wall.hs 24;" f @@ -6766,7 +6775,7 @@ reloadSound src/Dodge/SoundLogic/Synonyms.hs 4;" f rememberSounds src/Dodge/Creature/Perception.hs 177;" f remoteBombUnarmedPic src/Dodge/Item/Weapon/Grenade.hs 268;" f remoteLauncher src/Dodge/Item/Held/Launcher.hs 50;" f -remoteShellCollisionCheck src/Dodge/Projectile/Update.hs 43;" f +remoteShellCollisionCheck src/Dodge/Projectile/Update.hs 42;" f remoteShellShape src/Dodge/Projectile/Draw.hs 39;" f removeEither src/Dodge/Layout/Tree/Either.hs 41;" f removeHotkey src/Dodge/Hotkey.hs 41;" f @@ -6802,7 +6811,7 @@ restrictLinkType src/Dodge/RoomLink.hs 32;" f restrictOutLinks src/Dodge/RoomLink.hs 45;" f restrictRMInLinksPD src/Dodge/Room/Link.hs 25;" f resumeSound src/Dodge/SoundLogic.hs 45;" f -retireRemoteProj src/Dodge/Projectile/Update.hs 81;" f +retireRemoteProj src/Dodge/Projectile/Update.hs 80;" f retreatActionsPistol src/Dodge/Humanoid.hs 248;" f retreatFireLauncher src/Dodge/Humanoid.hs 269;" f retreatPointForFrom src/Dodge/Creature/Action/Flee.hs 7;" f @@ -6833,7 +6842,7 @@ rmInLinks src/Dodge/RoomLink.hs 138;" f rmInvItem src/Dodge/Inventory.hs 38;" f rmLinksOfType src/Dodge/RoomLink.hs 135;" f rmOutLinks src/Dodge/RoomLink.hs 138;" f -rmSelectedInvItem src/Dodge/Inventory.hs 102;" f +rmSelectedInvItem src/Dodge/Inventory.hs 160;" f roomC src/Dodge/Room/Room.hs 39;" f roomCCrits src/Dodge/Room/Room.hs 262;" f roomCenterPillar src/Dodge/Room/Room.hs 121;" f @@ -6931,7 +6940,7 @@ screenPolygon src/Dodge/Base/Window.hs 17;" f screenPolygonBord src/Dodge/Base/Window.hs 27;" f screenPosAbs src/Dodge/ScreenPos.hs 15;" f screenToWorldPos src/Dodge/Base/Coordinate.hs 53;" f -scrollAugInvSel src/Dodge/Inventory.hs 207;" f +scrollAugInvSel src/Dodge/Inventory.hs 265;" f scrollCommandStrings src/Dodge/Update/Scroll.hs 130;" f scrollCommands src/Dodge/Update/Scroll.hs 127;" f scrollDebugInfoInt src/Dodge/Debug.hs 46;" f @@ -6959,7 +6968,7 @@ selSecSelCol src/Dodge/Render/HUD.hs 358;" f selSecSelSize src/Dodge/SelectionSections.hs 124;" f selSecYint src/Dodge/SelectionSections.hs 127;" f selectCreatureDebugItem src/Dodge/Debug.hs 38;" f -selectedCloseObject src/Dodge/Inventory.hs 231;" f +selectedCloseObject src/Dodge/Inventory.hs 289;" f sensAboveDoor src/Dodge/Room/SensorDoor.hs 63;" f sensInsideDoor src/Dodge/Room/SensorDoor.hs 69;" f senseDamage src/Dodge/Machine/Update.hs 134;" f @@ -6989,7 +6998,7 @@ setHotkey src/Dodge/Hotkey.hs 38;" f setInLinks src/Dodge/RoomLink.hs 51;" f setInLinksByType src/Dodge/RoomLink.hs 54;" f setInLinksPD src/Dodge/RoomLink.hs 74;" f -setInvPosFromSS src/Dodge/Inventory.hs 215;" f +setInvPosFromSS src/Dodge/Inventory.hs 273;" f setItemCharge src/Dodge/ItEffect.hs 36;" f setLayer src/Picture/Base.hs 139;" f setLinkType src/Dodge/RoomLink.hs 60;" f @@ -7003,7 +7012,7 @@ setOutLinks src/Dodge/RoomLink.hs 48;" f setOutLinksByType src/Dodge/RoomLink.hs 57;" f setOutLinksPD src/Dodge/RoomLink.hs 77;" f setPS src/Dodge/Placements/Spot.hs 9;" f -setRemoteDir src/Dodge/Projectile/Update.hs 90;" f +setRemoteDir src/Dodge/Projectile/Update.hs 89;" f setRemoteScope src/Dodge/Item/Weapon/Remote.hs 9;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 121;" f setShaderSource src/Shader/Compile.hs 336;" f @@ -7049,7 +7058,7 @@ shardShape src/Dodge/Block/Debris.hs 181;" f shatterGun src/Dodge/Item/Held/Weapons.hs 7;" f shatterGunSPic src/Dodge/Item/Draw/SPic.hs 240;" f shatterWall src/Dodge/Item/Weapon/Shatter.hs 26;" f -shellCollisionCheck src/Dodge/Projectile/Update.hs 31;" f +shellCollisionCheck src/Dodge/Projectile/Update.hs 30;" f shellMag src/Dodge/Item/Ammo.hs 43;" f shellShape src/Dodge/Projectile/Draw.hs 24;" f shellTrailCloud src/Dodge/WorldEvent/Cloud.hs 65;" f @@ -7117,12 +7126,12 @@ shoulderSP src/Dodge/Creature/HandPos.hs 196;" f showAttachItem src/Dodge/Item/Display.hs 87;" f showAutoRechargeProgress src/Dodge/Item/Display.hs 97;" f showEquipItem src/Dodge/Item/Display.hs 92;" f -showEquipmentNumber src/Dodge/Item/Display.hs 132;" f +showEquipmentNumber src/Dodge/Item/Display.hs 134;" f showInt src/Dodge/Item/Info.hs 30;" f showIntKMG src/Dodge/Item/Info.hs 47;" f showIntKMG' src/Dodge/Item/Info.hs 54;" f showIntsString src/Dodge/Tree/Compose.hs 129;" f -showLoadedAmount src/Dodge/Item/Display.hs 155;" f +showLoadedAmount src/Dodge/Item/Display.hs 157;" f showPhaseV src/Dodge/Tweak/Show.hs 16;" f showTerminalError src/Dodge/Debug/Terminal.hs 75;" f showTimeFlow src/Dodge/TestString.hs 59;" f @@ -7226,7 +7235,6 @@ splinterBlock src/Dodge/Block.hs 25;" f splitBeamCombine src/Dodge/Beam.hs 38;" f splitBezierquad src/Geometry/Bezier.hs 15;" f splitExtra src/Justify.hs 21;" f -splitItAmounts src/Dodge/Combine.hs 42;" f splitTrunk src/Dodge/Layout/Tree/Polymorphic.hs 142;" f splitTrunk src/Dodge/Tree/Polymorphic.hs 149;" f splitTrunk src/TreeHelp.hs 178;" f @@ -7263,7 +7271,7 @@ ssfold src/FoldableHelp.hs 104;" f stackPicturesAt src/Dodge/Render/List.hs 81;" f stackPicturesAtOff src/Dodge/Render/List.hs 84;" f stackText src/Picture/Base.hs 188;" f -stackedInventory src/Dodge/Creature.hs 263;" f +stackedInventory src/Dodge/Creature.hs 268;" f startCr src/Dodge/Creature.hs 91;" f startCrafts src/Dodge/Room/Start.hs 102;" f startInvList src/Dodge/Creature.hs 109;" f @@ -7377,7 +7385,7 @@ teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f testCrossWalls src/Dodge/Room/Path.hs 47;" f testEvent src/Dodge/Event/Test.hs 10;" f testEventKey src/Dodge/Config/KeyConfig.hs 27;" f -testInventory src/Dodge/Creature.hs 240;" f +testInventory src/Dodge/Creature.hs 244;" f testPic src/Dodge/Render/ShapePicture.hs 153;" f testStringInit src/Dodge/TestString.hs 21;" f text src/Picture/Base.hs 192;" f @@ -7542,10 +7550,10 @@ tryGetChannel src/Sound.hs 96;" f tryMeleeAttack src/Dodge/Creature/ReaderUpdate.hs 36;" f tryNextLoadAction src/Dodge/Reloading.hs 36;" f tryPlay src/Sound.hs 83;" f -tryPutItemInInv src/Dodge/Inventory/Add.hs 27;" f +tryPutItemInInv src/Dodge/Inventory/Add.hs 28;" f trySeedFromClipboard src/Dodge/Menu.hs 88;" f trySiphonFuel src/Dodge/Euse.hs 46;" f -trySpinByCID src/Dodge/Projectile/Update.hs 123;" f +trySpinByCID src/Dodge/Projectile/Update.hs 122;" f tryStartLoadMagazine src/Dodge/Reloading.hs 57;" f tryStartLoading src/Dodge/Reloading.hs 50;" f tryUseItem src/Dodge/Creature/Action/UseItem.hs 20;" f @@ -7588,7 +7596,7 @@ unusedSpotAwayFromLink src/Dodge/PlacementSpot.hs 122;" f unusedSpotNearInLink src/Dodge/PlacementSpot.hs 191;" f upCT src/Dodge/Targeting.hs 34;" f upHammer src/Dodge/Default.hs 77;" f -upProjectile src/Dodge/Projectile/Update.hs 55;" f +upProjectile src/Dodge/Projectile/Update.hs 54;" f updateAllNodes src/TreeHelp.hs 85;" f updateArc src/Dodge/Tesla/Arc.hs 86;" f updateAutoRecharge src/Dodge/Creature/State.hs 266;" f @@ -7601,7 +7609,7 @@ updateBulVel src/Dodge/Bullet.hs 48;" f updateBullet src/Dodge/Bullet.hs 26;" f updateBullets src/Dodge/Update.hs 425;" f updateCamera src/Dodge/Update/Camera.hs 32;" f -updateCloseObjects src/Dodge/Inventory.hs 108;" f +updateCloseObjects src/Dodge/Inventory.hs 166;" f updateCloud src/Dodge/Update.hs 605;" f updateClouds src/Dodge/Update.hs 454;" f updateCombinePositioning src/Dodge/DisplayInventory.hs 35;" f @@ -7659,7 +7667,7 @@ updatePreload src/Dodge/PreloadData.hs 12;" f updatePreload src/Preload/Update.hs 20;" f updatePressedButtonsCarte src/Dodge/Update/Input/InGame.hs 65;" f updatePressedButtonsCarte' src/Dodge/Update/Input/InGame.hs 68;" f -updateProjectile src/Dodge/Projectile/Update.hs 27;" f +updateProjectile src/Dodge/Projectile/Update.hs 26;" f updateProp src/Dodge/Prop/Update.hs 11;" f updateRBList src/Dodge/Inventory/RBList.hs 16;" f updateRadarBlip src/Dodge/RadarBlip.hs 8;" f @@ -7723,7 +7731,7 @@ upperPrismPolyST src/Shape.hs 106;" f upperPrismPolySU src/Shape.hs 112;" f upperPrismPolyTS src/Shape.hs 118;" f upperRounded src/Shape.hs 181;" f -upsProjectile src/Dodge/Projectile/Update.hs 52;" f +upsProjectile src/Dodge/Projectile/Update.hs 51;" f useAllAmmo src/Dodge/Item/Weapon/TriggerType.hs 341;" f useAmmoAmount src/Dodge/Item/Weapon/TriggerType.hs 358;" f useAmmoParams src/Dodge/Item/Weapon/AmmoParams.hs 17;" f