module Dodge.Item.Consumable
    where
import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Item.Data
import Dodge.Picture.Layer
import Dodge.Default
import Dodge.SoundLogic
import Dodge.SoundLogic.LoadSound
import Shape
--import ShapePicture
import Dodge.Item.Draw
import Picture

import Control.Lens
import qualified Data.IntMap.Strict as IM

medkit :: Int -> Item
medkit i = defaultConsumable
    { _itIdentity = Medkit25
    , _itName = "MEDKIT" ++ show i
    , _itMaxStack = 9
    , _itAmount = 1
    , _cnEffect = heal i
    , _itFloorPict = (,) emptySH $ setLayer 0 . onLayer FlItLayer . color blue $ circleSolid 3
    , _itEquipPict = pictureItem $ (,) emptySH $ color blue $ circleSolid 3
    , _itID = Nothing
    }

heal25 :: Int -> World -> Maybe World
heal25 = heal 25
heal :: Int -> Int -> World -> Maybe World
heal hp n w | _crHP (_creatures w IM.! n) >= 10000 = Nothing
            | otherwise = Just $ soundStart (CrSound $ _crID cr) (_crPos cr) healS Nothing w
                & creatures . ix n . crHP %~ min 10000 . (+ hp)
  where
    cr = _creatures w IM.! n

