Implement remote screen for launcher projectiles
This commit is contained in:
@@ -41,14 +41,20 @@ basePartiallyComposedItem itm = case itm ^. itType . iyBase of
|
||||
ATTACH TARGETATTACH{} -> (itm,WeaponTargetingSF, LinkTest (const Nothing) (const Nothing))
|
||||
ATTACH ZOOMSCOPE -> (itm,WeaponScopeSF, LinkTest (const Nothing) (const Nothing))
|
||||
ATTACH ROCKETHOMER -> (itm,AmmoModifierSF ProjectileAmmo, LinkTest (const Nothing) (const Nothing))
|
||||
ATTACH REMOTESCREEN -> (itm,AmmoModifierSF ProjectileAmmo, LinkTest (const Nothing) (const Nothing))
|
||||
ATTACH REMOTESCREEN -> (itm,RemoteScreenSF, LinkTest (const Nothing) (const Nothing))
|
||||
_ -> (itm,UncomposableIsolateSF, LinkTest (const Nothing) (const Nothing))
|
||||
--AMMOMAG _ -> ammoComposedItem' itm
|
||||
|
||||
ammoComposedItem :: Item -> PartiallyComposedItem
|
||||
ammoComposedItem itm = fromMaybe (error "in ammoComposedItem, wrong item") $ do
|
||||
atype <- itm ^? itUse . amagType
|
||||
return (itm, AmmoMagSF atype, useBreakListsLinkTest [(AmmoModifierSF atype, AmmoModLink)] [])
|
||||
return (itm
|
||||
, AmmoMagSF atype
|
||||
, useBreakListsLinkTest
|
||||
[(AmmoModifierSF atype, AmmoModLink)
|
||||
,(RemoteScreenSF, RemoteScreenLink)
|
||||
]
|
||||
[]
|
||||
)
|
||||
|
||||
type LDTComb a b = LabelDoubleTree b a -> LabelDoubleTree b a -> Maybe (LabelDoubleTree b a)
|
||||
|
||||
@@ -84,10 +90,10 @@ 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)
|
||||
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)
|
||||
|
||||
invLDT :: IM.IntMap Item -> [LabelDoubleTree ComposeLinkType PartiallyComposedItem]
|
||||
invLDT =
|
||||
@@ -135,7 +141,7 @@ invIndentIM = IM.fromAscList . zip [0 ..] . reverse . map (over _1 (^. _1))
|
||||
. concatMap ldtToIndentList . invLDT
|
||||
|
||||
invTrees :: IM.IntMap Item -> IM.IntMap (LabelDoubleTree ComposeLinkType Item)
|
||||
invTrees = IM.unions . map (ldtToIM getindex) . map (fmap (^. _1)) . invLDT
|
||||
invTrees = IM.unions . map (ldtToIM getindex . fmap (^. _1)) . invLDT
|
||||
where
|
||||
getindex :: Item -> Int
|
||||
getindex i =
|
||||
|
||||
Reference in New Issue
Block a user