Work on cleaning up item effects/attachments etc
This commit is contained in:
@@ -71,7 +71,7 @@ data CWorld = CWorld
|
||||
, _creatures :: IM.IntMap Creature
|
||||
, _crZoning :: IM.IntMap (IM.IntMap IS.IntSet)
|
||||
, _creatureGroups :: IM.IntMap CrGroupParams
|
||||
, _itemPositions :: IM.IntMap ItemPos
|
||||
, _itemLocations :: IM.IntMap ItemLocation
|
||||
, _clouds :: [Cloud]
|
||||
, _clZoning :: IM.IntMap (IM.IntMap [Cloud])
|
||||
, _gusts :: IM.IntMap Gust
|
||||
|
||||
@@ -9,7 +9,7 @@ module Dodge.Data.Item (
|
||||
module Dodge.Data.Item.Params,
|
||||
module Dodge.Data.Item.Use,
|
||||
module Dodge.Data.Item.CurseStatus,
|
||||
module Dodge.Data.Item.Attachment,
|
||||
module Dodge.Data.Item.Scope,
|
||||
module Dodge.Data.Item.Combine,
|
||||
module Dodge.Data.Item.Targeting,
|
||||
) where
|
||||
@@ -20,7 +20,7 @@ import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Dodge.Data.Item.Combine
|
||||
import Dodge.Data.Item.Effect
|
||||
import Dodge.Data.Item.Attachment
|
||||
import Dodge.Data.Item.Scope
|
||||
import Dodge.Data.Item.CurseStatus
|
||||
import Dodge.Data.Item.Misc
|
||||
import Dodge.Data.Item.Params
|
||||
@@ -31,9 +31,8 @@ import Dodge.Data.Item.Targeting
|
||||
data Item = Item
|
||||
{ _itUse :: ItemUse
|
||||
, _itType :: ItemType
|
||||
, _itAttachment :: ItAttachment
|
||||
, _itID :: Maybe Int
|
||||
, _itPos :: ItemPos
|
||||
, _itLocation :: ItemLocation
|
||||
, _itIsHeld :: Bool
|
||||
, _itEffect :: ItEffect
|
||||
, _itInvSize :: Float
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item.Combine where
|
||||
|
||||
import Dodge.Data.Item.Use.Consumption
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import qualified Data.Map.Strict as M
|
||||
import Dodge.Data.Equipment.Misc
|
||||
import Dodge.Data.Item.Use.Consumption
|
||||
|
||||
data ItemType = ItemType
|
||||
{ _iyBase :: ItemBaseType
|
||||
@@ -79,6 +79,7 @@ data ItemBaseType
|
||||
|
||||
data ConsumableItemType
|
||||
= MEDKIT Int
|
||||
| EXPLOSIVES
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data EquipItemType
|
||||
@@ -90,7 +91,6 @@ data EquipItemType
|
||||
| BRAINHAT
|
||||
| HAT
|
||||
| HEADLAMP
|
||||
| HEADLAMP1
|
||||
| POWERLEGS
|
||||
| SPEEDLEGS
|
||||
| JUMPLEGS
|
||||
@@ -118,17 +118,13 @@ data HeldItemType
|
||||
| BANGCONE
|
||||
| BLUNDERBUSS
|
||||
| GRAPECANNON {_xNum :: Int}
|
||||
| -- | GRENADELAUNCHER Int -- number of chambers that can be reloaded
|
||||
-- | MORTARCONE / HANDMORTAR
|
||||
MINIGUNX {_xNum :: Int}
|
||||
| MINIGUNX {_xNum :: Int}
|
||||
| VOLLEYGUN {_xNum :: Int}
|
||||
| RIFLE
|
||||
| REPEATER
|
||||
| AUTORIFLE
|
||||
| BURSTRIFLE
|
||||
| -- | FASTBURSTRIFLE
|
||||
-- | COMPLETEBURSTRIFLE
|
||||
BANGROD
|
||||
| BANGROD
|
||||
| ELEPHANTGUN
|
||||
| AMR
|
||||
| AUTOAMR
|
||||
@@ -143,20 +139,12 @@ data HeldItemType
|
||||
| TESLAGUN
|
||||
| LASGUN
|
||||
| LASCIRCLE
|
||||
| -- | LASPULSE
|
||||
DUALBEAM
|
||||
| -- | LASGUNSWING
|
||||
|
||||
-- | LASGUNSWAY
|
||||
-- | LASGUNWIDEPULSE
|
||||
LASWIDE {_xNum :: Int}
|
||||
| -- | LASGUNFOCUS Int
|
||||
-- | SONICGUN
|
||||
TRACTORGUN
|
||||
| DUALBEAM
|
||||
| LASWIDE {_xNum :: Int}
|
||||
| TRACTORGUN
|
||||
| LAUNCHER
|
||||
| LAUNCHERX {_xNum :: Int}
|
||||
| -- | TRACKINGLAUNCHER
|
||||
REMOTELAUNCHER
|
||||
| REMOTELAUNCHER
|
||||
| POISONSPRAYER
|
||||
| DRONELAUNCHER
|
||||
| SHATTERGUN
|
||||
|
||||
@@ -7,39 +7,23 @@ import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
|
||||
data ItEffect
|
||||
= NoItEffect
|
||||
| ItInvEffect
|
||||
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
||||
, _ieCounter :: Int
|
||||
}
|
||||
| ItRewindEffect
|
||||
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
||||
}
|
||||
| ItEffect
|
||||
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
||||
, _ieFloor :: ItFloorEffect --Int -> World -> World
|
||||
, _ieCounter :: Int
|
||||
}
|
||||
| ItInvEffectID
|
||||
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
||||
, _ieMID :: Maybe Int
|
||||
} -- the duplication of ieMID may cause errors...
|
||||
| ItInvEffectDrop
|
||||
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
||||
, _ieDrop :: ItDropEffect --Item -> Creature -> World -> World
|
||||
, _ieMID :: Maybe Int
|
||||
}
|
||||
data ItEffect = ItEffect
|
||||
{ _ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
||||
, _ieOnInsert :: ItInvEffect
|
||||
, _ieOnDrop :: ItInvEffect --Item -> Creature -> World -> World
|
||||
, _ieOnHeld :: ItInvEffect
|
||||
, _ieOnStash :: ItInvEffect
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data ItInvEffect
|
||||
= NoInvEffect
|
||||
| RewindEffect
|
||||
| ResetAttachmentEffect
|
||||
| OnOffHeldEffect ItInvEffect ItInvEffect
|
||||
| EffectIfHeld ItInvEffect ItInvEffect
|
||||
| CreateHeldLight
|
||||
| CreateShieldWall
|
||||
| RemoveShieldWall
|
||||
| EffectWhileHeld ItInvEffect
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data ItFloorEffect = NoFloorEffect
|
||||
|
||||
+30
-33
@@ -1,53 +1,50 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item.Misc where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Geometry.Data
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Geometry.Data
|
||||
|
||||
data ItemDimension = ItemDimension
|
||||
{ _dimRad :: Float
|
||||
, _dimCenter :: Point3
|
||||
{ _dimRad :: Float
|
||||
, _dimCenter :: Point3
|
||||
, _dimAttachPos :: Point3
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemDimension where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemDimension
|
||||
data ItemPortage
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
data ItemPortage
|
||||
= HeldItem
|
||||
{ _handlePos :: Float
|
||||
, _muzPos :: Float
|
||||
, _muzPos :: Float
|
||||
}
|
||||
| WornItem
|
||||
| NoPortage
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemPortage where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemPortage
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
data ItemValue = ItemValue
|
||||
{ _ivInt :: Int
|
||||
, _ivType :: ItemValueType
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemValue where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemValue
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
data ItemValueType = MundaneItem | ArtefactItem
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemValueType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemValueType
|
||||
data ItemPos
|
||||
= InInv { _ipCrID :: Int , _ipInvID :: Int }
|
||||
| OnFloor { _ipFlID :: Int }
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
data ItemLocation
|
||||
= InInv {_ipCrID :: Int, _ipInvID :: Int}
|
||||
| OnFloor {_ipFlID :: Int}
|
||||
| VoidItm
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemPos where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemPos
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
makeLenses ''ItemDimension
|
||||
makeLenses ''ItemPortage
|
||||
makeLenses ''ItemValue
|
||||
makeLenses ''ItemPos
|
||||
makeLenses ''ItemLocation
|
||||
deriveJSON defaultOptions ''ItemDimension
|
||||
deriveJSON defaultOptions ''ItemPortage
|
||||
deriveJSON defaultOptions ''ItemValue
|
||||
deriveJSON defaultOptions ''ItemValueType
|
||||
deriveJSON defaultOptions ''ItemLocation
|
||||
|
||||
@@ -13,6 +13,12 @@ import Geometry.Data
|
||||
|
||||
data ItemParams
|
||||
= NoParams
|
||||
| MagShieldParams
|
||||
{_magShieldMgMIX :: Maybe Int}
|
||||
| ShrinkGunParams
|
||||
{_shrinkGunStatus :: ShrinkGunStatus}
|
||||
| FlatShieldParams
|
||||
{_flatShieldWlMIX :: Maybe Int}
|
||||
| ShellLauncher
|
||||
{ _shellSpinDrag :: Int
|
||||
, _shellSpinAmount :: Int
|
||||
@@ -62,13 +68,12 @@ data ItemParams
|
||||
| BoostPropIX {_boostPropIX :: Maybe Int}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
|
||||
data ShrinkGunStatus = FullSize | Shrunk
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data PreviousArcEffect = NoPreviousArcEffect | PerturbTillBreakPreviousArc
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
|
||||
|
||||
data GunBarrels
|
||||
= MultiBarrel
|
||||
{ _brlSpread :: BarrelSpread
|
||||
@@ -82,8 +87,6 @@ data GunBarrels
|
||||
| SingleBarrel {_brlInaccuracy :: Float}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
|
||||
|
||||
data Nozzle = Nozzle
|
||||
{ _nzPressure :: Float
|
||||
, _nzDir :: Float
|
||||
@@ -94,21 +97,18 @@ data Nozzle = Nozzle
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
|
||||
|
||||
data BarrelSpread
|
||||
= AlignedBarrels
|
||||
| SpreadBarrels {_spreadAngle :: Float}
|
||||
| RotatingBarrels {_rotatingBarrelInaccuracy :: Float}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
|
||||
|
||||
makeLenses ''BarrelSpread
|
||||
makeLenses ''ItemParams
|
||||
makeLenses ''Nozzle
|
||||
makeLenses ''GunBarrels
|
||||
deriveJSON defaultOptions ''ItemParams
|
||||
deriveJSON defaultOptions ''ShrinkGunStatus
|
||||
deriveJSON defaultOptions ''PreviousArcEffect
|
||||
deriveJSON defaultOptions ''GunBarrels
|
||||
deriveJSON defaultOptions ''Nozzle
|
||||
|
||||
@@ -1,23 +1,13 @@
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item.Attachment where
|
||||
module Dodge.Data.Item.Scope where
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Geometry.Data
|
||||
|
||||
data ItAttachment
|
||||
= AttachFuse {_atFuseTime :: Int}
|
||||
| AttachTargetPos {_atTargetPos :: Point2}
|
||||
| AttachInt {_atInt :: Int}
|
||||
| AttachMInt {_atMInt :: Maybe Int}
|
||||
| AttachFloat {_atFloat :: Float}
|
||||
| AttachBool {_atBool :: Bool}
|
||||
| NoItAttachment
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data Scope
|
||||
= NoScope
|
||||
| RemoteScope
|
||||
@@ -36,9 +26,7 @@ data Scope
|
||||
, -- | if the camera offset is also the center of vision
|
||||
_scopeIsCamera :: Bool
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
makeLenses ''ItAttachment
|
||||
makeLenses ''Scope
|
||||
deriveJSON defaultOptions ''ItAttachment
|
||||
deriveJSON defaultOptions ''Scope
|
||||
@@ -1,37 +1,37 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item.Tweak where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import qualified IntMapHelp as IM
|
||||
|
||||
data ItemTweaks
|
||||
= NoTweaks
|
||||
| Tweakable
|
||||
{ _tweakParams :: IM.IntMap TweakParam
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemTweaks where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemTweaks
|
||||
data TweakType = TweakPhaseV
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
data TweakType
|
||||
= TweakPhaseV
|
||||
| TweakTractionPower
|
||||
| TweakSpinDrag
|
||||
| TweakSpinAmount
|
||||
| TweakThrustDelay
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TweakType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TweakType
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
data TweakParam = TweakParam
|
||||
{ _tweakType :: TweakType -- Int -> Item -> Item
|
||||
, _tweakVal :: Int
|
||||
, _tweakMax :: Int
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TweakParam where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TweakParam
|
||||
{ _tweakType :: TweakType -- Int -> Item -> Item
|
||||
, _tweakVal :: Int
|
||||
, _tweakMax :: Int
|
||||
}
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
makeLenses ''TweakParam
|
||||
makeLenses ''ItemTweaks
|
||||
deriveJSON defaultOptions ''ItemTweaks
|
||||
deriveJSON defaultOptions ''TweakType
|
||||
deriveJSON defaultOptions ''TweakParam
|
||||
|
||||
+19
-19
@@ -1,30 +1,30 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Magnet where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Geometry.Data
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Geometry.Data
|
||||
|
||||
newtype MagnetUpdate = MagnetUpdateTimer Int
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON MagnetUpdate where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON MagnetUpdate
|
||||
data MagnetBuBu = MagnetBuId
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data MagnetBuBu
|
||||
= MagnetBuId
|
||||
| MagnetBuBuCurveAroundField Float Float
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON MagnetBuBu where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON MagnetBuBu
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data Magnet = Magnet
|
||||
{ _mgID :: Int
|
||||
, _mgUpdate :: MagnetUpdate
|
||||
, _mgPos :: Point2
|
||||
, _mgField :: MagnetBuBu
|
||||
, _mgField :: MagnetBuBu
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Magnet where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Magnet
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
makeLenses ''Magnet
|
||||
deriveJSON defaultOptions ''MagnetUpdate
|
||||
deriveJSON defaultOptions ''MagnetBuBu
|
||||
deriveJSON defaultOptions ''Magnet
|
||||
|
||||
Reference in New Issue
Block a user