module Dodge.Item.Weapon.Radar where
import Dodge.Data
import Dodge.Picture.Layer
import Dodge.Default
import Dodge.Item.Draw
import Dodge.Item.Weapon.BulletGuns
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.Item.Weapon.Grenade
import Geometry
import Picture
import Shape

{- |
Sends out pulses that display walls.  -}
radar :: Item
radar = defaultGun 
    { _itName = "RADAR"
    , _itIdentity = Generic
    , _wpMaxAmmo = 100
    , _wpLoadedAmmo = 100
    , _wpReloadTime = 200
    , _wpReloadState = 0
    , _itUseRate = 120
    , _itUseTime = 0
    , _itUse = const aRadarPulse
    , _itUseModifiers =
        [ ammoUseCheckI
        ]
    , _wpSpread = autogunSpread
    , _wpRange = 20
    , _itHammer = HammerUp
    , _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ color blue $ polygon $ rectNESW 5 5 (-5) (-5)
    , _itAimingRange = 1
    , _itZoom       = defaultItZoom { _itZoomMax = 1}
    , _itAimZoom    = defaultItZoom { _itZoomMax = 1}
    , _itEquipPict = pictureWeaponOnAim' $ \_ -> (,) emptySH $ color blue $ polygon $ rectNESW 5 5 (-5) (-5)
    }
{- |
Sends out pulses that display creatures.  -}
sonar :: Item
sonar = defaultGun 
    { _itName = "SONAR"
    , _itIdentity = Generic
    , _wpMaxAmmo = 100
    , _wpLoadedAmmo = 100
    , _wpReloadTime = 200
    , _wpReloadState = 0
    , _itUseRate = 120
    , _itUseTime = 0
    , _itUse = const aSonarPulse
    , _itUseModifiers =
        [ ammoUseCheckI
        ]
    , _wpRange = 20
    , _itHammer = HammerUp
    , _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ color blue $ polygon $ rectNESW 5 5 (-5) (-5)
    , _itAimingRange = 1
    , _itZoom       = defaultItZoom {_itZoomMax = 1}
    , _itAimZoom    = defaultItZoom {_itZoomMax = 1}
    , _itEquipPict = pictureWeaponOnAim' $ \_ -> (,) emptySH $ color blue $ polygon $ rectNESW 5 5 (-5) (-5)
    }
{- |
Automatically sends out pulses that display creatures.  -}
autoSonar :: Item
autoSonar = defaultEquipment
    { _itIdentity = Generic
    , _itName = "AUTOSONAR"
    , _itMaxStack = 1
    , _itAmount = 1
    , _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ color yellow $ polygon $ map toV2 [(-3,-3),(-3,3),(3,3),(3,-3)]
    , _itEquipPict = \_ _ -> (,) emptySH blank
    , _itEffect = autoSonarEffect
    , _itID = Nothing
    , _itAimingSpeed = 1
    , _itAimingRange = 0
    , _itZoom = defaultItZoom {_itZoomMax = 1}
    , _itAimZoom = defaultItZoom {_itZoomMax = 1}
    }
{- |
Automatically sends out pulses that display walls.  -}
autoRadar :: Item
autoRadar = defaultEquipment
    { _itIdentity = Generic
    , _itName = "AUTORADAR"
    , _itMaxStack = 1
    , _itAmount = 1
    , _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ color yellow $ polygon $ map toV2 [(-3,-3),(-3,3),(3,3),(3,-3)]
    , _itEquipPict = \_ _ -> (,) emptySH blank
    , _itEffect = autoRadarEffect
    , _itID = Nothing
    , _itAimingSpeed = 1
    , _itAimingRange = 0
    , _itZoom = defaultItZoom {_itZoomMax = 1}
    , _itAimZoom = defaultItZoom {_itZoomMax = 1}
    }
