Files
loop/src/Dodge/Module.hs
T

48 lines
1.5 KiB
Haskell

module Dodge.Module (
moduleSizes,
moduleStrings,
moduleName,
) where
import qualified Data.Map.Strict as M
import Dodge.Data.Item
import Dodge.Module.Info
moduleSizes :: Item -> Int
moduleSizes = sum . fmap moduleSize . _iyModules . _itType
moduleSize :: ItemModuleType -> Int
moduleSize imt = case imt of
EMPTYMODULE -> 0
_ -> 1
moduleStrings :: Item -> [String]
moduleStrings = M.elems . M.mapMaybe moduleName . _iyModules . _itType
moduleName :: ItemModuleType -> Maybe String
moduleName imt = case imt of
EMPTYMODULE -> Nothing
-- BELTMAG -> Just "+BELT FEED"
MAGNETMAG -> Just "+MAGNET FEED"
BULPAY thepayload -> Just $ "+" ++ displayBulletPayload thepayload
BULBODY thebody -> Just $ "+" ++ displayBulletBody thebody
BULTRAJ thetraj -> Just $ "+" ++ displayBulletTraj thetraj
TARGET TargetRBCreature -> Just "+CREATURETARGETING"
TARGET TARGETLASER -> Just "+LASERTARGETING"
TARGET TargetRBPress -> Just "+POSTIONALTARGETING"
TARGET TargetCursor -> Just "+CURSORTARGETING"
TARGET TargetRBLine -> Just "+LINETARGETING"
INCENDLAS -> Just "+INCENDIARY"
SPLITLAS -> Just "+SPLIT"
STATICLAS -> Just "+STATIC"
-- WEPTELE -> Just "+DIRECTEDTELE"
LAUNCHHOME -> Just "+TARGET HOMING"
ATTACHTORCH -> Just "+TORCH"
--moduleFold :: (m -> m -> m) -> (ItemModule -> Maybe m) -> m -> Item -> m
--moduleFold g f e = foldr (g . fromMaybe e . f) e
-- . fmap fromModuleType
-- . _iyModules
-- . _itType