Implement targeting launcher shells using separate item

This commit is contained in:
2024-09-29 16:24:26 +01:00
parent 7d72fa3c5d
commit 88c3e02459
36 changed files with 747 additions and 610 deletions
+2 -2
View File
@@ -77,14 +77,14 @@ data Creature = Creature
, _crName :: String
, _crStatistics :: CreatureStatistics
, _crCamouflage :: CamouflageStatus
, _crTargeting :: CreatureTargeting
-- , _crTargeting :: CreatureTargeting
}
--deriving (Eq, Show, Read) --Generic, Flat)
data CreatureTargeting = CreatureTargeting
{ _ctPos :: Maybe Point2
, _ctType :: Maybe TargetType
, _ctType :: Maybe TargetingType
, _ctID :: Maybe Int
, _ctActive :: Bool
}
+4 -4
View File
@@ -77,7 +77,7 @@ data CraftType
| TIMEMODULE
| SIZEMODULE
| GRAVITYMODULE
| TARGETMODULE TargetType
| TARGETMODULE TargetingType
deriving (Eq, Ord, Show, Read)
--deriving (Eq, Ord, Show, Enum, Read) --Generic, Flat)
@@ -90,13 +90,13 @@ data ItemBaseType
| CRAFT CraftType
| ATTACH {_ibtAttach :: AttachType}
| AMMOMAG {_ibtAmmoMag :: AmmoMagType}
| TARGETING {_ibtTargeting :: TargetingType}
deriving (Eq, Ord, Show, Read)
--deriving (Eq, Ord, Show, Read) --Generic, Flat)
data AttachType
= ZOOMSCOPE
| TARGETATTACH {_ibtAttachTarget :: TargetType}
| BULLETSYNTHESIZER
| REMOTESCREEN
| HOMINGMODULE
@@ -130,7 +130,7 @@ data EquipItemType
| INVISIBILITYEQUIPMENT EquipSite
| BRAINHAT
| HAT
| TARGETINGHAT TargetType
| TARGETINGHAT TargetingType
| HEADLAMP
| POWERLEGS
| SPEEDLEGS
@@ -208,7 +208,7 @@ data ItemModuleType
| BULPAY BulletSpawn
| BULBODY BulletEffect
| BULTRAJ {_imtBulletTrajectoryType :: BulletTrajectoryType}
| TARGET {_imtTargetType :: TargetType}
| TARGET {_imtTargetType :: TargetingType}
| INCENDLAS
| SPLITLAS
| STATICLAS
+2 -2
View File
@@ -8,7 +8,7 @@ module Dodge.Data.Item.Targeting where
import Data.Aeson
import Data.Aeson.TH
data TargetType
data TargetingType
= TARGETLASER
| TargetRBPress
| TargetRBLine
@@ -16,4 +16,4 @@ data TargetType
| TargetCursor
deriving (Eq, Ord, Show, Read, Enum, Bounded) --Generic, Flat)
deriveJSON defaultOptions ''TargetType
deriveJSON defaultOptions ''TargetingType
+1 -1
View File
@@ -57,7 +57,7 @@ data ItemUse
}
| EquipUse
{ _equipEffect :: EquipEffect
, _equipTargeting :: Maybe TargetType
, _equipTargeting :: Maybe TargetingType
}
| CraftUse
| -- {_useAmount :: ItAmount}
+9 -1
View File
@@ -20,10 +20,16 @@ import Dodge.Data.Payload
data ProjectileDraw = DrawShell | DrawRemoteShell | DrawDrone | DrawBlankProjectile
deriving (Show, Eq, Ord, Enum, Bounded, Read) --Generic, Flat)
data ProjectileHoming
= NoHoming
| HomeUsingRemoteScreen {_phRemoteID :: NewInt ItmInt}
| HomeUsingTargeting {_phTargetingID :: NewInt ItmInt}
deriving (Show, Eq, Ord, Read) --Generic, Flat)
data ProjectileUpdate
= ThrustPU {_pjuStart :: Int, _pjuEnd :: Int}
| StartSpinPU {_pjuTime :: Int, _pjuCID :: Int, _pjuSpinAmound :: Int}
| RemoteDirectionPU {_pjuStart :: Int, _pjuEnd :: Int, _pjuControllerID :: Maybe (NewInt ItmInt)}
| RemoteDirectionPU {_pjuStart :: Int, _pjuEnd :: Int, _pjuControllerID :: ProjectileHoming}
| ReduceSpinPU {_pjuReduceSpin :: Float}
| DestroyPU {_pjuScreenID :: Maybe (NewInt ItmInt), _pjuTimer :: Int}
| TimePU
@@ -50,7 +56,9 @@ data GasCreate = CreatePoisonGas | CreateFlame
makeLenses ''ProjectileUpdate
makeLenses ''AmmoType
makeLenses ''ProjectileHoming
deriveJSON defaultOptions ''GasFuel
deriveJSON defaultOptions ''ProjectileHoming
deriveJSON defaultOptions ''ProjectileDraw
deriveJSON defaultOptions ''ProjectileUpdate
deriveJSON defaultOptions ''GasCreate
+2 -2
View File
@@ -31,7 +31,7 @@ module Dodge.Data.LWorld (
module Dodge.Data.Machine,
module Dodge.Data.Magnet,
module Dodge.Data.Modification,
module Dodge.Data.PathGraph,
-- module Dodge.Data.PathGraph,
module Dodge.Data.PosEvent,
module Dodge.Data.PressPlate,
module Dodge.Data.Projectile,
@@ -77,7 +77,7 @@ import Dodge.Data.LinearShockwave
import Dodge.Data.Machine
import Dodge.Data.Magnet
import Dodge.Data.Modification
import Dodge.Data.PathGraph
--import Dodge.Data.PathGraph
import Dodge.Data.PosEvent
import Dodge.Data.PressPlate
import Dodge.Data.Projectile
+3 -1
View File
@@ -5,6 +5,8 @@
module Dodge.Data.Laser where
import NewInt
import Dodge.Data.Item.Location
import Color
import Control.Lens
import Data.Aeson
@@ -13,7 +15,7 @@ import Geometry.Data
data LaserType
= DamageLaser {_laserTypeDamage :: Int}
| TargetingLaser
| TargetingLaser {_laserEmmiter :: NewInt ItmInt}
deriving (Eq, Ord, Show, Read) --Generic, Flat)
data LaserStart = LaserStart
+10 -10
View File
@@ -18,17 +18,17 @@ import Control.Lens
import Data.Aeson
import Data.Aeson.TH
import Data.Graph.Inductive
import Data.Map.Strict (Map)
--import Data.Map.Strict (Map)
import qualified Data.Set as Set
import Geometry.Data
data PathGraph = PathGraph
{ _pgGraph :: Gr Point2 PathEdge
, _pgNodeMap :: Map Point2 Int
, _pgNodeCount :: Int
, _pgEdgeMap :: Map (V2 Point2) PathEdgeNodes
}
deriving (Eq, Show, Read) --, Generic)
--data PathGraph = PathGraph
-- { _pgGraph :: Gr Point2 PathEdge
-- , _pgNodeMap :: Map Point2 Int
-- , _pgNodeCount :: Int
-- , _pgEdgeMap :: Map (V2 Point2) PathEdgeNodes
-- }
-- deriving (Eq, Show, Read) --, Generic)
data PathEdgeNodes = PathEdgeNodes
{ _penStart :: Int
@@ -59,11 +59,11 @@ data EdgeObstacle
--deriving instance (Flat (Gr Point2 PathEdge))
makeLenses ''PathGraph
--makeLenses ''PathGraph
makeLenses ''PathEdge
makeLenses ''PathEdgeNodes
deriveJSON defaultOptions ''EdgeObstacle
deriveJSON defaultOptions ''PathEdge
deriveJSON defaultOptions ''PathEdgeNodes
deriveJSON defaultOptions ''Gr
deriveJSON defaultOptions ''PathGraph
--deriveJSON defaultOptions ''PathGraph