module Dodge.Item.Weapon.Spawn where
import Dodge.Data
import Dodge.Item.Weapon.TriggerType
--import Dodge.Item.Weapon.Remote
import Dodge.Default.Weapon
--import Dodge.Item.Weapon.Grenade
import Geometry
import qualified IntMapHelp as IM

import Data.Function
import Control.Lens


{- |
Creates a creature next to the creature using the item.  -}
spawnGun :: Creature -> Item
spawnGun cr = defaultGun
    { _itName       = "SPAWNER"
    , _wpMaxAmmo    = 1
    , _wpLoadedAmmo = 1
    , _wpReloadTime = 80
    , _wpReloadState = 0
    , _itUseRate   = 100
    , _itUse       = \_ -> spawnCrNextTo cr
    , _itUseModifiers =
        [ ammoCheckI
        , hammerCheckI
        ]
    }
spawnCrNextTo 
    :: Creature -- ^ Creature to spawn
    -> Creature -- ^ existing creature that will be spawned next to
    -> World 
    -> World
spawnCrNextTo cr sCr w = w & creatures %~ IM.insert k newCr
  where
    k = IM.newKey $ _creatures w
    newCr = cr
        & crID  .~ k
        & crPos .~ _crPos sCr +.+ unitVectorAtAngle (_crDir sCr)
        & crOldPos .~ _crPos sCr +.+ unitVectorAtAngle (_crDir sCr)
