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