{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.Item.HeldUse where import Data.Aeson import Data.Aeson.TH import Dodge.Data.CamouflageStatus import Dodge.Data.Item.Combine import Control.Lens data Huse = HeldDoNothing | HeldUseAmmoParams | HeldOverNozzlesUseGasParams | HeldPJCreation | HeldPJCreationX Int | HeldFireRemoteShell | HeldExplodeRemoteShell Int Int | HeldDetectorEffect Detector | HeldTeslaArc | HeldLaser | HeldCircleLaser | HeldDualLaser | HeldTractor | HeldForceField | HeldShatter deriving (Eq, Ord, Show, Read) --Generic, Flat) data Cuse = CDoNothing | CHeal Int deriving (Eq, Ord, Show, Read) --Generic, Flat) data Euse = EDoNothing | EDetector {_euseDetector :: Detector} | EMagShield | EWristShield | EHeadLamp | ECamouflage {_euseCamouflageStatus :: CamouflageStatus} | EonWristShield | EoffWristShield | EFuelSource {_euseFuelAmount :: Int, _euseFuelMax :: Int} deriving (Eq, Ord, Show, Read) --Generic, Flat) data Luse = LDoNothing | LRewind | LTimePause | LTimeScroll | LShrink | LBlink | LUnsafeBlink | LBoost deriving (Eq, Ord, Show, Read) --Generic, Flat) data HeldMod = HeldModNothing | PoisonSprayerMod | FlameSpitterMod | FlameSpitterRepeatMod | FlameThrowerMod | LauncherMod | TeslaMod | CircleLaserMod | LasWideMod Int | DualBeamMod | LasMod | LauncherXMod Int | ShatterMod | AmmoCheckMod | AmmoUseCheckMod | AmmoHammerTimeUseOneMod | BangCaneMod | VolleyGunMod | AutoRifleMod | BangRodMod | ElephantGunMod | AutoAmrMod | MachineGunMod | ModWithDirectedTeleport HeldMod | BangStickMod | PistolMod | AutoPistolMod | MachinePistolMod | BurstRifleMod | BurstRifleRepeatMod | MiniGunMod Int | SmgMod | RevolverXMod | RevolverXRepeatMod | BangConeMod deriving (Eq, Ord, Show, Read) --Generic, Flat) makeLenses ''Euse deriveJSON defaultOptions ''Cuse deriveJSON defaultOptions ''HeldMod deriveJSON defaultOptions ''Euse deriveJSON defaultOptions ''Huse deriveJSON defaultOptions ''Luse