Implement bullet trajectories using attachable items
This commit is contained in:
+1
-1
@@ -1 +1 @@
|
|||||||
All good (616 modules, at 16:22:03)
|
All good (616 modules, at 21:51:07)
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -241,12 +241,6 @@ inventoryX c = case c of
|
|||||||
'P' -> [burstRifle , tinMag, bulletSynthesizer]
|
'P' -> [burstRifle , tinMag, bulletSynthesizer]
|
||||||
'T' -> testInventory
|
'T' -> testInventory
|
||||||
'U' ->
|
'U' ->
|
||||||
[ targetingScope TARGETLASER
|
|
||||||
, launcher
|
|
||||||
, megaShellMag
|
|
||||||
, homingModule
|
|
||||||
]
|
|
||||||
'V' ->
|
|
||||||
[targetingScope tt | tt <- [minBound .. maxBound]]
|
[targetingScope tt | tt <- [minBound .. maxBound]]
|
||||||
<>
|
<>
|
||||||
[ launcher
|
[ launcher
|
||||||
@@ -254,6 +248,13 @@ inventoryX c = case c of
|
|||||||
, homingModule
|
, homingModule
|
||||||
, remoteScreen
|
, remoteScreen
|
||||||
]
|
]
|
||||||
|
'V' ->
|
||||||
|
[targetingScope tt | tt <- [minBound .. maxBound]]
|
||||||
|
<>
|
||||||
|
[ autoRifle
|
||||||
|
, megaTinMag 10200
|
||||||
|
] <>
|
||||||
|
[bulletTargetingModule btt | btt <- [minBound .. maxBound]]
|
||||||
_ -> []
|
_ -> []
|
||||||
|
|
||||||
testInventory :: [Item]
|
testInventory :: [Item]
|
||||||
@@ -287,7 +288,7 @@ stackedInventory =
|
|||||||
, megaShellMag
|
, megaShellMag
|
||||||
, targetingScope TARGETLASER
|
, targetingScope TARGETLASER
|
||||||
, burstRifle
|
, burstRifle
|
||||||
, megaTinMag
|
, megaTinMag 100
|
||||||
, teslaGun
|
, teslaGun
|
||||||
, megaBattery
|
, megaBattery
|
||||||
, flameThrower
|
, flameThrower
|
||||||
|
|||||||
@@ -34,8 +34,7 @@ useRootItem crid w = fromMaybe w $ do
|
|||||||
|
|
||||||
itemUseEffect :: Creature -> LabelDoubleTree ComposeLinkType Item -> World -> World
|
itemUseEffect :: Creature -> LabelDoubleTree ComposeLinkType Item -> World -> World
|
||||||
itemUseEffect cr it w = case it ^. ldtValue . itUse of
|
itemUseEffect cr it w = case it ^. ldtValue . itUse of
|
||||||
HeldUse{ _heldMods = usemods} ->
|
HeldUse{ } -> heldEffect it cr w
|
||||||
heldEffect usemods it cr w
|
|
||||||
& pointerToItem itm . itUse . heldHammer .~ HammerDown
|
& pointerToItem itm . itUse . heldHammer .~ HammerDown
|
||||||
LeftUse{} -> doequipmentchange
|
LeftUse{} -> doequipmentchange
|
||||||
EquipUse{} -> doequipmentchange
|
EquipUse{} -> doequipmentchange
|
||||||
@@ -45,6 +44,7 @@ itemUseEffect cr it w = case it ^. ldtValue . itUse of
|
|||||||
TargetingUse {} -> w
|
TargetingUse {} -> w
|
||||||
AmmoMagUse{} -> w
|
AmmoMagUse{} -> w
|
||||||
ScopeUse{} -> w
|
ScopeUse{} -> w
|
||||||
|
BulletTrajectoryUse{} -> w
|
||||||
where
|
where
|
||||||
itm = it ^. ldtValue
|
itm = it ^. ldtValue
|
||||||
doequipmentchange = fromMaybe w $ do
|
doequipmentchange = fromMaybe w $ do
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ data BulletTrajectoryType
|
|||||||
| BezierTrajectoryType
|
| BezierTrajectoryType
|
||||||
| FlechetteTrajectoryType
|
| FlechetteTrajectoryType
|
||||||
| MagnetTrajectoryType
|
| MagnetTrajectoryType
|
||||||
deriving (Show, Eq, Ord, Read) --Generic, Flat)
|
deriving (Show, Eq, Ord, Read, Enum, Bounded) --Generic, Flat)
|
||||||
|
|
||||||
makeLenses ''Bullet
|
makeLenses ''Bullet
|
||||||
makeLenses ''BulletSpawn
|
makeLenses ''BulletSpawn
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ data ItemBaseType
|
|||||||
| ATTACH {_ibtAttach :: AttachType}
|
| ATTACH {_ibtAttach :: AttachType}
|
||||||
| AMMOMAG {_ibtAmmoMag :: AmmoMagType}
|
| AMMOMAG {_ibtAmmoMag :: AmmoMagType}
|
||||||
| TARGETING {_ibtTargeting :: TargetingType}
|
| TARGETING {_ibtTargeting :: TargetingType}
|
||||||
|
| HOMING {_ibtHoming :: BulletTrajectoryType}
|
||||||
deriving (Eq, Ord, Show, Read)
|
deriving (Eq, Ord, Show, Read)
|
||||||
|
|
||||||
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||||
@@ -100,6 +101,7 @@ data AttachType
|
|||||||
| BULLETSYNTHESIZER
|
| BULLETSYNTHESIZER
|
||||||
| REMOTESCREEN
|
| REMOTESCREEN
|
||||||
| HOMINGMODULE
|
| HOMINGMODULE
|
||||||
|
-- | FLETCHINGMODULE
|
||||||
-- | BULPAYLOADATTACH
|
-- | BULPAYLOADATTACH
|
||||||
-- | BULTRAJECTORYATTACH
|
-- | BULTRAJECTORYATTACH
|
||||||
deriving (Eq, Ord, Show, Read)
|
deriving (Eq, Ord, Show, Read)
|
||||||
|
|||||||
@@ -12,14 +12,14 @@ import Dodge.Data.CamouflageStatus
|
|||||||
import Dodge.Data.Item.Combine
|
import Dodge.Data.Item.Combine
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
|
|
||||||
data Huse
|
--data Huse
|
||||||
= HeldDoNothing
|
-- = HeldDoNothing
|
||||||
-- | HeldFireRemoteShell
|
---- | HeldFireRemoteShell
|
||||||
-- | HeldExplodeRemoteShell Int Int
|
---- | HeldExplodeRemoteShell Int Int
|
||||||
| HeldDetectorEffect Detector
|
-- | HeldDetectorEffect Detector
|
||||||
| HeldForceField
|
-- | HeldForceField
|
||||||
-- | HeldShatter
|
---- | HeldShatter
|
||||||
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
-- deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
data Cuse
|
data Cuse
|
||||||
= CDoNothing
|
= CDoNothing
|
||||||
@@ -56,16 +56,16 @@ data Luse
|
|||||||
| LBoost
|
| LBoost
|
||||||
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
data HeldMod
|
--data HeldMod
|
||||||
= PistolMod
|
-- = PistolMod
|
||||||
-- | FireRemoteShellMod
|
---- | FireRemoteShellMod
|
||||||
| ExplodeRemoteShellMod
|
-- | ExplodeRemoteShellMod
|
||||||
| DoNothingMod
|
-- | DoNothingMod
|
||||||
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
-- deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
makeLenses ''Euse
|
makeLenses ''Euse
|
||||||
deriveJSON defaultOptions ''Cuse
|
deriveJSON defaultOptions ''Cuse
|
||||||
deriveJSON defaultOptions ''HeldMod
|
--deriveJSON defaultOptions ''HeldMod
|
||||||
deriveJSON defaultOptions ''Euse
|
deriveJSON defaultOptions ''Euse
|
||||||
deriveJSON defaultOptions ''Huse
|
--deriveJSON defaultOptions ''Huse
|
||||||
deriveJSON defaultOptions ''Luse
|
deriveJSON defaultOptions ''Luse
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ data ItemUse
|
|||||||
= HeldUse
|
= HeldUse
|
||||||
{ -- _heldUse :: Huse
|
{ -- _heldUse :: Huse
|
||||||
_heldDelay :: UseDelay
|
_heldDelay :: UseDelay
|
||||||
, _heldMods :: HeldMod
|
-- , _heldMods :: HeldMod
|
||||||
, _heldHammer :: HammerPosition
|
, _heldHammer :: HammerPosition
|
||||||
, _heldAim :: AimParams
|
, _heldAim :: AimParams
|
||||||
, _heldAmmoTypes :: IM.IntMap AmmoType
|
, _heldAmmoTypes :: IM.IntMap AmmoType
|
||||||
@@ -78,6 +78,9 @@ data ItemUse
|
|||||||
, _tgID :: Maybe Int
|
, _tgID :: Maybe Int
|
||||||
, _tgActive :: Bool
|
, _tgActive :: Bool
|
||||||
}
|
}
|
||||||
|
| BulletTrajectoryUse
|
||||||
|
{ _btuBulletTrajectory :: BulletTrajectoryType
|
||||||
|
}
|
||||||
deriving (Eq, Show, Read) --Generic, Flat)
|
deriving (Eq, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
data TriggerType
|
data TriggerType
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ singleAmmo x = IM.insert 0 x mempty
|
|||||||
defaultBulletWeapon :: Item
|
defaultBulletWeapon :: Item
|
||||||
defaultBulletWeapon =
|
defaultBulletWeapon =
|
||||||
defaultHeldItem
|
defaultHeldItem
|
||||||
& itUse . heldMods .~ PistolMod
|
-- & itUse . heldMods .~ PistolMod
|
||||||
& itUse . heldAmmoTypes .~ singleAmmo BulletAmmo
|
& itUse . heldAmmoTypes .~ singleAmmo BulletAmmo
|
||||||
-- & itUse . heldUse .~ HeldUseAmmoParams -- useAmmoParams
|
-- & itUse . heldUse .~ HeldUseAmmoParams -- useAmmoParams
|
||||||
& itType . iyModules . at ModBulletCollision ?~ EMPTYMODULE
|
& itType . iyModules . at ModBulletCollision ?~ EMPTYMODULE
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ defaultHeldUse :: ItemUse
|
|||||||
defaultHeldUse =
|
defaultHeldUse =
|
||||||
HeldUse
|
HeldUse
|
||||||
{ _heldDelay = FixedRate{_rateMax = 8, _rateTime = 0}
|
{ _heldDelay = FixedRate{_rateMax = 8, _rateTime = 0}
|
||||||
, _heldMods = DoNothingMod
|
-- , _heldMods = DoNothingMod
|
||||||
, _heldHammer = HammerUp
|
, _heldHammer = HammerUp
|
||||||
, _heldAim = defaultAimParams
|
, _heldAim = defaultAimParams
|
||||||
, _heldAmmoTypes = mempty
|
, _heldAmmoTypes = mempty
|
||||||
|
|||||||
+69
-131
@@ -1,10 +1,14 @@
|
|||||||
{-# LANGUAGE TupleSections #-}
|
{-# LANGUAGE TupleSections #-}
|
||||||
module Dodge.HeldUse
|
module Dodge.HeldUse
|
||||||
|
(heldEffect
|
||||||
|
, mcUseHeld
|
||||||
|
)
|
||||||
-- ( heldEffect
|
-- ( heldEffect
|
||||||
-- , mcUseHeld
|
-- , mcUseHeld
|
||||||
-- )
|
-- )
|
||||||
where
|
where
|
||||||
|
|
||||||
|
import Dodge.Base.Coordinate
|
||||||
import Dodge.Base.Collide
|
import Dodge.Base.Collide
|
||||||
import Dodge.Inventory.Lock
|
import Dodge.Inventory.Lock
|
||||||
--import Dodge.WorldEvent.Cloud
|
--import Dodge.WorldEvent.Cloud
|
||||||
@@ -38,28 +42,28 @@ import Geometry
|
|||||||
--import qualified IntMapHelp as IM
|
--import qualified IntMapHelp as IM
|
||||||
import LensHelp
|
import LensHelp
|
||||||
import RandomHelp
|
import RandomHelp
|
||||||
import Sound.Data
|
--import Sound.Data
|
||||||
--import Data.Foldable
|
--import Data.Foldable
|
||||||
|
|
||||||
heldEffect :: HeldMod -> LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
--heldEffect :: HeldMod -> LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
||||||
heldEffect effecttype = case effecttype of
|
--heldEffect effecttype = case effecttype of
|
||||||
PistolMod -> bulGunEffect
|
-- PistolMod -> bulGunEffect
|
||||||
-- FireRemoteShellMod -> undefined
|
---- FireRemoteShellMod -> undefined
|
||||||
ExplodeRemoteShellMod -> undefined
|
-- ExplodeRemoteShellMod -> undefined
|
||||||
DoNothingMod -> const $ const id
|
-- DoNothingMod -> const $ const id
|
||||||
|
|
||||||
bulGunEffect :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
heldEffect :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
||||||
bulGunEffect = hammerCheck $ useTimeCheck bulGunEffect'
|
heldEffect = hammerCheck $ useTimeCheck heldEffectMuzzles
|
||||||
|
|
||||||
bulGunEffect' :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
heldEffectMuzzles :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
||||||
bulGunEffect' t cr w = fromMaybe (error "error in bulGunEffect") $ do
|
heldEffectMuzzles t cr w = uncurry (applyCME (_ldtValue t) cr) cmew
|
||||||
muzzles <- t ^? ldtValue . itUse . heldAim . aimMuzzles
|
|
||||||
let (upitm,loadedmuzzles) = mapAccumR loadMuzzle t muzzles
|
|
||||||
cmew = foldl' (useLoadedAmmo t cr) (CME 0 0 False,w) $ zip [0..] loadedmuzzles
|
|
||||||
return $ uncurry (applyCME (_ldtValue t) cr) cmew
|
|
||||||
& cWorld . lWorld . lTestString .~ map (show . _mzAmmoSlot) muzzles
|
& cWorld . lWorld . lTestString .~ map (show . _mzAmmoSlot) muzzles
|
||||||
& doWeaponRepetitions upitm cr
|
& doWeaponRepetitions upitm cr
|
||||||
-- & cWorld . lWorld . lTestInt +~ 1
|
where
|
||||||
|
muzzles = t ^. ldtValue . itUse . heldAim . aimMuzzles
|
||||||
|
(upitm,loadedmuzzles) = mapAccumR loadMuzzle t muzzles
|
||||||
|
cmew = foldl' (useLoadedAmmo t cr) (CME 0 0 False,w) $ zip [0..] loadedmuzzles
|
||||||
|
|
||||||
|
|
||||||
-- need to be careful about inventory lock or item ids here
|
-- need to be careful about inventory lock or item ids here
|
||||||
doWeaponRepetitions :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
doWeaponRepetitions :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
||||||
@@ -192,7 +196,7 @@ useLoadedAmmo :: LabelDoubleTree ComposeLinkType Item
|
|||||||
useLoadedAmmo _ _ (cme,w) (_,Nothing) = (cme, w)
|
useLoadedAmmo _ _ (cme,w) (_,Nothing) = (cme, w)
|
||||||
useLoadedAmmo itmtree cr (cme,w) (mzid,Just (mz,x,magtree)) = (,) (cme & cmeSound .~ True) $
|
useLoadedAmmo itmtree cr (cme,w) (mzid,Just (mz,x,magtree)) = (,) (cme & cmeSound .~ True) $
|
||||||
removeAmmoFromMag x mid cr . makeMuzzleFlare mz itm cr $ case _mzEffect mz of
|
removeAmmoFromMag x mid cr . makeMuzzleFlare mz itm cr $ case _mzEffect mz of
|
||||||
MuzzleShootBullet -> shootBullet itm cr w (mz,x,mid)
|
MuzzleShootBullet -> shootBullet itmtree cr (mz,x,magtree) w
|
||||||
MuzzleLaser -> shootLaser' itm cr mz w
|
MuzzleLaser -> shootLaser' itm cr mz w
|
||||||
MuzzleTesla -> shootTeslaArc itm cr mz w
|
MuzzleTesla -> shootTeslaArc itm cr mz w
|
||||||
MuzzleTractor -> shootTractorBeam itm cr w
|
MuzzleTractor -> shootTractorBeam itm cr w
|
||||||
@@ -268,12 +272,46 @@ removeAmmoFromMag x mid cr = fromMaybe id $ do
|
|||||||
magid <- mid
|
magid <- mid
|
||||||
return $ cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix magid . itUse . amagLoadStatus . iaLoaded -~ x
|
return $ cWorld . lWorld . creatures . ix (_crID cr) . crInv . ix magid . itUse . amagLoadStatus . iaLoaded -~ x
|
||||||
|
|
||||||
shootBullet :: Item -> Creature -> World -> (Muzzle,Int,Maybe Int) -> World
|
getBulletType :: LabelDoubleTree ComposeLinkType Item
|
||||||
shootBullet itm cr w (mz,x,mid) = fromMaybe w $ do
|
-> LabelDoubleTree ComposeLinkType Item
|
||||||
magid <- mid
|
-> Muzzle
|
||||||
|
-> Creature
|
||||||
|
-> World
|
||||||
|
-> Maybe Bullet
|
||||||
|
getBulletType itmtree magtree mz cr w = magtree ^? ldtValue . itUse . amagParams . ampBullet
|
||||||
|
<&> buTrajectory .~ btraj
|
||||||
|
where
|
||||||
|
-- consider modifying other parameters here too
|
||||||
|
btraj = fromMaybe BasicBulletTrajectory $ do
|
||||||
|
targetingtree <- lookup WeaponTargetingLink (itmtree ^. ldtRight) -- left or right for these
|
||||||
|
tp <- targetingtree ^? ldtValue . itUse . tgPos . _Just
|
||||||
|
attree <- lookup AmmoTargetingLink (magtree ^. ldtLeft)
|
||||||
|
bt <- attree ^? ldtValue . itUse . btuBulletTrajectory
|
||||||
|
return $ getBulletTrajectory mz (itmtree ^. ldtValue) bt tp cr w
|
||||||
|
|
||||||
|
getBulletTrajectory :: Muzzle -> Item
|
||||||
|
-> BulletTrajectoryType -> Point2 -> Creature -> World -> BulletTrajectory
|
||||||
|
getBulletTrajectory mz itm bt tp cr w = case bt of
|
||||||
|
BasicBulletTrajectoryType -> BasicBulletTrajectory
|
||||||
|
FlechetteTrajectoryType -> FlechetteTrajectory tp
|
||||||
|
BezierTrajectoryType -> BezierTrajectory bulpos tp (mouseWorldPos (w ^. input) (w ^. wCam))
|
||||||
|
MagnetTrajectoryType -> MagnetTrajectory tp
|
||||||
|
where
|
||||||
|
bulpos = _crPos cr + rotateV (_crDir cr) (_mzPos mz + aimingWeaponZeroPos cr itm + V2 0 offset)
|
||||||
|
offset = case itm ^? itUse . heldParams . randomOffset of
|
||||||
|
Just x | x /= 0 -> fst . randomR (-x,x) $ _randGen w
|
||||||
|
_ -> 0
|
||||||
|
|
||||||
|
|
||||||
|
shootBullet :: LabelDoubleTree ComposeLinkType Item
|
||||||
|
-> Creature
|
||||||
|
-> (Muzzle,Int,LabelDoubleTree ComposeLinkType Item )
|
||||||
|
-> World
|
||||||
|
-> World
|
||||||
|
shootBullet itmtree cr (mz,x,magtree) w = fromMaybe w $ do
|
||||||
-- should be able to pass the magazine in from elsewhere?
|
-- should be able to pass the magazine in from elsewhere?
|
||||||
thebullet <- cr ^? crInv . ix magid . itUse . amagParams . ampBullet
|
thebullet <- getBulletType itmtree magtree mz cr w
|
||||||
return $ w & flip (foldl' (&)) (replicate x (makeBullet thebullet itm cr mz))
|
return $ flip (foldl' (&)) (replicate x (makeBullet thebullet (itmtree ^. ldtValue) cr mz)) w
|
||||||
-- & makeMuzzleFlare mz itm cr
|
-- & makeMuzzleFlare mz itm cr
|
||||||
-- & makeMuzzleSmoke mz itm cr
|
-- & makeMuzzleSmoke mz itm cr
|
||||||
-- where
|
-- where
|
||||||
@@ -310,82 +348,11 @@ mcUseHeld hit = case hit of
|
|||||||
LASGUN -> mcShootLaser
|
LASGUN -> mcShootLaser
|
||||||
_ -> \_ _ -> id
|
_ -> \_ _ -> id
|
||||||
|
|
||||||
useHeld :: Huse -> LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
--useHeld :: Huse -> LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
||||||
useHeld hu = case hu of
|
--useHeld hu = case hu of
|
||||||
HeldDoNothing -> const $ const id
|
-- HeldDoNothing -> const $ const id
|
||||||
-- HeldUseAmmoParams -> shootBullet
|
-- HeldDetectorEffect dt -> detectorEffect dt . _ldtValue
|
||||||
-- HeldOverNozzlesUseGasParams -> overNozzles useGasParams
|
-- HeldForceField -> useForceFieldGun . _ldtValue
|
||||||
-- HeldPJCreation -> usePjCreation
|
|
||||||
-- HeldPJCreationX _ -> usePjCreationX
|
|
||||||
-- HeldFireRemoteShell -> fireRemoteShell
|
|
||||||
HeldDetectorEffect dt -> detectorEffect dt . _ldtValue
|
|
||||||
-- HeldTeslaArc -> shootTeslaArc . _ldtValue
|
|
||||||
-- HeldLaser -> shootLaser . _ldtValue
|
|
||||||
-- HeldCircleLaser -> circleLaser . _ldtValue
|
|
||||||
-- HeldDualLaser -> shootDualLaser . _ldtValue
|
|
||||||
-- HeldTractor -> aTractorBeam . _ldtValue
|
|
||||||
-- HeldSonicWave -> aSonicWave
|
|
||||||
HeldForceField -> useForceFieldGun . _ldtValue
|
|
||||||
-- HeldShatter -> shootShatter . _ldtValue
|
|
||||||
-- HeldExplodeRemoteShell itid pjid -> const $ const $ explodeRemoteRocket itid pjid
|
|
||||||
|
|
||||||
--usePjCreation :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
|
||||||
--usePjCreation itm cr = fromMaybe id $ do
|
|
||||||
-- atype <- itm ^? ldtValue . itUse . heldAmmoTypes . ix 0
|
|
||||||
-- leftitms <- itm ^? ldtLeft
|
|
||||||
-- mag <- lookup (AmmoInLink 0 atype) leftitms
|
|
||||||
-- apm <- mag ^? ldtValue
|
|
||||||
-- muz <- itm ^? ldtValue . itUse . heldAim . aimMuzzles . ix 0
|
|
||||||
-- return $ createProjectile apm muz (_ldtValue itm) cr
|
|
||||||
|
|
||||||
--usePjCreationX :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
|
||||||
--usePjCreationX = undefined
|
|
||||||
--usePjCreationX ams itm cr = fromMaybe id $ do
|
|
||||||
-- muzs <- itm ^? itUse . heldAim . aimMuzzles
|
|
||||||
-- return $ foldr
|
|
||||||
-- f id (zip muzs ams)
|
|
||||||
-- where
|
|
||||||
-- f (muz,am) = (createProjectile am muz itm cr .)
|
|
||||||
|
|
||||||
--overNozzles ::
|
|
||||||
-- (Nozzle -> LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World) ->
|
|
||||||
-- LabelDoubleTree ComposeLinkType Item ->
|
|
||||||
-- Creature ->
|
|
||||||
-- World ->
|
|
||||||
-- World
|
|
||||||
--overNozzles = overNozzles' . overNozzle
|
|
||||||
|
|
||||||
--overNozzles' ::
|
|
||||||
-- (LabelDoubleTree ComposeLinkType Item -> Creature -> World -> Nozzle -> (World, Nozzle)) ->
|
|
||||||
-- LabelDoubleTree ComposeLinkType Item ->
|
|
||||||
-- Creature ->
|
|
||||||
-- World ->
|
|
||||||
-- World
|
|
||||||
--overNozzles' eff itm cr w = neww
|
|
||||||
-- & cWorld . lWorld . creatures . ix cid . crInv . ix i . itParams . sprayNozzles .~ newNozzles
|
|
||||||
-- where
|
|
||||||
-- it = itm ^. ldtValue
|
|
||||||
-- cid = _crID cr
|
|
||||||
-- i = w ^?! cWorld . lWorld . creatures . ix cid . crManipulation . manObject . inInventory . ispItem
|
|
||||||
-- (neww, newNozzles) = mapAccumR (eff itm cr) w $ _sprayNozzles (_itParams it)
|
|
||||||
|
|
||||||
--overNozzle ::
|
|
||||||
-- (Nozzle -> LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World) ->
|
|
||||||
-- LabelDoubleTree ComposeLinkType Item ->
|
|
||||||
-- Creature ->
|
|
||||||
-- World ->
|
|
||||||
-- Nozzle ->
|
|
||||||
-- (World, Nozzle)
|
|
||||||
--overNozzle eff itm cr w nz =
|
|
||||||
-- ( eff nz itm (cr & crDir +~ wa + na) w & randGen .~ g
|
|
||||||
-- , nz & nzCurrentWalkAngle .~ wa
|
|
||||||
-- )
|
|
||||||
-- where
|
|
||||||
-- na = _nzDir nz
|
|
||||||
-- (walkamount, g) = randomR (- aspeed, aspeed) (_randGen w)
|
|
||||||
-- aspeed = _nzWalkSpeed nz
|
|
||||||
-- maxa = _nzMaxWalkAngle nz
|
|
||||||
-- wa = min maxa $ max (negate maxa) (_nzCurrentWalkAngle nz + walkamount)
|
|
||||||
|
|
||||||
useGasParams :: Maybe Int -> Muzzle -> Item -> Creature -> World -> World
|
useGasParams :: Maybe Int -> Muzzle -> Item -> Creature -> World -> World
|
||||||
useGasParams mmagid mz itm cr w =
|
useGasParams mmagid mz itm cr w =
|
||||||
@@ -411,46 +378,17 @@ useGasParams mmagid mz itm cr w =
|
|||||||
gasCreate :: GasFuel -> GasCreate -> GasCreate
|
gasCreate :: GasFuel -> GasCreate -> GasCreate
|
||||||
gasCreate = const id
|
gasCreate = const id
|
||||||
|
|
||||||
|
|
||||||
doGenFloat :: RandomGen g => GenFloat -> g -> (Float, g)
|
doGenFloat :: RandomGen g => GenFloat -> g -> (Float, g)
|
||||||
doGenFloat (ConstFloat x) g = (x,g)
|
doGenFloat (ConstFloat x) g = (x,g)
|
||||||
doGenFloat (UniRandFloat x y) g = randomR (x,y) g
|
doGenFloat (UniRandFloat x y) g = randomR (x,y) g
|
||||||
|
|
||||||
--fireRemoteShell :: LabelDoubleTree ComposeLinkType Item -> Creature -> World -> World
|
--caneStickSoundChoice :: Item -> SoundID
|
||||||
--fireRemoteShell = undefined
|
--caneStickSoundChoice _ = tap3S
|
||||||
--fireRemoteShell :: [Item] -> Item -> Creature -> World -> World
|
|
||||||
--fireRemoteShell ams it cr w =
|
|
||||||
-- set
|
|
||||||
-- (cWorld . lWorld . creatures . ix cid . crInv . ix j . itUse . heldUse)
|
|
||||||
-- (HeldExplodeRemoteShell itid i)
|
|
||||||
-- $ addRemRocket w
|
|
||||||
-- where
|
|
||||||
-- itid = _itID it
|
|
||||||
-- i = IM.newKey $ w ^. cWorld . lWorld . props
|
|
||||||
-- cid = _crID cr
|
|
||||||
-- apm = fromMaybe (error "cannot find shell ammo projectile") $ do
|
|
||||||
-- ams ^? ix 0
|
|
||||||
-- addRemRocket =
|
|
||||||
-- makeShell apm
|
|
||||||
-- -- the following is unsafe!
|
|
||||||
-- (it ^?! itUse . heldAim . aimMuzzles . ix 0)
|
|
||||||
-- it
|
|
||||||
-- cr
|
|
||||||
-- [ PJRemoteShellCollisionCheck
|
|
||||||
-- , PJSetScope itid
|
|
||||||
-- , PJDecTimMvVel
|
|
||||||
-- , PJThrust 330 0
|
|
||||||
-- , PJRemoteDirection 340 0 cid itid
|
|
||||||
-- ]
|
|
||||||
-- j = cr ^?! crManipulation . manObject . inInventory . ispItem -- unsafe!! TODO change
|
|
||||||
|
|
||||||
caneStickSoundChoice :: Item -> SoundID
|
|
||||||
caneStickSoundChoice _ = tap3S
|
|
||||||
-- -- | (it ^?! itUse . heldConsumption . laSource . _InternalSource . iaLoaded) < 2 = tap3S
|
-- -- | (it ^?! itUse . heldConsumption . laSource . _InternalSource . iaLoaded) < 2 = tap3S
|
||||||
-- -- | otherwise = shotgunS
|
-- -- | otherwise = shotgunS
|
||||||
|
|
||||||
bangStickSoundChoice :: Item -> SoundID
|
--bangStickSoundChoice :: Item -> SoundID
|
||||||
bangStickSoundChoice = caneStickSoundChoice
|
--bangStickSoundChoice = caneStickSoundChoice
|
||||||
|
|
||||||
-- do
|
-- do
|
||||||
-- wth <- state $ randomR (1, 5)
|
-- wth <- state $ randomR (1, 5)
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ itemFromBase ibt = case ibt of
|
|||||||
ATTACH at -> itemFromAttachType at
|
ATTACH at -> itemFromAttachType at
|
||||||
AMMOMAG t -> itemFromAmmoMag t
|
AMMOMAG t -> itemFromAmmoMag t
|
||||||
TARGETING tt -> targetingScope tt
|
TARGETING tt -> targetingScope tt
|
||||||
|
HOMING btt -> bulletTargetingModule btt
|
||||||
|
|
||||||
itemFromAmmoMag :: AmmoMagType -> Item
|
itemFromAmmoMag :: AmmoMagType -> Item
|
||||||
itemFromAmmoMag at = case at of
|
itemFromAmmoMag at = case at of
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ import Dodge.Data.World
|
|||||||
import Dodge.Default.Item
|
import Dodge.Default.Item
|
||||||
import Dodge.Item.Weapon.Bullet
|
import Dodge.Item.Weapon.Bullet
|
||||||
|
|
||||||
megaTinMag :: Item
|
megaTinMag :: Int -> Item
|
||||||
megaTinMag = tinMag
|
megaTinMag x = tinMag
|
||||||
& itUse . amagLoadStatus . iaMax .~ 150000
|
& itUse . amagLoadStatus . iaMax .~ x
|
||||||
& itUse . amagLoadStatus . iaLoaded .~ 150000
|
& itUse . amagLoadStatus . iaLoaded .~ x
|
||||||
|
|
||||||
tinMag :: Item
|
tinMag :: Item
|
||||||
tinMag =
|
tinMag =
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ module Dodge.Item.Display (
|
|||||||
|
|
||||||
--import Control.Applicative
|
--import Control.Applicative
|
||||||
--import Control.Monad
|
--import Control.Monad
|
||||||
|
import ShortShow
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
import Dodge.Data.Creature
|
import Dodge.Data.Creature
|
||||||
--import Dodge.Item.Info
|
--import Dodge.Item.Info
|
||||||
@@ -71,6 +72,7 @@ itemBaseName itm = case _iyBase $ _itType itm of
|
|||||||
ATTACH ait -> showAttachItem ait itm
|
ATTACH ait -> showAttachItem ait itm
|
||||||
AMMOMAG ait -> show ait
|
AMMOMAG ait -> show ait
|
||||||
TARGETING tt -> show tt
|
TARGETING tt -> show tt
|
||||||
|
HOMING btt -> show btt
|
||||||
|
|
||||||
showAttachItem :: AttachType -> Item -> String
|
showAttachItem :: AttachType -> Item -> String
|
||||||
showAttachItem t itm = case t of
|
showAttachItem t itm = case t of
|
||||||
@@ -117,11 +119,12 @@ itemNumberDisplay cr itm = case iu of
|
|||||||
--ConsumeUse {_useAmount = x} -> [show $ x ^. getItAmount]
|
--ConsumeUse {_useAmount = x} -> [show $ x ^. getItAmount]
|
||||||
ConsumeUse {} -> []
|
ConsumeUse {} -> []
|
||||||
AttachUse {} -> [] --[showReloadProgress cr itm]
|
AttachUse {} -> [] --[showReloadProgress cr itm]
|
||||||
AmmoMagUse {} -> [showLoadedAmount itm]
|
AmmoMagUse {} -> [maybe "" shortShow $ itm ^? itUse . amagLoadStatus . iaLoaded]
|
||||||
ScopeUse OpticScope {_opticZoom = x} -> [show x]
|
ScopeUse OpticScope {_opticZoom = x} -> [shortShow x]
|
||||||
ScopeUse {} -> []
|
ScopeUse {} -> []
|
||||||
TargetingUse {_tgPos = mp} -> [maybe "" show mp]
|
TargetingUse {_tgPos = mp} -> [maybe "" shortShow mp]
|
||||||
-- this could be cleaner here...
|
-- this could be cleaner here...
|
||||||
|
BulletTrajectoryUse {} -> mempty
|
||||||
where
|
where
|
||||||
iu = itm ^?! itUse
|
iu = itm ^?! itUse
|
||||||
|
|
||||||
@@ -134,51 +137,6 @@ showEquipmentNumber _ itm = case _eeUse ee of
|
|||||||
where
|
where
|
||||||
ee = itm ^?! itUse . equipEffect
|
ee = itm ^?! itUse . equipEffect
|
||||||
|
|
||||||
--showAmmoSource :: Creature -> Item -> [String]
|
|
||||||
--showAmmoSource cr itm = fromMaybe ["FAIL"] $ do
|
|
||||||
-- eu <- itm ^? itUse . equipEffect . eeUse
|
|
||||||
-- atype <- eu ^? euseAmmoSourceType
|
|
||||||
-- x <- fmap showIntKMG' $ eu ^? euseAmmoAmount
|
|
||||||
-- i <- itm ^? itLocation . ipInvID
|
|
||||||
-- ( do
|
|
||||||
-- at' <- cr ^? crInv . ix (i + 1) . itUse . heldConsumption . laSourceType
|
|
||||||
-- as <- cr ^? crInv . ix (i + 1) . itUse . heldConsumption . laSource
|
|
||||||
-- guard (at' == atype && as == AboveSource)
|
|
||||||
-- return ["vvvv", x]
|
|
||||||
-- )
|
|
||||||
-- <|> Just [x]
|
|
||||||
|
|
||||||
showLoadedAmount :: Item -> String
|
|
||||||
showLoadedAmount itm = maybe [] show $ itm ^? itUse . amagLoadStatus . iaLoaded
|
|
||||||
|
|
||||||
--showReloadProgress :: Creature -> Item -> String
|
|
||||||
--showReloadProgress _ itm = fromMaybe [] $ do
|
|
||||||
-- ia <- itm ^? itUse . amagLoadStatus
|
|
||||||
-- return $ case ia ^? iaProgress . _Just . ix 0 of
|
|
||||||
-- Nothing -> maybe "" show $ ia ^? iaLoaded
|
|
||||||
-- Just la -> showLoadActionType la ia
|
|
||||||
--showReloadProgress :: Creature -> Item -> String
|
|
||||||
--showReloadProgress cr itm = case ic ^? laSource of
|
|
||||||
-- Just (InternalSource ia) -> case ia ^? iaProgress . _Just . ix 0 of
|
|
||||||
-- Nothing -> maybe "" show $ ic ^? laSource . _InternalSource . iaLoaded
|
|
||||||
-- Just la -> showLoadActionType la (_laSource ic)
|
|
||||||
-- Just AboveSource -> fromMaybe "^^^^" $ do
|
|
||||||
-- i <- fmap (subtract 1) $ itm ^? itLocation . ipInvID
|
|
||||||
-- _ <- cr ^? crInv . ix i . itUse . equipEffect . eeUse . euseAmmoAmount
|
|
||||||
-- return ""
|
|
||||||
-- _ -> ""
|
|
||||||
-- where
|
|
||||||
-- ic = itm ^?! itUse . heldConsumption
|
|
||||||
|
|
||||||
--showLoadActionType :: LoadAction -> ReloadStatus -> String
|
|
||||||
--showLoadActionType la as = case la of
|
|
||||||
-- LoadEject{} -> "E"
|
|
||||||
-- LoadInsert{} -> "L"
|
|
||||||
-- LoadAdd{} -> "A" ++ x
|
|
||||||
-- LoadPrime{} -> "P"
|
|
||||||
-- where
|
|
||||||
-- x = maybe "" show $ as ^? iaLoaded
|
|
||||||
|
|
||||||
maybeWarmupStatus :: Item -> Maybe String
|
maybeWarmupStatus :: Item -> Maybe String
|
||||||
maybeWarmupStatus it = case it ^? itUse . heldDelay . warmMax of
|
maybeWarmupStatus it = case it ^? itUse . heldDelay . warmMax of
|
||||||
Nothing -> Nothing
|
Nothing -> Nothing
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ itemSPic it =
|
|||||||
ATTACH {} -> defSPic
|
ATTACH {} -> defSPic
|
||||||
AMMOMAG {} -> defSPic
|
AMMOMAG {} -> defSPic
|
||||||
TARGETING {} -> defSPic
|
TARGETING {} -> defSPic
|
||||||
|
HOMING {} -> defSPic
|
||||||
|
|
||||||
equipItemSPic :: EquipItemType -> Item -> SPic
|
equipItemSPic :: EquipItemType -> Item -> SPic
|
||||||
equipItemSPic et _ = case et of
|
equipItemSPic et _ = case et of
|
||||||
|
|||||||
@@ -41,8 +41,17 @@ basePartiallyComposedItem itm = case itm ^. itType . iyBase of
|
|||||||
TARGETING {} -> (itm,WeaponTargetingSF, LinkTest (const Nothing) (const Nothing))
|
TARGETING {} -> (itm,WeaponTargetingSF, LinkTest (const Nothing) (const Nothing))
|
||||||
ATTACH ZOOMSCOPE -> (itm,WeaponScopeSF, LinkTest (const Nothing) (const Nothing))
|
ATTACH ZOOMSCOPE -> (itm,WeaponScopeSF, LinkTest (const Nothing) (const Nothing))
|
||||||
ATTACH HOMINGMODULE -> (itm,AmmoTargetingSF ProjectileAmmo, LinkTest (const Nothing) (const Nothing))
|
ATTACH HOMINGMODULE -> (itm,AmmoTargetingSF ProjectileAmmo, LinkTest (const Nothing) (const Nothing))
|
||||||
|
HOMING {}
|
||||||
|
-> (itm,AmmoTargetingSF BulletAmmo, LinkTest (const Nothing) (const Nothing))
|
||||||
ATTACH REMOTESCREEN -> (itm,RemoteScreenSF, LinkTest (const Nothing) (const Nothing))
|
ATTACH REMOTESCREEN -> (itm,RemoteScreenSF, LinkTest (const Nothing) (const Nothing))
|
||||||
_ -> (itm,UncomposableIsolateSF, LinkTest (const Nothing) (const Nothing))
|
ATTACH BULLETSYNTHESIZER -> (itm,AmmoModifierSF BulletAmmo, LinkTest (const Nothing) (const Nothing))
|
||||||
|
LEFT {} -> isolate
|
||||||
|
EQUIP {} -> isolate
|
||||||
|
CONSUMABLE {} -> isolate
|
||||||
|
CRAFT {} -> isolate
|
||||||
|
-- _ ->
|
||||||
|
where
|
||||||
|
isolate = (itm,UncomposableIsolateSF, LinkTest (const Nothing) (const Nothing))
|
||||||
|
|
||||||
ammoComposedItem :: Item -> PartiallyComposedItem
|
ammoComposedItem :: Item -> PartiallyComposedItem
|
||||||
ammoComposedItem itm = fromMaybe (error "in ammoComposedItem, wrong item") $ do
|
ammoComposedItem itm = fromMaybe (error "in ammoComposedItem, wrong item") $ do
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ teslaGun =
|
|||||||
& itParams .~ teslaParams
|
& itParams .~ teslaParams
|
||||||
-- & itUse . heldUse .~ HeldTeslaArc --shootTeslaArc
|
-- & itUse . heldUse .~ HeldTeslaArc --shootTeslaArc
|
||||||
& itUse . heldDelay .~ NoDelay
|
& itUse . heldDelay .~ NoDelay
|
||||||
& itUse . heldMods .~ PistolMod
|
-- & itUse . heldMods .~ PistolMod
|
||||||
& itUse . heldAim . aimWeight .~ 6
|
& itUse . heldAim . aimWeight .~ 6
|
||||||
& itUse . heldAim . aimStance .~ TwoHandFlat
|
& itUse . heldAim . aimStance .~ TwoHandFlat
|
||||||
-- & itUse . heldAim . aimMuzPos .~ 4
|
-- & itUse . heldAim . aimMuzPos .~ 4
|
||||||
@@ -44,7 +44,7 @@ lasGun :: Item
|
|||||||
lasGun =
|
lasGun =
|
||||||
defaultHeldItem
|
defaultHeldItem
|
||||||
& itType . iyModules .~ batteryModules
|
& itType . iyModules .~ batteryModules
|
||||||
& itUse . heldMods .~ PistolMod
|
-- & itUse . heldMods .~ PistolMod
|
||||||
& itUse . heldParams .~ BeamShooterParams (Just (tone440sawtoothquietS,2))
|
& itUse . heldParams .~ BeamShooterParams (Just (tone440sawtoothquietS,2))
|
||||||
& itUse . heldAmmoTypes .~ singleAmmo ElectricalAmmo
|
& itUse . heldAmmoTypes .~ singleAmmo ElectricalAmmo
|
||||||
& itUse . heldDelay .~ NoDelay
|
& itUse . heldDelay .~ NoDelay
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ bangCone =
|
|||||||
& itDimension . dimRad .~ 8
|
& itDimension . dimRad .~ 8
|
||||||
& itDimension . dimCenter .~ V3 5 0 0
|
& itDimension . dimCenter .~ V3 5 0 0
|
||||||
& itUse . heldDelay . rateMax .~ 20
|
& itUse . heldDelay . rateMax .~ 20
|
||||||
& itUse . heldMods .~ PistolMod
|
-- & itUse . heldMods .~ PistolMod
|
||||||
-- & itUse . heldAim . aimHandlePos .~ 5
|
-- & itUse . heldAim . aimHandlePos .~ 5
|
||||||
& itUse . heldAim . aimMuzzles
|
& itUse . heldAim . aimMuzzles
|
||||||
.~ replicate 15 (Muzzle (V2 15 0) 0 0.5 0 DefaultFlareType MuzzleShootBullet)
|
.~ replicate 15 (Muzzle (V2 15 0) 0 0.5 0 DefaultFlareType MuzzleShootBullet)
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ launcher =
|
|||||||
& itUse . heldDelay . rateMax .~ 20
|
& itUse . heldDelay . rateMax .~ 20
|
||||||
-- & itUse . heldUse .~ HeldPJCreation --usePjCreation
|
-- & itUse . heldUse .~ HeldPJCreation --usePjCreation
|
||||||
-- & itUse . heldMods .~ LauncherMod
|
-- & itUse . heldMods .~ LauncherMod
|
||||||
& itUse . heldMods .~ PistolMod
|
-- & itUse . heldMods .~ PistolMod
|
||||||
& itUse . heldAim . aimWeight .~ 8
|
& itUse . heldAim . aimWeight .~ 8
|
||||||
& itUse . heldAim . aimRange .~ 0.5
|
& itUse . heldAim . aimRange .~ 0.5
|
||||||
& itUse . heldAim . aimStance .~ TwoHandOver
|
& itUse . heldAim . aimStance .~ TwoHandOver
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ flameThrower =
|
|||||||
-- & itUse . heldUse .~ HeldOverNozzlesUseGasParams -- overNozzles useGasParams
|
-- & itUse . heldUse .~ HeldOverNozzlesUseGasParams -- overNozzles useGasParams
|
||||||
& itUse . heldDelay .~ NoDelay
|
& itUse . heldDelay .~ NoDelay
|
||||||
-- & itUse . heldMods .~ FlameThrowerMod
|
-- & itUse . heldMods .~ FlameThrowerMod
|
||||||
& itUse . heldMods .~ PistolMod
|
-- & itUse . heldMods .~ PistolMod
|
||||||
& itUse . heldAim . aimWeight .~ 5
|
& itUse . heldAim . aimWeight .~ 5
|
||||||
& itUse . heldAim . aimZoom .~ defaultItZoom{_izMax = 5, _izMin = 1.5}
|
& itUse . heldAim . aimZoom .~ defaultItZoom{_izMax = 5, _izMin = 1.5}
|
||||||
& itUse . heldAim . aimStance .~ TwoHandUnder
|
& itUse . heldAim . aimStance .~ TwoHandUnder
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ bangStick i =
|
|||||||
& itDimension . dimCenter .~ V3 5 0 0
|
& itDimension . dimCenter .~ V3 5 0 0
|
||||||
& itUse . heldDelay . rateMax .~ 8
|
& itUse . heldDelay . rateMax .~ 8
|
||||||
-- & itUse . heldMods .~ BangStickMod
|
-- & itUse . heldMods .~ BangStickMod
|
||||||
& itUse . heldMods .~ PistolMod
|
-- & itUse . heldMods .~ PistolMod
|
||||||
& itUse . heldAim . aimMuzzles
|
& itUse . heldAim . aimMuzzles
|
||||||
.~ [Muzzle (V2 10 0) a 0.01 0 DefaultFlareType MuzzleShootBullet | a <- spreadAroundCenter i baseStickSpread]
|
.~ [Muzzle (V2 10 0) a 0.01 0 DefaultFlareType MuzzleShootBullet | a <- spreadAroundCenter i baseStickSpread]
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ pistol =
|
|||||||
bangStick 1
|
bangStick 1
|
||||||
-- & itUse . heldAmmoTypes .~ [BulletAmmo]
|
-- & itUse . heldAmmoTypes .~ [BulletAmmo]
|
||||||
& itUse . heldDelay . rateMax .~ 6
|
& itUse . heldDelay . rateMax .~ 6
|
||||||
& itUse . heldMods .~ PistolMod
|
-- & itUse . heldMods .~ PistolMod
|
||||||
& itUse . heldAim . aimMuzzles . ix 0 . mzPos %~ const (V2 10 0)
|
& itUse . heldAim . aimMuzzles . ix 0 . mzPos %~ const (V2 10 0)
|
||||||
& itUse . heldAim . aimMuzzles . ix 0 . mzInaccuracy %~ const 0.05
|
& itUse . heldAim . aimMuzzles . ix 0 . mzInaccuracy %~ const 0.05
|
||||||
& itUse . heldAim . aimMuzzles . ix 0 . mzFlareType %~ const PistolFlare
|
& itUse . heldAim . aimMuzzles . ix 0 . mzFlareType %~ const PistolFlare
|
||||||
@@ -53,7 +53,7 @@ pistol =
|
|||||||
autoPistol :: Item
|
autoPistol :: Item
|
||||||
autoPistol =
|
autoPistol =
|
||||||
pistol
|
pistol
|
||||||
& itUse . heldMods .~ PistolMod
|
-- & itUse . heldMods .~ PistolMod
|
||||||
& itUse . heldTriggerType .~ AutoTrigger
|
& itUse . heldTriggerType .~ AutoTrigger
|
||||||
& itUse . heldParams . bulGunSound ?~ (tap1S,0)
|
& itUse . heldParams . bulGunSound ?~ (tap1S,0)
|
||||||
& itType . iyBase .~ HELD AUTOPISTOL
|
& itType . iyBase .~ HELD AUTOPISTOL
|
||||||
@@ -64,7 +64,7 @@ machinePistol =
|
|||||||
autoPistol
|
autoPistol
|
||||||
& itUse . heldDelay .~ WarmUpNoDelay {_warmTime = 0, _warmMax = 50, _warmSound = crankSlowS}
|
& itUse . heldDelay .~ WarmUpNoDelay {_warmTime = 0, _warmMax = 50, _warmSound = crankSlowS}
|
||||||
--rateMax .~ 2
|
--rateMax .~ 2
|
||||||
& itUse . heldMods .~ PistolMod -- (ammoCheckI : machinePistolAfterHamMods)
|
-- & itUse . heldMods .~ PistolMod -- (ammoCheckI : machinePistolAfterHamMods)
|
||||||
& itType . iyBase .~ HELD MACHINEPISTOL
|
& itType . iyBase .~ HELD MACHINEPISTOL
|
||||||
& itType . iyModules . at ModAutoMag .~ Nothing
|
& itType . iyModules . at ModAutoMag .~ Nothing
|
||||||
& itUse . heldParams . recoil .~ 20
|
& itUse . heldParams . recoil .~ 20
|
||||||
@@ -72,7 +72,7 @@ machinePistol =
|
|||||||
smg :: Item
|
smg :: Item
|
||||||
smg =
|
smg =
|
||||||
autoPistol -- & some parameter affecting stability
|
autoPistol -- & some parameter affecting stability
|
||||||
& itUse . heldMods .~ PistolMod --(ammoCheckI : smgAfterHamMods)
|
-- & itUse . heldMods .~ PistolMod --(ammoCheckI : smgAfterHamMods)
|
||||||
& itType . iyBase .~ HELD SMG
|
& itType . iyBase .~ HELD SMG
|
||||||
& itUse . heldAim . aimStance .~ TwoHandUnder
|
& itUse . heldAim . aimStance .~ TwoHandUnder
|
||||||
& itUse . heldAim . aimMuzzles . ix 0 . mzPos .~ V2 20 0
|
& itUse . heldAim . aimMuzzles . ix 0 . mzPos .~ V2 20 0
|
||||||
|
|||||||
@@ -44,20 +44,6 @@ showInt i = case i of
|
|||||||
12 -> "a dozen"
|
12 -> "a dozen"
|
||||||
_ -> "more than a dozen"
|
_ -> "more than a dozen"
|
||||||
|
|
||||||
showIntKMG :: Int -> String
|
|
||||||
showIntKMG x
|
|
||||||
| x < 1000 = show x
|
|
||||||
| x < 1000000 = show (x `div` 1000) ++ "K"
|
|
||||||
| x < 1000000000 = show (x `div` 1000000) ++ "M"
|
|
||||||
| otherwise = show (x `div` 1000000000) ++ "G"
|
|
||||||
|
|
||||||
showIntKMG' :: Int -> String
|
|
||||||
showIntKMG' x
|
|
||||||
| x < 1000 = show x
|
|
||||||
| x < 1000000 = take 3 (show ((fromIntegral x :: Float) / 1000)) ++ "K"
|
|
||||||
| x < 1000000000 = take 3 (show ((fromIntegral x :: Float) / 1000000)) ++ "M"
|
|
||||||
| otherwise = take 3 (show ((fromIntegral x :: Float) / 1000000000)) ++ "G"
|
|
||||||
|
|
||||||
heldInfo :: HeldItemType -> String
|
heldInfo :: HeldItemType -> String
|
||||||
heldInfo hit = case hit of
|
heldInfo hit = case hit of
|
||||||
BANGSTICK 1 -> "A firearm with a short barrel that requires reloading after each shot."
|
BANGSTICK 1 -> "A firearm with a short barrel that requires reloading after each shot."
|
||||||
|
|||||||
@@ -14,3 +14,4 @@ itemInvColor itm = case itm ^. itType . iyBase of
|
|||||||
ATTACH {} -> orange
|
ATTACH {} -> orange
|
||||||
TARGETING {} -> chartreuse
|
TARGETING {} -> chartreuse
|
||||||
AMMOMAG {} -> greyN 0.8
|
AMMOMAG {} -> greyN 0.8
|
||||||
|
HOMING {} -> rose
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ module Dodge.Item.Scope (
|
|||||||
targetingScope,
|
targetingScope,
|
||||||
remoteScreen,
|
remoteScreen,
|
||||||
homingModule,
|
homingModule,
|
||||||
|
fletchingModule,
|
||||||
|
bulletTargetingModule,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
@@ -28,6 +30,15 @@ homingModule =
|
|||||||
& itType . iyBase .~ ATTACH HOMINGMODULE
|
& itType . iyBase .~ ATTACH HOMINGMODULE
|
||||||
& itUse .~ AttachUse Nothing
|
& itUse .~ AttachUse Nothing
|
||||||
|
|
||||||
|
fletchingModule :: Item
|
||||||
|
fletchingModule = bulletTargetingModule FlechetteTrajectoryType
|
||||||
|
|
||||||
|
bulletTargetingModule :: BulletTrajectoryType -> Item
|
||||||
|
bulletTargetingModule btt =
|
||||||
|
defaultHeldItem
|
||||||
|
& itType . iyBase .~ HOMING btt
|
||||||
|
& itUse .~ BulletTrajectoryUse btt
|
||||||
|
|
||||||
remoteScreen :: Item
|
remoteScreen :: Item
|
||||||
remoteScreen =
|
remoteScreen =
|
||||||
defaultHeldItem
|
defaultHeldItem
|
||||||
|
|||||||
+26
-1
@@ -1,4 +1,6 @@
|
|||||||
module ShortShow where
|
module ShortShow
|
||||||
|
( shortShow
|
||||||
|
) where
|
||||||
import Geometry
|
import Geometry
|
||||||
|
|
||||||
--import Data.Typeable
|
--import Data.Typeable
|
||||||
@@ -13,5 +15,28 @@ instance ShortShow a => ShortShow (V2 a) where
|
|||||||
instance ShortShow Float where
|
instance ShortShow Float where
|
||||||
shortShow x = showFFloat (Just 2) x ""
|
shortShow x = showFFloat (Just 2) x ""
|
||||||
|
|
||||||
|
instance ShortShow Int where
|
||||||
|
shortShow x
|
||||||
|
| x < k = show x
|
||||||
|
| x < m = fdiv x k "K"
|
||||||
|
| x < g = fdiv x m "M"
|
||||||
|
| x < t = fdiv x g "G"
|
||||||
|
| x < p = fdiv x t "T"
|
||||||
|
| otherwise = show x ++ "P"
|
||||||
|
|
||||||
|
fdiv :: Int -> Int -> String -> String
|
||||||
|
fdiv x y s = removeDot (take 3 (show ((fromIntegral x / fromIntegral y)::Float))) ++ s
|
||||||
|
|
||||||
|
removeDot :: String -> String
|
||||||
|
removeDot (a:b:'.':[]) = a:b:[]
|
||||||
|
removeDot xs = xs
|
||||||
|
|
||||||
|
k,m,g,t,p :: Int
|
||||||
|
k = 10 ^ (3 :: Int)
|
||||||
|
m = 10 ^ (6 :: Int)
|
||||||
|
g = 10 ^ (9 :: Int)
|
||||||
|
t = 10 ^ (12:: Int)
|
||||||
|
p = 10 ^ (15:: Int)
|
||||||
|
|
||||||
instance (ShortShow a,ShortShow b) => ShortShow (a,b) where
|
instance (ShortShow a,ShortShow b) => ShortShow (a,b) where
|
||||||
shortShow (a,b) = '(' : shortShow a ++ "," ++ shortShow b ++ ")"
|
shortShow (a,b) = '(' : shortShow a ++ "," ++ shortShow b ++ ")"
|
||||||
|
|||||||
Reference in New Issue
Block a user