56 lines
1.7 KiB
Haskell
56 lines
1.7 KiB
Haskell
module Dodge.Item.Weapon.Radar where
|
|
import Dodge.Data
|
|
--import Dodge.Picture.Layer
|
|
import Dodge.Default
|
|
import Dodge.Item.Weapon.TriggerType
|
|
import Dodge.Item.Weapon.ExtraEffect
|
|
import Dodge.Item.Weapon.UseEffect
|
|
--import Dodge.Item.Weapon.Remote
|
|
import Dodge.Default.Weapon
|
|
import Dodge.SoundLogic
|
|
--import Dodge.Item.Weapon.Grenade
|
|
import Geometry
|
|
import Picture
|
|
import Shape
|
|
import ShapePicture
|
|
|
|
import Control.Lens
|
|
|
|
{- |
|
|
Sends out pulses that display walls. -}
|
|
clickDetector :: Detector -> Item
|
|
clickDetector dt = defaultWeapon
|
|
& itUse . useDelay . rateMax .~ 20
|
|
& itUse . rUse .~ detectorEffect dt
|
|
& itUse . useMods .~
|
|
[ ammoUseCheck
|
|
]
|
|
& itUse . useAim . aimRange .~ 1
|
|
& itUse . useAim . aimZoom .~ defaultItZoom {_itZoomFac = 1}
|
|
& itType . iyBase .~ CLICKDETECTOR dt
|
|
|
|
autoDetector :: Detector -> Item
|
|
autoDetector dt = defaultEquipment
|
|
& itUse . eqEq . eqSite .~ GoesOnWrist
|
|
& itUse . eqEq . eqUse .~ autoEffect (detectorEffect dt) 100 click1S
|
|
& itUse . eqEq . eqParams .~ EquipCounter 0
|
|
& itUse . eqEq . eqViewDist ?~ 350
|
|
& itType . iyBase .~ AUTODETECTOR dt
|
|
& itDimension . dimPortage
|
|
.~ WornItem
|
|
& itDimension . dimSPic .~ const
|
|
(noPic (colorSH (detectorColor dt) $ upperPrismPoly 3 $ rectWH 2 2))
|
|
-- , _itEffect = autoRadarEffect
|
|
|
|
detectorColor :: Detector -> Color
|
|
detectorColor dt = case dt of
|
|
ITEMDETECTOR -> blue
|
|
CREATUREDETECTOR -> green
|
|
WALLDETECTOR -> red
|
|
|
|
detectorEffect :: Detector -> Item -> Creature -> World -> World
|
|
detectorEffect dt = case dt of
|
|
ITEMDETECTOR -> const anItemFindPulse
|
|
CREATUREDETECTOR -> const aSonarPulse
|
|
WALLDETECTOR -> const aWallPulse
|