From 61f07be08b9b0af51037f8c39257284deb535756 Mon Sep 17 00:00:00 2001 From: justin Date: Wed, 25 Sep 2024 22:09:19 +0100 Subject: [PATCH] Add prospective data types for more complex item attachments --- ghcidOutput | 11 ++++++++++- src/Dodge/Data/ComposedItem.hs | 9 +++++++++ src/Dodge/Item/Grammar.hs | 15 +++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/ghcidOutput b/ghcidOutput index 2320b1f5b..cd5de966b 100644 --- a/ghcidOutput +++ b/ghcidOutput @@ -1 +1,10 @@ -All good (620 modules, at 10:54:07) +/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:(26,17)-(29,5): warning: [-Wunused-top-binds] + Defined but not used: data constructor ‘LinkTest’ + | +26 | data LinkTest = LinkTest + | ^^^^^^^^^... +/home/justin/Haskell/loop/src/Dodge/Item/Grammar.hs:(32,19)-(37,5): warning: [-Wunused-top-binds] + Defined but not used: data constructor ‘LinkUpdate’ + | +32 | data LinkUpdate = LinkUpdate + | ^^^^^^^^^^... diff --git a/src/Dodge/Data/ComposedItem.hs b/src/Dodge/Data/ComposedItem.hs index 9e9e9908e..d0f164861 100644 --- a/src/Dodge/Data/ComposedItem.hs +++ b/src/Dodge/Data/ComposedItem.hs @@ -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 diff --git a/src/Dodge/Item/Grammar.hs b/src/Dodge/Item/Grammar.hs index 5c9e47fc8..81d15b2d5 100644 --- a/src/Dodge/Item/Grammar.hs +++ b/src/Dodge/Item/Grammar.hs @@ -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