Move towards external targeting items

This commit is contained in:
2024-09-28 23:01:50 +01:00
parent d1690ed3ac
commit 241191ee1b
11 changed files with 38 additions and 27 deletions
+11 -7
View File
@@ -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
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
+6
View File
@@ -240,6 +240,12 @@ inventoryX c = case c of
]
'P' -> [burstRifle , tinMag, bulletSynthesizer]
'T' -> testInventory
'U' ->
[ targetingScope TARGETLASER
, launcher
, megaShellMag
, homingModule
]
_ -> []
testInventory :: [Item]
+2 -11
View File
@@ -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
+1 -1
View File
@@ -98,8 +98,8 @@ data AttachType
= ZOOMSCOPE
| TARGETATTACH {_ibtAttachTarget :: TargetType}
| BULLETSYNTHESIZER
| ROCKETHOMER
| REMOTESCREEN
| HOMINGMODULE
-- | BULPAYLOADATTACH
-- | BULTRAJECTORYATTACH
deriving (Eq, Ord, Show, Read)
+5
View File
@@ -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
+1
View File
@@ -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
View File
@@ -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
-5
View File
@@ -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
+1 -1
View File
@@ -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
+2 -1
View File
@@ -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)
]
[]
+7
View File
@@ -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