Allow for more complex item composition
This commit is contained in:
@@ -9,6 +9,8 @@ import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Dodge.Data.Item.Use.Consumption.Ammo
|
||||
-- it would be nice not to have to import the following...
|
||||
import Dodge.Data.Item
|
||||
|
||||
data ComposeLinkType
|
||||
= AmmoInLink Int AmmoType
|
||||
@@ -21,10 +23,11 @@ data ComposeLinkType
|
||||
data ItemStructuralFunction
|
||||
= WeaponPlatformSF
|
||||
| WeaponScopeSF
|
||||
| WeaponBarrelAttachmentSF
|
||||
| AmmoMagazineSF
|
||||
| WeaponTargetingSF
|
||||
| AmmoMagSF
|
||||
| RemoteScreenSF
|
||||
| UncomposableIsolateSF
|
||||
| AmmoModifierSF AmmoType
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
data ComposedItem = WeaponCI
|
||||
@@ -36,6 +39,22 @@ data ComposedItem = WeaponCI
|
||||
| RocketRemoteScreenCI
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
type PartiallyComposedItem = (Item, ItemStructuralFunction, LinkTest)
|
||||
|
||||
data LinkTest = LinkTest
|
||||
{ _tryLeftLink :: PartiallyComposedItem -> Maybe LinkUpdate
|
||||
, _tryRightLink :: PartiallyComposedItem -> Maybe LinkUpdate
|
||||
}
|
||||
|
||||
data LinkUpdate = LinkUpdate
|
||||
{ _luLinkType :: ComposeLinkType
|
||||
, _luParentUpdate :: PartiallyComposedItem -> PartiallyComposedItem
|
||||
, _luChildUpdate :: PartiallyComposedItem -> PartiallyComposedItem
|
||||
}
|
||||
|
||||
|
||||
makeLenses ''LinkTest
|
||||
makeLenses ''LinkUpdate
|
||||
makeLenses ''ComposedItem
|
||||
deriveJSON defaultOptions ''ComposedItem
|
||||
deriveJSON defaultOptions ''ComposeLinkType
|
||||
|
||||
Reference in New Issue
Block a user