Files
loop/src/Dodge/Default/Item.hs
T

56 lines
1.5 KiB
Haskell

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
}