Add prospective data types for more complex item attachments

This commit is contained in:
2024-09-25 22:09:19 +01:00
parent 600b8cd309
commit 61f07be08b
3 changed files with 34 additions and 1 deletions
+9
View File
@@ -18,6 +18,15 @@ data ComposeLinkType
| RemoteScreenLink
deriving (Eq,Ord,Show,Read)
data ItemStructuralFunction
= WeaponPlatformSF
| WeaponScopeSF
| WeaponBarrelAttachmentSF
| AmmoMagazineSF
| RemoteScreenSF
| UncomposableIsolateSF
deriving (Eq,Ord,Show,Read)
data ComposedItem = WeaponCI
| WeaponScopeCI
| WeaponTargetingCI
+15
View File
@@ -19,8 +19,23 @@ import Dodge.DoubleTree
type ComposedItemStructure
= (Item,ComposedItem,[(ComposeLinkType,ComposedItem)], [(ComposeLinkType,ComposedItem)])
type PartiallyComposedItem = (Item,ItemStructuralFunction,LinkTest)
type CIL = (ComposedItem,[(ComposeLinkType,ComposedItem)], [(ComposeLinkType,ComposedItem)])
data LinkTest = LinkTest
{ _tryLeftLink :: PartiallyComposedItem -> Maybe LinkUpdate
, _tryRightLink :: PartiallyComposedItem -> Maybe LinkUpdate
}
-- may want to upgrade the children's possible links as well, but this is not obvious
data LinkUpdate = LinkUpdate
{ _luLinkType :: ComposeLinkType
, _luNewLinkTest :: LinkTest
, _luParentUpdate :: (Item,PartiallyComposedItem) -> (Item,PartiallyComposedItem)
, _luChildUpdate :: (Item,PartiallyComposedItem) -> (Item,PartiallyComposedItem)
}
cisToItem :: ComposedItemStructure -> Item
cisToItem (x,_,_,_) = x