Improve click detectors
Introduce "gadgets" as a structural function, for items that can be used when held and when not held. Click detectors are such an item. Make click detectors correctly attach and use up batteries when used.
This commit is contained in:
@@ -14,6 +14,7 @@ import Linear.Quaternion (Quaternion (..))
|
||||
|
||||
data ComposeLinkType
|
||||
= AmmoInLink Int AmmoType
|
||||
| TriggerLink
|
||||
| AmmoModLink
|
||||
| AmmoTargetingLink
|
||||
| AmmoPayloadLink
|
||||
@@ -31,6 +32,7 @@ data ItemStructuralFunction
|
||||
| GadgetPlatformSF
|
||||
| WeaponScopeSF
|
||||
| WeaponTargetingSF
|
||||
| TriggerSF
|
||||
| AugmentedHUDSF
|
||||
| AmmoMagSF AmmoType
|
||||
| RemoteScreenSF
|
||||
|
||||
@@ -153,6 +153,11 @@ data MuzzleEffect
|
||||
| MuzzleDetector
|
||||
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||
|
||||
data AmmoPerShot
|
||||
= UseExactly {_useExactly :: Int}
|
||||
| UseUpTo {_useUpTo :: Int}
|
||||
deriving (Eq, Ord, Show, Read) --Generic, Flat)
|
||||
|
||||
data Muzzle = Muzzle
|
||||
{ _mzPos :: V2 Float
|
||||
, _mzRot :: Float
|
||||
@@ -160,6 +165,7 @@ data Muzzle = Muzzle
|
||||
, _mzAmmoSlot :: Int
|
||||
, _mzFlareType :: FlareType
|
||||
, _mzEffect :: MuzzleEffect
|
||||
, _mzAmmoPerShot :: AmmoPerShot
|
||||
-- , _mzChargeRequirement :: Maybe Int
|
||||
-- , _mzRecoil :: Float
|
||||
-- , _mzTorque :: Float
|
||||
@@ -194,11 +200,13 @@ makeLenses ''HeldParams
|
||||
makeLenses ''AttachParams
|
||||
makeLenses ''AmmoParams
|
||||
makeLenses ''MuzzleEffect
|
||||
makeLenses ''AmmoPerShot
|
||||
deriveJSON defaultOptions ''MuzzleEffect
|
||||
deriveJSON defaultOptions ''FlareType
|
||||
deriveJSON defaultOptions ''TriggerType
|
||||
deriveJSON defaultOptions ''AmmoParams
|
||||
deriveJSON defaultOptions ''HeldParams
|
||||
deriveJSON defaultOptions ''AmmoPerShot
|
||||
deriveJSON defaultOptions ''Muzzle
|
||||
deriveJSON defaultOptions ''AimStance
|
||||
|
||||
|
||||
Reference in New Issue
Block a user