This commit is contained in:
2025-06-05 11:11:34 +01:00
parent 1a0e115c7d
commit cff32e50f3
2 changed files with 83 additions and 0 deletions
+22
View File
@@ -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
+61
View File
@@ -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