module Dodge.Default.Item ( defaultHeldItem, singleAmmo, defaultBulletWeapon, defaultLeftItem, defaultCraftItem, defaultConsumable, module Dodge.Default.Item.Use, ) where import Control.Lens import qualified Data.IntMap.Strict as IM import Dodge.Data.Item import Dodge.Default.Item.Use import Geometry.Data defaultHeldItem :: Item defaultHeldItem = Item { _itType = HELD PISTOL , _itConsumables = NoConsumables , _itEffect = defaultItEffect , _itID = 0 -- should this return an error ? const $ error "itID not correctly initialised" ? , _itTargeting = NoItTargeting , _itAmmoSlots = mempty , _itLocation = InVoid , _itUse = defaultHeldUse , _itParams = NoParams } defaultLeftItem :: Item defaultLeftItem = defaultHeldItem & itUse .~ defaultLeftUse defaultCraftItem :: Item defaultCraftItem = defaultHeldItem & itUse .~ UseNothing singleAmmo :: a -> IM.IntMap a singleAmmo x = IM.insert 0 x mempty defaultBulletWeapon :: Item defaultBulletWeapon = defaultHeldItem & itAmmoSlots .~ singleAmmo BulletAmmo & itUse . heldAim . aimMuzzles .~ [Muzzle (V2 15 0) 0 0.01 0 PistolFlare MuzzleShootBullet (UseExactly 1)] defaultConsumable :: Item defaultConsumable = defaultHeldItem & itUse .~ UseConsume CDoNothing defaultItEffect :: ItEffect defaultItEffect = ItEffect { _ieInv = NoInvEffect , _ieOnInsert = NoInvEffect , _ieOnDrop = NoInvEffect }