Move towards external targeting items
This commit is contained in:
+11
-7
@@ -1,8 +1,12 @@
|
|||||||
/home/justin/Haskell/loop/src/Dodge/Data/Item/Use/Consumption/Ammo.hs:53:27-44: error:
|
/home/justin/Haskell/loop/src/Dodge/Item/Display.hs:(109,28)-(121,21): warning: [-Wincomplete-patterns]
|
||||||
• Not in scope: type constructor or class ‘ProjectileCreate’
|
Pattern match(es) are non-exhaustive
|
||||||
Perhaps you meant one of these:
|
In a case alternative: Patterns not matched: TargetingUse _ _ _
|
||||||
‘ProjectileUpdate’ (line 21), ‘ProjectileDraw’ (line 18)
|
|
|
||||||
• In the Template Haskell quotation ''ProjectileCreate
|
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
|
||||||
| ^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
|
||||||
|
|||||||
@@ -240,6 +240,12 @@ inventoryX c = case c of
|
|||||||
]
|
]
|
||||||
'P' -> [burstRifle , tinMag, bulletSynthesizer]
|
'P' -> [burstRifle , tinMag, bulletSynthesizer]
|
||||||
'T' -> testInventory
|
'T' -> testInventory
|
||||||
|
'U' ->
|
||||||
|
[ targetingScope TARGETLASER
|
||||||
|
, launcher
|
||||||
|
, megaShellMag
|
||||||
|
, homingModule
|
||||||
|
]
|
||||||
_ -> []
|
_ -> []
|
||||||
|
|
||||||
testInventory :: [Item]
|
testInventory :: [Item]
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import Dodge.Data.Item
|
|||||||
data ComposeLinkType
|
data ComposeLinkType
|
||||||
= AmmoInLink Int AmmoType
|
= AmmoInLink Int AmmoType
|
||||||
| AmmoModLink
|
| AmmoModLink
|
||||||
|
| AmmoTargetingLink
|
||||||
| WeaponScopeLink
|
| WeaponScopeLink
|
||||||
| WeaponTargetingLink
|
| WeaponTargetingLink
|
||||||
| RemoteScreenLink
|
| RemoteScreenLink
|
||||||
@@ -28,15 +29,7 @@ data ItemStructuralFunction
|
|||||||
| RemoteScreenSF
|
| RemoteScreenSF
|
||||||
| UncomposableIsolateSF
|
| UncomposableIsolateSF
|
||||||
| AmmoModifierSF AmmoType
|
| AmmoModifierSF AmmoType
|
||||||
deriving (Eq,Ord,Show,Read)
|
| AmmoTargetingSF AmmoType
|
||||||
|
|
||||||
data ComposedItem = WeaponCI
|
|
||||||
| WeaponScopeCI
|
|
||||||
| WeaponTargetingCI
|
|
||||||
| AmmoModifierCI AmmoType
|
|
||||||
| AmmoCI AmmoType
|
|
||||||
| UncomposableCI
|
|
||||||
| RocketRemoteScreenCI
|
|
||||||
deriving (Eq,Ord,Show,Read)
|
deriving (Eq,Ord,Show,Read)
|
||||||
|
|
||||||
type PartiallyComposedItem = (Item, ItemStructuralFunction, LinkTest)
|
type PartiallyComposedItem = (Item, ItemStructuralFunction, LinkTest)
|
||||||
@@ -55,6 +48,4 @@ data LinkUpdate = LinkUpdate
|
|||||||
|
|
||||||
makeLenses ''LinkTest
|
makeLenses ''LinkTest
|
||||||
makeLenses ''LinkUpdate
|
makeLenses ''LinkUpdate
|
||||||
makeLenses ''ComposedItem
|
|
||||||
deriveJSON defaultOptions ''ComposedItem
|
|
||||||
deriveJSON defaultOptions ''ComposeLinkType
|
deriveJSON defaultOptions ''ComposeLinkType
|
||||||
|
|||||||
@@ -98,8 +98,8 @@ data AttachType
|
|||||||
= ZOOMSCOPE
|
= ZOOMSCOPE
|
||||||
| TARGETATTACH {_ibtAttachTarget :: TargetType}
|
| TARGETATTACH {_ibtAttachTarget :: TargetType}
|
||||||
| BULLETSYNTHESIZER
|
| BULLETSYNTHESIZER
|
||||||
| ROCKETHOMER
|
|
||||||
| REMOTESCREEN
|
| REMOTESCREEN
|
||||||
|
| HOMINGMODULE
|
||||||
-- | BULPAYLOADATTACH
|
-- | BULPAYLOADATTACH
|
||||||
-- | BULTRAJECTORYATTACH
|
-- | BULTRAJECTORYATTACH
|
||||||
deriving (Eq, Ord, Show, Read)
|
deriving (Eq, Ord, Show, Read)
|
||||||
|
|||||||
@@ -73,6 +73,11 @@ data ItemUse
|
|||||||
{ -- | a camera offset
|
{ -- | a camera offset
|
||||||
_scopeScope :: Scope
|
_scopeScope :: Scope
|
||||||
}
|
}
|
||||||
|
| TargetingUse
|
||||||
|
{ _tgPos :: Maybe Point2
|
||||||
|
, _tgID :: Maybe Int
|
||||||
|
, _tgActive :: Bool
|
||||||
|
}
|
||||||
deriving (Eq, Show, Read) --Generic, Flat)
|
deriving (Eq, Show, Read) --Generic, Flat)
|
||||||
|
|
||||||
data TriggerType
|
data TriggerType
|
||||||
|
|||||||
@@ -138,6 +138,7 @@ loadMuzzle t@(LDT _ l _) mz = fromMaybe (t,Nothing) $ do
|
|||||||
(i,(_,mag)) <- findWithIx (isAmmoIntLink as . fst) l
|
(i,(_,mag)) <- findWithIx (isAmmoIntLink as . fst) l
|
||||||
availableammo <- mag ^? ldtValue . itUse . amagLoadStatus . iaLoaded
|
availableammo <- mag ^? ldtValue . itUse . amagLoadStatus . iaLoaded
|
||||||
let usedammo = min amamount availableammo
|
let usedammo = min amamount availableammo
|
||||||
|
guard $ usedammo > 0
|
||||||
return (t & ldtLeft . ix i . _2 . ldtValue . itUse . amagLoadStatus . iaLoaded -~ usedammo
|
return (t & ldtLeft . ix i . _2 . ldtValue . itUse . amagLoadStatus . iaLoaded -~ usedammo
|
||||||
, Just (mz, usedammo, mag)
|
, Just (mz, usedammo, mag)
|
||||||
)
|
)
|
||||||
|
|||||||
+2
-1
@@ -42,7 +42,8 @@ itemFromAttachType at = case at of
|
|||||||
TARGETATTACH tt -> targetingScope tt
|
TARGETATTACH tt -> targetingScope tt
|
||||||
BULLETSYNTHESIZER -> bulletSynthesizer
|
BULLETSYNTHESIZER -> bulletSynthesizer
|
||||||
REMOTESCREEN -> remoteScreen
|
REMOTESCREEN -> remoteScreen
|
||||||
ROCKETHOMER -> rocketHomer
|
-- ROCKETHOMER -> rocketHomer
|
||||||
|
HOMINGMODULE -> homingModule
|
||||||
|
|
||||||
|
|
||||||
itemFromConsumableType :: ConsumableItemType -> Item
|
itemFromConsumableType :: ConsumableItemType -> Item
|
||||||
|
|||||||
@@ -104,8 +104,3 @@ bulletSynthesizer :: Item
|
|||||||
bulletSynthesizer = defaultHeldItem
|
bulletSynthesizer = defaultHeldItem
|
||||||
& itType . iyBase .~ ATTACH BULLETSYNTHESIZER
|
& itType . iyBase .~ ATTACH BULLETSYNTHESIZER
|
||||||
& itUse .~ AttachUse Nothing
|
& itUse .~ AttachUse Nothing
|
||||||
|
|
||||||
rocketHomer :: Item
|
|
||||||
rocketHomer = defaultHeldItem
|
|
||||||
& itType . iyBase .~ ATTACH ROCKETHOMER
|
|
||||||
& itUse .~ AttachUse Nothing
|
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ showAttachItem t itm = case t of
|
|||||||
TARGETATTACH x -> show x
|
TARGETATTACH x -> show x
|
||||||
BULLETSYNTHESIZER -> "BSYNTH"
|
BULLETSYNTHESIZER -> "BSYNTH"
|
||||||
REMOTESCREEN -> "REMOTE SCREEN " ++ show (itm ^? itUse . atLinkedProjectile . _Just)
|
REMOTESCREEN -> "REMOTE SCREEN " ++ show (itm ^? itUse . atLinkedProjectile . _Just)
|
||||||
ROCKETHOMER -> "HOMING MOD"
|
HOMINGMODULE -> "HOMING MOD"
|
||||||
|
|
||||||
showEquipItem :: EquipItemType -> String
|
showEquipItem :: EquipItemType -> String
|
||||||
showEquipItem eit = case eit of
|
showEquipItem eit = case eit of
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ basePartiallyComposedItem itm = case itm ^. itType . iyBase of
|
|||||||
AMMOMAG _ -> ammoComposedItem itm
|
AMMOMAG _ -> ammoComposedItem itm
|
||||||
ATTACH TARGETATTACH{} -> (itm,WeaponTargetingSF, LinkTest (const Nothing) (const Nothing))
|
ATTACH TARGETATTACH{} -> (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 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))
|
ATTACH REMOTESCREEN -> (itm,RemoteScreenSF, LinkTest (const Nothing) (const Nothing))
|
||||||
_ -> (itm,UncomposableIsolateSF, 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
|
, AmmoMagSF atype
|
||||||
, useBreakListsLinkTest
|
, useBreakListsLinkTest
|
||||||
[(AmmoModifierSF atype, AmmoModLink)
|
[(AmmoModifierSF atype, AmmoModLink)
|
||||||
|
,(AmmoTargetingSF atype, AmmoTargetingLink)
|
||||||
,(RemoteScreenSF, RemoteScreenLink)
|
,(RemoteScreenSF, RemoteScreenLink)
|
||||||
]
|
]
|
||||||
[]
|
[]
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ module Dodge.Item.Scope (
|
|||||||
zoomScope,
|
zoomScope,
|
||||||
targetingScope,
|
targetingScope,
|
||||||
remoteScreen,
|
remoteScreen,
|
||||||
|
homingModule,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
@@ -21,6 +22,12 @@ targetingScope tt =
|
|||||||
& itType . iyBase .~ ATTACH (TARGETATTACH tt)
|
& itType . iyBase .~ ATTACH (TARGETATTACH tt)
|
||||||
& itUse .~ AttachUse Nothing
|
& itUse .~ AttachUse Nothing
|
||||||
|
|
||||||
|
homingModule :: Item
|
||||||
|
homingModule =
|
||||||
|
defaultHeldItem
|
||||||
|
& itType . iyBase .~ ATTACH HOMINGMODULE
|
||||||
|
& itUse .~ AttachUse Nothing
|
||||||
|
|
||||||
remoteScreen :: Item
|
remoteScreen :: Item
|
||||||
remoteScreen =
|
remoteScreen =
|
||||||
defaultHeldItem
|
defaultHeldItem
|
||||||
|
|||||||
Reference in New Issue
Block a user