Add file
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
|
||||
module Dodge.Item.AmmoSlots (
|
||||
itemAmmoSlots,
|
||||
) where
|
||||
|
||||
import Dodge.Data.AmmoType
|
||||
import Dodge.Data.Item
|
||||
import qualified Data.IntMap.Strict as IM
|
||||
import Control.Lens
|
||||
|
||||
itemAmmoSlots :: Item -> IM.IntMap AmmoType
|
||||
itemAmmoSlots itm = case itm ^. itType of
|
||||
HELD hit -> heldItemAmmoSlots hit
|
||||
DETECTOR _ -> singleAmmo ElectricalAmmo
|
||||
_ -> mempty
|
||||
|
||||
heldItemAmmoSlots :: HeldItemType -> IM.IntMap AmmoType
|
||||
heldItemAmmoSlots = \case
|
||||
BANGSTICK _ -> singleAmmo BulletAmmo
|
||||
PISTOL -> singleAmmo BulletAmmo
|
||||
AUTOPISTOL -> singleAmmo BulletAmmo
|
||||
MACHINEPISTOL -> singleAmmo BulletAmmo
|
||||
SMG -> singleAmmo BulletAmmo
|
||||
BANGCONE -> singleAmmo BulletAmmo
|
||||
BLUNDERBUSS -> singleAmmo BulletAmmo
|
||||
GRAPECANNON {} -> singleAmmo BulletAmmo
|
||||
RIFLE -> singleAmmo BulletAmmo
|
||||
AUTORIFLE -> singleAmmo BulletAmmo
|
||||
BURSTRIFLE -> singleAmmo BulletAmmo
|
||||
ALTERIFLE -> IM.fromList (zip [0..1] $ repeat BulletAmmo)
|
||||
BANGROD -> singleAmmo BulletAmmo
|
||||
ELEPHANTGUN -> singleAmmo BulletAmmo
|
||||
AMR -> singleAmmo BulletAmmo
|
||||
AUTOAMR -> singleAmmo BulletAmmo
|
||||
SNIPERRIFLE -> singleAmmo BulletAmmo
|
||||
MINIGUNX _ -> singleAmmo BeltBulletAmmo
|
||||
VOLLEYGUN i -> IM.fromList (zip [0..i-1] $ repeat BulletAmmo)
|
||||
POISONSPRAYER -> singleAmmo GasAmmo
|
||||
FLAMETHROWER -> singleAmmo GasAmmo
|
||||
FLAMETORRENT -> singleAmmo GasAmmo
|
||||
FLAMESPITTER -> singleAmmo GasAmmo
|
||||
FLAMEWALL -> singleAmmo GasAmmo
|
||||
BLOWTORCH -> singleAmmo GasAmmo
|
||||
LASER -> singleAmmo ElectricalAmmo
|
||||
TESLAGUN -> singleAmmo ElectricalAmmo
|
||||
SPARKGUN -> singleAmmo ElectricalAmmo
|
||||
TRACTORGUN -> singleAmmo ElectricalAmmo
|
||||
SHATTERGUN -> singleAmmo ElectricalAmmo
|
||||
TORCH -> singleAmmo ElectricalAmmo
|
||||
BLINKERUNSAFE -> singleAmmo ElectricalAmmo
|
||||
BLINKER -> singleAmmo ElectricalAmmo
|
||||
RLAUNCHER -> singleAmmo LauncherAmmo
|
||||
GLAUNCHER -> singleAmmo LauncherAmmo
|
||||
RLAUNCHERX i -> IM.fromList [(j, LauncherAmmo) | j <- [0 .. i -1]]
|
||||
REWINDER -> singleAmmo ElectricalAmmo
|
||||
TIMESTOPPER -> singleAmmo ElectricalAmmo
|
||||
TIMESCROLLER -> singleAmmo ElectricalAmmo
|
||||
FLATSHIELD -> mempty
|
||||
KEYCARD _ -> mempty
|
||||
|
||||
singleAmmo :: a -> IM.IntMap a
|
||||
singleAmmo x = IM.insert 0 x mempty
|
||||
@@ -0,0 +1,26 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
|
||||
module Dodge.Item.MagAmmoType (
|
||||
magAmmoType,
|
||||
) where
|
||||
|
||||
import Control.Lens
|
||||
import Dodge.Data.AmmoType
|
||||
import Dodge.Data.Item
|
||||
|
||||
magAmmoType :: Item -> Maybe AmmoType
|
||||
magAmmoType itm = case itm ^. itType of
|
||||
AMMOMAG amt -> Just $ mAT amt
|
||||
EQUIP FUELPACK -> Just GasAmmo
|
||||
EQUIP BULLETBELTPACK -> Just BeltBulletAmmo
|
||||
EQUIP BULLETBELTBRACER -> Just BeltBulletAmmo
|
||||
_ -> Nothing
|
||||
|
||||
mAT :: AmmoMagType -> AmmoType
|
||||
mAT = \case
|
||||
TINMAG -> BulletAmmo
|
||||
DRUMMAG -> BulletAmmo
|
||||
BELTMAG -> BeltBulletAmmo
|
||||
SHELLMAG -> LauncherAmmo
|
||||
BATTERY -> ElectricalAmmo
|
||||
CHEMFUELPOUCH -> GasAmmo
|
||||
Reference in New Issue
Block a user