Add file
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.AmmoType where
|
||||
|
||||
--import Data.Aeson
|
||||
--import Data.Aeson.TH
|
||||
|
||||
data AmmoType
|
||||
= LauncherAmmo
|
||||
| BulletAmmo
|
||||
| BeltBulletAmmo
|
||||
| ElectricalAmmo
|
||||
| DroneAmmo
|
||||
| GasAmmo
|
||||
| PrintMaterial
|
||||
| ExplosivePutty
|
||||
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||
|
||||
--deriveJSON defaultOptions ''AmmoType
|
||||
@@ -0,0 +1,30 @@
|
||||
{-# LANGUAGE LambdaCase #-}
|
||||
|
||||
module Dodge.Data.EquipType (equipType) where
|
||||
|
||||
import Control.Lens
|
||||
import Dodge.Data.Item
|
||||
|
||||
equipType :: Item -> Maybe EquipType
|
||||
equipType itm = case itm ^. itType of
|
||||
EQUIP eit -> Just $ eitType eit
|
||||
_ -> Nothing
|
||||
|
||||
eitType :: EquipItemType -> EquipType
|
||||
eitType = \case
|
||||
MAGSHIELD -> GoesOnWrist
|
||||
FLAMESHIELD -> GoesOnWrist
|
||||
FRONTARMOUR -> GoesOnChest
|
||||
WRISTARMOUR -> GoesOnWrist
|
||||
INVISIBILITYEQUIPMENT x -> x
|
||||
BRAINHAT -> GoesOnHead
|
||||
HAT -> GoesOnHead
|
||||
HEADLAMP -> GoesOnHead
|
||||
POWERLEGS -> GoesOnLegs
|
||||
SPEEDLEGS -> GoesOnLegs
|
||||
JUMPLEGS -> GoesOnLegs
|
||||
FUELPACK -> GoesOnBack
|
||||
BULLETBELTPACK -> GoesOnBack
|
||||
BULLETBELTBRACER -> GoesOnWrist
|
||||
BATTERYPACK -> GoesOnBack
|
||||
WRIST_ECG -> GoesOnWrist
|
||||
@@ -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