diff --git a/src/Dodge/Data/UseDelay.hs b/src/Dodge/Data/UseDelay.hs new file mode 100644 index 000000000..b20cc8b8d --- /dev/null +++ b/src/Dodge/Data/UseDelay.hs @@ -0,0 +1,22 @@ +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE DeriveAnyClass #-} +{-# LANGUAGE StrictData #-} +{-# LANGUAGE TemplateHaskell #-} + +module Dodge.Data.UseDelay where + +import Sound.Data +import Control.Lens + +data ItemUseDelay -- should just be Delay + = NoDelay + | FixedRate + { _rateMax :: Int + } + | WarmUpNoDelay + { _warmMax :: Int + , _warmSound :: SoundID + } + deriving (Eq, Ord, Show, Read) --Generic, Flat) + +makeLenses ''ItemUseDelay diff --git a/src/Dodge/Item/UseDelay.hs b/src/Dodge/Item/UseDelay.hs new file mode 100644 index 000000000..e8b96744c --- /dev/null +++ b/src/Dodge/Item/UseDelay.hs @@ -0,0 +1,61 @@ +{-# LANGUAGE LambdaCase #-} + +module Dodge.Item.UseDelay + (useDelay + , module Dodge.Data.UseDelay + ) where + +import Dodge.Data.UseDelay +import Control.Lens +import Dodge.Data.Item +import Dodge.SoundLogic.ExternallyGeneratedSounds + +useDelay :: Item -> ItemUseDelay +useDelay itm = case itm ^. itType of + HELD hit -> heldUseDelay hit + DETECTOR _ -> FixedRate 20 + _ -> NoDelay + +heldUseDelay :: HeldItemType -> ItemUseDelay +heldUseDelay = \case + BANGSTICK _ -> FixedRate 8 + REWINDER -> FixedRate 20 + TIMESTOPPER -> FixedRate 20 + TIMESCROLLER -> FixedRate 20 + PISTOL -> FixedRate 6 + AUTOPISTOL -> FixedRate 8 + SMG -> FixedRate 8 + MACHINEPISTOL -> WarmUpNoDelay 50 crankSlowS + BURSTRIFLE -> FixedRate 15 + BANGCONE -> FixedRate 20 + BLUNDERBUSS -> FixedRate 20 + GRAPECANNON _ -> FixedRate 20 + MINIGUNX _ -> WarmUpNoDelay 100 crankSlowS + VOLLEYGUN{} -> FixedRate 15 + RIFLE -> FixedRate 6 + ALTERIFLE -> FixedRate 6 + AUTORIFLE -> FixedRate 6 + BANGROD -> FixedRate 12 + ELEPHANTGUN -> FixedRate 12 + AMR -> FixedRate 12 + AUTOAMR -> FixedRate 12 + SNIPERRIFLE -> FixedRate 12 + FLAMESPITTER -> FixedRate 6 + FLAMETHROWER -> NoDelay + FLAMETORRENT -> NoDelay + FLAMEWALL -> NoDelay + POISONSPRAYER -> NoDelay + BLOWTORCH -> NoDelay + SPARKGUN -> NoDelay + TESLAGUN -> NoDelay + LASER -> NoDelay + TRACTORGUN -> NoDelay + RLAUNCHER -> FixedRate 20 + RLAUNCHERX{} -> FixedRate 20 + GLAUNCHER -> FixedRate 20 + SHATTERGUN -> FixedRate 20 + BLINKER -> FixedRate 20 + BLINKERUNSAFE -> FixedRate 20 + TORCH -> NoDelay + FLATSHIELD -> NoDelay + KEYCARD _ -> NoDelay