module Dodge.Default.Weapon where import Dodge.Data import Dodge.Reloading.Action import Dodge.Item.Weapon.Bullet import Dodge.Default.Item import Dodge.Default.AimParams --import Dodge.Item.Draw import Picture import qualified Data.Map.Strict as M import Control.Lens defaultLeftLoadable :: ItemConsumption defaultLeftLoadable = AutoRecharging 10 10 100 100 defaultLoadable :: ItemConsumption defaultLoadable = LoadableAmmo { _laAmmoType = GenericAmmo , _laMax = 15 , _laLoaded = 0 , _laPrimed = True , _laCycle = [loadEject 10, loadInsert 10, loadPrime 10] , _laProgress = Nothing } defaultBulletLoadable :: ItemConsumption defaultBulletLoadable = defaultLoadable & laAmmoType .~ basicBullet defaultChargeable :: ItemConsumption defaultChargeable = ChargeableAmmo 100 100 defaultrUse :: ItemUse defaultrUse = RightUse { _rUse = HeldDoNothing , _useDelay = FixedRate {_rateMax = 8, _rateTime = 0} , _useMods = HeldModNothing , _useHammer = HammerUp , _useAim = defaultAimParams , _heldScroll = HeldScrollDoNothing } defaultlUse :: ItemUse defaultlUse = LeftUse { _lUse = LDoNothing , _useDelay = FixedRate {_rateMax = 8, _rateTime = 0} , _useHammer = HammerUp , _eqEq = defaultEquip } defaultEquip :: Equipment defaultEquip = Equipment { _eqSite = GoesOnSpecial , _eqUse = EDoNothing , _eqOnEquip = EDoNothing , _eqOnRemove = EDoNothing , _eqParams = NoEquipParams , _eqViewDist = Nothing } luseInstantNoH :: Luse -> ItemUse luseInstantNoH f = defaultlUse & lUse .~ f & useDelay .~ NoDelay -- TODO change this defaultLeftItem :: Item defaultLeftItem = defaultWeapon & itConsumption .~ defaultLeftLoadable defaultWeapon :: Item defaultWeapon = defaultItem & itConsumption .~ defaultLoadable & itUse .~ defaultrUse & itInvColor .~ white & itType . iyModules .~ M.fromList [(ModTarget, EMPTYMODULE) ,(ModTeleport, EMPTYMODULE) ] defaultBulletWeapon :: Item defaultBulletWeapon = defaultWeapon & itConsumption .~ defaultBulletLoadable & itUse . rUse .~ HeldUseAmmoParams -- useAmmoParams & itType . iyModules . at ModBullet ?~ EMPTYMODULE & itType . iyModules . at ModBulletSpawn ?~ EMPTYMODULE & itType . iyModules . at ModBulletTrajectory ?~ EMPTYMODULE defaultItemValue :: ItemValue defaultItemValue = ItemValue 10 MundaneItem defaultCraftable :: Item defaultCraftable = defaultItem { _itInvColor = green } defBulletShooter :: ItemParams defBulletShooter = BulletShooter { _muzVel = 1 , _rifling = 0.8 , _bore = 2 , _gunBarrels = SingleBarrel 0 , _recoil = 0 , _torqueAfter = 0 , _randomOffset = 0 } defaultAutoGun :: Item defaultAutoGun = defaultBulletWeapon & itUse . useAim . aimStance .~ TwoHandTwist