diff --git a/ghcidOutput b/ghcidOutput index 2ba7a7edb..a6f7b5561 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1,8 +1,12 @@ -/home/justin/Haskell/loop/src/Dodge/Data/Item/Use/Consumption/Ammo.hs:53:27-44: error: - • Not in scope: type constructor or class ‘ProjectileCreate’ - Perhaps you meant one of these: - ‘ProjectileUpdate’ (line 21), ‘ProjectileDraw’ (line 18) - • In the Template Haskell quotation ''ProjectileCreate +/home/justin/Haskell/loop/src/Dodge/Item/Display.hs:(109,28)-(121,21): warning: [-Wincomplete-patterns] + Pattern match(es) are non-exhaustive + In a case alternative: Patterns not matched: TargetingUse _ _ _ + | +109 | itemNumberDisplay cr itm = case iu of + | ^^^^^^^^^^... +/home/justin/Haskell/loop/src/Dodge/Creature/Impulse/UseItem.hs:(36,22)-(46,19): warning: [-Wincomplete-patterns] + Pattern match(es) are non-exhaustive + In a case alternative: Patterns not matched: TargetingUse _ _ _ | -53 | deriveJSON defaultOptions ''ProjectileCreate - | ^^^^^^^^^^^^^^^^^^ +36 | itemEffect cr it w = case it ^. ldtValue . itUse of + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^... diff --git a/src/Dodge/Creature.hs b/src/Dodge/Creature.hs index 8d63d0552..d75b1c645 100644 --- a/src/Dodge/Creature.hs +++ b/src/Dodge/Creature.hs @@ -240,6 +240,12 @@ inventoryX c = case c of ] 'P' -> [burstRifle , tinMag, bulletSynthesizer] 'T' -> testInventory + 'U' -> + [ targetingScope TARGETLASER + , launcher + , megaShellMag + , homingModule + ] _ -> [] testInventory :: [Item] diff --git a/src/Dodge/Data/ComposedItem.hs b/src/Dodge/Data/ComposedItem.hs index e2c30dfaa..94cc33318 100644 --- a/src/Dodge/Data/ComposedItem.hs +++ b/src/Dodge/Data/ComposedItem.hs @@ -15,6 +15,7 @@ import Dodge.Data.Item data ComposeLinkType = AmmoInLink Int AmmoType | AmmoModLink + | AmmoTargetingLink | WeaponScopeLink | WeaponTargetingLink | RemoteScreenLink @@ -28,15 +29,7 @@ data ItemStructuralFunction | RemoteScreenSF | UncomposableIsolateSF | AmmoModifierSF AmmoType - deriving (Eq,Ord,Show,Read) - -data ComposedItem = WeaponCI - | WeaponScopeCI - | WeaponTargetingCI - | AmmoModifierCI AmmoType - | AmmoCI AmmoType - | UncomposableCI - | RocketRemoteScreenCI + | AmmoTargetingSF AmmoType deriving (Eq,Ord,Show,Read) type PartiallyComposedItem = (Item, ItemStructuralFunction, LinkTest) @@ -55,6 +48,4 @@ data LinkUpdate = LinkUpdate makeLenses ''LinkTest makeLenses ''LinkUpdate -makeLenses ''ComposedItem -deriveJSON defaultOptions ''ComposedItem deriveJSON defaultOptions ''ComposeLinkType diff --git a/src/Dodge/Data/Item/Combine.hs b/src/Dodge/Data/Item/Combine.hs index baf38aa10..b820f4f96 100644 --- a/src/Dodge/Data/Item/Combine.hs +++ b/src/Dodge/Data/Item/Combine.hs @@ -98,8 +98,8 @@ data AttachType = ZOOMSCOPE | TARGETATTACH {_ibtAttachTarget :: TargetType} | BULLETSYNTHESIZER - | ROCKETHOMER | REMOTESCREEN + | HOMINGMODULE -- | BULPAYLOADATTACH -- | BULTRAJECTORYATTACH deriving (Eq, Ord, Show, Read) diff --git a/src/Dodge/Data/Item/Use.hs b/src/Dodge/Data/Item/Use.hs index 3c1ceef99..4feac9afd 100644 --- a/src/Dodge/Data/Item/Use.hs +++ b/src/Dodge/Data/Item/Use.hs @@ -73,6 +73,11 @@ data ItemUse { -- | a camera offset _scopeScope :: Scope } + | TargetingUse + { _tgPos :: Maybe Point2 + , _tgID :: Maybe Int + , _tgActive :: Bool + } deriving (Eq, Show, Read) --Generic, Flat) data TriggerType diff --git a/src/Dodge/HeldUse.hs b/src/Dodge/HeldUse.hs index 9411a44e6..01cabb65d 100644 --- a/src/Dodge/HeldUse.hs +++ b/src/Dodge/HeldUse.hs @@ -138,6 +138,7 @@ loadMuzzle t@(LDT _ l _) mz = fromMaybe (t,Nothing) $ do (i,(_,mag)) <- findWithIx (isAmmoIntLink as . fst) l availableammo <- mag ^? ldtValue . itUse . amagLoadStatus . iaLoaded let usedammo = min amamount availableammo + guard $ usedammo > 0 return (t & ldtLeft . ix i . _2 . ldtValue . itUse . amagLoadStatus . iaLoaded -~ usedammo , Just (mz, usedammo, mag) ) diff --git a/src/Dodge/Item.hs b/src/Dodge/Item.hs index 7c8d2ebf7..de85e36f8 100644 --- a/src/Dodge/Item.hs +++ b/src/Dodge/Item.hs @@ -42,7 +42,8 @@ itemFromAttachType at = case at of TARGETATTACH tt -> targetingScope tt BULLETSYNTHESIZER -> bulletSynthesizer REMOTESCREEN -> remoteScreen - ROCKETHOMER -> rocketHomer +-- ROCKETHOMER -> rocketHomer + HOMINGMODULE -> homingModule itemFromConsumableType :: ConsumableItemType -> Item diff --git a/src/Dodge/Item/Ammo.hs b/src/Dodge/Item/Ammo.hs index bb29c3d60..5dac0072a 100644 --- a/src/Dodge/Item/Ammo.hs +++ b/src/Dodge/Item/Ammo.hs @@ -104,8 +104,3 @@ bulletSynthesizer :: Item bulletSynthesizer = defaultHeldItem & itType . iyBase .~ ATTACH BULLETSYNTHESIZER & itUse .~ AttachUse Nothing - -rocketHomer :: Item -rocketHomer = defaultHeldItem - & itType . iyBase .~ ATTACH ROCKETHOMER - & itUse .~ AttachUse Nothing diff --git a/src/Dodge/Item/Display.hs b/src/Dodge/Item/Display.hs index 3f5c41ad2..ad9121169 100644 --- a/src/Dodge/Item/Display.hs +++ b/src/Dodge/Item/Display.hs @@ -77,7 +77,7 @@ showAttachItem t itm = case t of TARGETATTACH x -> show x BULLETSYNTHESIZER -> "BSYNTH" REMOTESCREEN -> "REMOTE SCREEN " ++ show (itm ^? itUse . atLinkedProjectile . _Just) - ROCKETHOMER -> "HOMING MOD" + HOMINGMODULE -> "HOMING MOD" showEquipItem :: EquipItemType -> String showEquipItem eit = case eit of diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index d593f6502..e7bbcdc13 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -40,7 +40,7 @@ basePartiallyComposedItem itm = case itm ^. itType . iyBase of AMMOMAG _ -> ammoComposedItem itm ATTACH TARGETATTACH{} -> (itm,WeaponTargetingSF, LinkTest (const Nothing) (const Nothing)) ATTACH ZOOMSCOPE -> (itm,WeaponScopeSF, LinkTest (const Nothing) (const Nothing)) - ATTACH ROCKETHOMER -> (itm,AmmoModifierSF ProjectileAmmo, LinkTest (const Nothing) (const Nothing)) + ATTACH HOMINGMODULE -> (itm,AmmoTargetingSF ProjectileAmmo, LinkTest (const Nothing) (const Nothing)) ATTACH REMOTESCREEN -> (itm,RemoteScreenSF, LinkTest (const Nothing) (const Nothing)) _ -> (itm,UncomposableIsolateSF, LinkTest (const Nothing) (const Nothing)) @@ -51,6 +51,7 @@ ammoComposedItem itm = fromMaybe (error "in ammoComposedItem, wrong item") $ do , AmmoMagSF atype , useBreakListsLinkTest [(AmmoModifierSF atype, AmmoModLink) + ,(AmmoTargetingSF atype, AmmoTargetingLink) ,(RemoteScreenSF, RemoteScreenLink) ] [] diff --git a/src/Dodge/Item/Scope.hs b/src/Dodge/Item/Scope.hs index 4963a1a3a..1c012caf6 100644 --- a/src/Dodge/Item/Scope.hs +++ b/src/Dodge/Item/Scope.hs @@ -2,6 +2,7 @@ module Dodge.Item.Scope ( zoomScope, targetingScope, remoteScreen, + homingModule, ) where import Control.Lens @@ -21,6 +22,12 @@ targetingScope tt = & itType . iyBase .~ ATTACH (TARGETATTACH tt) & itUse .~ AttachUse Nothing +homingModule :: Item +homingModule = + defaultHeldItem + & itType . iyBase .~ ATTACH HOMINGMODULE + & itUse .~ AttachUse Nothing + remoteScreen :: Item remoteScreen = defaultHeldItem