Cleanup combining code, flatten modules

This commit is contained in:
2024-10-01 10:01:21 +01:00
parent f69d150e00
commit 87cbaf911f
17 changed files with 143 additions and 173 deletions
+12 -1
View File
@@ -3,17 +3,19 @@ module Dodge.Combine (
combineList,
) where
import Dodge.Combine.Combinations
import Data.Bifunctor
import Data.List (sortOn)
import qualified Data.Map.Strict as M
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 qualified IntMapHelp as IM
import SimpleTrie
import Data.Foldable
import Data.List (sort)
invertInventoryToMap :: IM.IntMap Item -> M.Map ItemType [Int]
invertInventoryToMap =
@@ -22,6 +24,7 @@ invertInventoryToMap =
mempty
groupSplitItemAmounts :: M.Map ItemType [Int] -> [((ItAmount, ItemType), [Int])]
--groupSplitItemAmounts = M.foldrWithKey f []
groupSplitItemAmounts = M.foldrWithKey f []
where
f ibt is = (++) [((fromIntegral i, ibt), take i is) | i <- [1 .. length is]]
@@ -46,3 +49,11 @@ combineList = map f . combineItemListYouX
, _siOffX = 0
, _siPayload = CombinableItem is itm []
}
combinationsTrie :: Trie (ItAmount, ItemType) Item
{-# INLINE combinationsTrie #-}
combinationsTrie =
foldl'
(flip $ uncurry insertInTrie . first sort)
emptyTrie
itemCombinations