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:
|
||||
• 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
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
|
||||
|
||||
@@ -240,6 +240,12 @@ inventoryX c = case c of
|
||||
]
|
||||
'P' -> [burstRifle , tinMag, bulletSynthesizer]
|
||||
'T' -> testInventory
|
||||
'U' ->
|
||||
[ targetingScope TARGETLASER
|
||||
, launcher
|
||||
, megaShellMag
|
||||
, homingModule
|
||||
]
|
||||
_ -> []
|
||||
|
||||
testInventory :: [Item]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -98,8 +98,8 @@ data AttachType
|
||||
= ZOOMSCOPE
|
||||
| TARGETATTACH {_ibtAttachTarget :: TargetType}
|
||||
| BULLETSYNTHESIZER
|
||||
| ROCKETHOMER
|
||||
| REMOTESCREEN
|
||||
| HOMINGMODULE
|
||||
-- | BULPAYLOADATTACH
|
||||
-- | BULTRAJECTORYATTACH
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
+2
-1
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
]
|
||||
[]
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user