Cleanup
This commit is contained in:
@@ -1,15 +1,13 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
--{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.ActionPlan where
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Dodge.Data.Creature.Stance
|
||||
import Dodge.Data.CreatureEffect
|
||||
import GHC.Generics
|
||||
import Geometry.Data
|
||||
import Sound.Data
|
||||
|
||||
@@ -21,22 +19,12 @@ data ActionPlan
|
||||
, _apStrategy :: Strategy
|
||||
, _apGoal :: [Goal]
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON ActionPlan where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON ActionPlan
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data RandImpulse
|
||||
= RandImpulseList [Impulse]
|
||||
| RandImpulseCircMove Float
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON RandImpulse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON RandImpulse
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data Impulse
|
||||
= Move Point2
|
||||
@@ -70,12 +58,7 @@ data Impulse
|
||||
{ _impulseUseAheadPos :: P2Imp
|
||||
}
|
||||
| ImpulseNothing
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Impulse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON Impulse
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
infixr 9 `WaitThen`
|
||||
|
||||
@@ -182,12 +165,7 @@ data Action
|
||||
{ _sideImpulses :: [Impulse]
|
||||
, _mainAction :: Action
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Action where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON Action
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data Strategy
|
||||
= Flank Int
|
||||
@@ -205,24 +183,20 @@ data Strategy
|
||||
| Reload
|
||||
| Flee
|
||||
| MeleeStrike
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Strategy where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON Strategy
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data Goal
|
||||
= LiveLongAndProsper
|
||||
| Kill Int
|
||||
| SentinelAt Point2 Float
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Goal where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON Goal
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
deriveJSON defaultOptions ''ActionPlan
|
||||
deriveJSON defaultOptions ''RandImpulse
|
||||
deriveJSON defaultOptions ''Impulse
|
||||
deriveJSON defaultOptions ''Action
|
||||
deriveJSON defaultOptions ''Strategy
|
||||
deriveJSON defaultOptions ''Goal
|
||||
makeLenses ''ActionPlan
|
||||
makeLenses ''Impulse
|
||||
makeLenses ''Action
|
||||
|
||||
+25
-27
@@ -1,36 +1,32 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Ammo where
|
||||
import GHC.Generics
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Dodge.Data.Payload
|
||||
import Data.Aeson.TH
|
||||
import Dodge.Data.Bullet
|
||||
import Dodge.Data.Gas
|
||||
import Dodge.Data.Payload
|
||||
import Dodge.Data.Wall
|
||||
import Control.Lens
|
||||
|
||||
data ProjectileDraw = DrawShell | DrawRemoteShell | DrawDrone | DrawBlankProjectile
|
||||
deriving (Show,Read,Eq,Ord,Enum,Bounded,Generic)
|
||||
instance ToJSON ProjectileDraw where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ProjectileDraw
|
||||
deriving (Show, Read, Eq, Ord, Enum, Bounded)
|
||||
|
||||
data ProjectileCreate = CreateShell | CreateTrackingShell
|
||||
deriving (Show,Read,Eq,Ord,Enum,Bounded,Generic)
|
||||
instance ToJSON ProjectileCreate where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ProjectileCreate
|
||||
data ProjectileUpdate
|
||||
deriving (Show, Read, Eq, Ord, Enum, Bounded)
|
||||
|
||||
data ProjectileUpdate
|
||||
= PJThrust {_pjuStart :: Int, _pjuEnd :: Int}
|
||||
| PJSpin {_pjuTime :: Int, _pjuCID :: Int, _pjuSpinAmound :: Int}
|
||||
| PJTrack {_pjuStart :: Int, _pjuEnd :: Int, _pjuITID :: Int}
|
||||
| PJSpin {_pjuTime :: Int, _pjuCID :: Int, _pjuSpinAmound :: Int}
|
||||
| PJTrack {_pjuStart :: Int, _pjuEnd :: Int, _pjuITID :: Int}
|
||||
| PJReduceSpin {_pjuReduceSpin :: Float}
|
||||
| PJRemoteDirection {_pjuStart :: Int, _pjuEnd :: Int, _pjuCID :: Int, _pjuITID :: Int}
|
||||
| PJSetScope {_pjuITID :: Int}
|
||||
| PJRetireRemote {_pjuITID :: Int, _pjuTimer :: Int, _pjuPJID :: Int}
|
||||
deriving (Show,Read,Eq,Ord,Generic)
|
||||
instance ToJSON ProjectileUpdate where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ProjectileUpdate
|
||||
deriving (Show, Read, Eq, Ord)
|
||||
|
||||
data AmmoType
|
||||
= ProjectileAmmo
|
||||
{ _amPayload :: Payload
|
||||
@@ -39,22 +35,24 @@ data AmmoType
|
||||
, _amPjCreation :: ProjectileCreate
|
||||
}
|
||||
| BulletAmmo
|
||||
{ _amString :: String
|
||||
{ _amString :: String
|
||||
, _amBullet :: Bullet
|
||||
}
|
||||
| DroneAmmo
|
||||
{ _amString :: String }
|
||||
{_amString :: String}
|
||||
| GasAmmo
|
||||
{ _amString :: String
|
||||
{ _amString :: String
|
||||
, _amCreateGas :: GasCreate
|
||||
}
|
||||
| ForceFieldAmmo
|
||||
{ _amForceFieldType :: Wall
|
||||
}
|
||||
| GenericAmmo
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON AmmoType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON AmmoType
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
makeLenses ''ProjectileUpdate
|
||||
makeLenses ''AmmoType
|
||||
deriveJSON defaultOptions ''ProjectileDraw
|
||||
deriveJSON defaultOptions ''ProjectileCreate
|
||||
deriveJSON defaultOptions ''ProjectileUpdate
|
||||
deriveJSON defaultOptions ''AmmoType
|
||||
|
||||
+36
-45
@@ -1,66 +1,57 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Bullet where
|
||||
import GHC.Generics
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Dodge.Data.Damage
|
||||
import Geometry.Data
|
||||
import Control.Lens
|
||||
|
||||
data Bullet = Bullet
|
||||
{ _buState :: BulletState
|
||||
, _buEffect :: BulletEffect
|
||||
, _buSpawn :: BulletSpawn
|
||||
, _buUpdateMod :: BulletUpdateMod
|
||||
{ _buDelayFraction :: Float
|
||||
, _buEffect :: BulletEffect
|
||||
, _buSpawn :: BulletSpawn
|
||||
, _buUpdateMod :: BulletUpdateMod
|
||||
, _buTrajectory :: BulletTrajectory
|
||||
, _buVel :: Point2
|
||||
, _buDrag :: Float
|
||||
, _buPos :: Point2
|
||||
, _buOldPos :: Point2
|
||||
, _buWidth :: Float
|
||||
, _buTimer :: Int
|
||||
, _buDamages :: [Damage]
|
||||
, _buVel :: Point2
|
||||
, _buDrag :: Float
|
||||
, _buPos :: Point2
|
||||
, _buOldPos :: Point2
|
||||
, _buWidth :: Float
|
||||
, _buTimer :: Int
|
||||
, _buDamages :: [Damage]
|
||||
}
|
||||
deriving (Show,Read,Eq,Ord,Generic)
|
||||
instance ToJSON Bullet where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Bullet
|
||||
deriving (Show, Read, Eq, Ord)
|
||||
|
||||
data EnergyBallType = IncBall | TeslaBall | ConcBall
|
||||
deriving (Show,Read,Eq,Ord,Enum,Bounded,Generic)
|
||||
instance ToJSON EnergyBallType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON EnergyBallType
|
||||
data BulletState = NormalBulletState
|
||||
| DelayedBullet Float
|
||||
deriving (Show,Read,Eq,Ord,Generic)
|
||||
instance ToJSON BulletState where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON BulletState
|
||||
deriving (Show, Read, Eq, Ord, Enum, Bounded)
|
||||
|
||||
data BulletUpdateMod = NoBulletUpdateMod
|
||||
deriving (Show,Read,Eq,Ord,Enum,Bounded,Generic)
|
||||
instance ToJSON BulletUpdateMod where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON BulletUpdateMod
|
||||
data BulletEffect
|
||||
deriving (Show, Read, Eq, Ord, Enum, Bounded)
|
||||
|
||||
data BulletEffect
|
||||
= DestroyBullet
|
||||
| BounceBullet
|
||||
| PenetrateBullet
|
||||
deriving (Eq,Ord,Show,Read,Enum,Bounded,Generic)
|
||||
instance ToJSON BulletEffect where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON BulletEffect
|
||||
deriving (Eq, Ord, Show, Read, Enum, Bounded)
|
||||
|
||||
data BulletSpawn = BulBall EnergyBallType | BulSpark
|
||||
deriving (Show,Read,Eq,Ord,Generic)
|
||||
instance ToJSON BulletSpawn where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON BulletSpawn
|
||||
deriving (Show, Read, Eq, Ord)
|
||||
|
||||
data BulletTrajectory
|
||||
= BasicBulletTrajectory
|
||||
| BezierTrajectory Point2 Point2 Point2
|
||||
| FlechetteTrajectory Point2
|
||||
| MagnetTrajectory Point2
|
||||
deriving (Show,Read,Eq,Ord,Generic)
|
||||
instance ToJSON BulletTrajectory where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON BulletTrajectory
|
||||
deriving (Show, Read, Eq, Ord)
|
||||
|
||||
makeLenses ''Bullet
|
||||
deriveJSON defaultOptions ''Bullet
|
||||
deriveJSON defaultOptions ''EnergyBallType
|
||||
deriveJSON defaultOptions ''BulletUpdateMod
|
||||
deriveJSON defaultOptions ''BulletEffect
|
||||
deriveJSON defaultOptions ''BulletSpawn
|
||||
deriveJSON defaultOptions ''BulletTrajectory
|
||||
|
||||
@@ -38,7 +38,7 @@ data ButtonEvent = ButtonDoNothing
|
||||
,_boffEff :: WdWd
|
||||
}
|
||||
| ButtonAccessTerminal
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
deriving (Eq,Show,Read,Generic)
|
||||
instance ToJSON ButtonEvent where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ButtonEvent
|
||||
@@ -54,7 +54,7 @@ data Button = Button
|
||||
, _btName :: String
|
||||
, _btColor :: Color
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
deriving (Eq,Show,Read,Generic)
|
||||
instance ToJSON Button where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Button
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.CWorld where
|
||||
module Dodge.Data.CWorld (
|
||||
module Dodge.Data.CWorld,
|
||||
) where
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Data.Graph.Inductive
|
||||
import qualified Data.IntSet as IS
|
||||
import Dodge.Data.Beam
|
||||
@@ -18,6 +20,7 @@ import Dodge.Data.Corpse
|
||||
import Dodge.Data.CrGroupParams
|
||||
import Dodge.Data.Creature
|
||||
import Dodge.Data.Damage
|
||||
import Dodge.Data.Distortion
|
||||
import Dodge.Data.Door
|
||||
import Dodge.Data.EnergyBall
|
||||
import Dodge.Data.Flame
|
||||
@@ -48,9 +51,7 @@ import Dodge.Data.TeslaArc
|
||||
import Dodge.Data.TractorBeam
|
||||
import Dodge.Data.Wall
|
||||
import Dodge.Data.WorldEffect
|
||||
import Dodge.Distortion.Data
|
||||
import Dodge.GameRoom
|
||||
import GHC.Generics
|
||||
import Geometry.ConvexPoly
|
||||
import Geometry.Data
|
||||
import qualified IntMapHelp as IM
|
||||
@@ -135,12 +136,6 @@ data CWorld = CWorld
|
||||
, _genParams :: GenParams
|
||||
, _deathDelay :: Maybe Int
|
||||
}
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON CWorld where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON CWorld
|
||||
|
||||
data WorldBeams = WorldBeams
|
||||
{ _blockingBeams :: [Beam]
|
||||
@@ -148,12 +143,9 @@ data WorldBeams = WorldBeams
|
||||
, _positronBeams :: [Beam]
|
||||
, _electronBeams :: [Beam]
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON WorldBeams where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON WorldBeams
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
deriveJSON defaultOptions ''CWorld
|
||||
deriveJSON defaultOptions ''WorldBeams
|
||||
makeLenses ''CWorld
|
||||
makeLenses ''WorldBeams
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Config where
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import qualified Data.Set as S
|
||||
import GHC.Generics
|
||||
|
||||
{-# ANN module "HLint: ignore Use camelCase" #-}
|
||||
|
||||
data Configuration = Configuration
|
||||
{ _volume_master :: Float
|
||||
, _volume_sound :: Float
|
||||
, _volume_music :: Float
|
||||
, _graphics_wall_textured :: Bool
|
||||
, _graphics_cloud_shadows :: Bool
|
||||
, _graphics_object_shadows :: Bool
|
||||
, _graphics_resolution_factor :: ResFactor
|
||||
, _windowX :: Float
|
||||
, _windowY :: Float
|
||||
, _windowPosX :: Int
|
||||
, _windowPosY :: Int
|
||||
, _gameplay_rotate_to_wall :: Bool
|
||||
, _debug_view_clip_bounds :: RoomClipping
|
||||
, _debug_booleans :: S.Set DebugBool -- consider using Data.BitSet
|
||||
}
|
||||
deriving (Generic, Show)
|
||||
|
||||
data DebugBool
|
||||
= Show_ms_frame
|
||||
| Show_debug
|
||||
| Show_sound
|
||||
| Noclip
|
||||
| Cr_status
|
||||
| Cr_awareness
|
||||
| Mouse_position
|
||||
| View_boundaries
|
||||
| Walls_info
|
||||
| Pathing
|
||||
| Remove_LOS
|
||||
| Cull_more_lights
|
||||
| Close_shape_culling
|
||||
| Show_bound_box
|
||||
| Bound_box_screen
|
||||
| Show_wall_search_rays
|
||||
| Show_dda_test
|
||||
| Show_far_wall_detect
|
||||
| Show_select
|
||||
| Inspect_wall
|
||||
| Show_nodes_near_select
|
||||
| Show_path_between
|
||||
deriving (Generic, Eq, Ord, Bounded, Enum, Show)
|
||||
|
||||
data ResFactor = FullRes | HalfRes | QuarterRes
|
||||
deriving (Generic, Show, Eq, Ord, Enum, Bounded)
|
||||
|
||||
instance ToJSON ResFactor where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON ResFactor
|
||||
|
||||
data RoomClipping = NoRoomClipBoundaries | AllRoomClipBoundaries | IntersectingRoomClipBoundaries
|
||||
deriving (Generic, Show, Eq, Ord, Enum, Bounded)
|
||||
|
||||
instance ToJSON RoomClipping where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON RoomClipping
|
||||
|
||||
resFactorNum :: ResFactor -> Int
|
||||
resFactorNum rf = case rf of
|
||||
FullRes -> 1
|
||||
HalfRes -> 2
|
||||
QuarterRes -> 4
|
||||
|
||||
makeLenses ''Configuration
|
||||
|
||||
instance ToJSON DebugBool where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON DebugBool
|
||||
|
||||
instance ToJSON Configuration where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON Configuration
|
||||
|
||||
defaultConfig :: Configuration
|
||||
defaultConfig =
|
||||
Configuration
|
||||
{ _volume_master = 1
|
||||
, _volume_sound = 1
|
||||
, _volume_music = 1
|
||||
, _graphics_wall_textured = True
|
||||
, _graphics_cloud_shadows = True
|
||||
, _graphics_object_shadows = True
|
||||
, _graphics_resolution_factor = FullRes
|
||||
, _windowX = 800
|
||||
, _windowY = 600
|
||||
, _windowPosX = 0
|
||||
, _windowPosY = 0
|
||||
, _gameplay_rotate_to_wall = True
|
||||
, _debug_booleans = S.singleton Show_ms_frame
|
||||
, _debug_view_clip_bounds = NoRoomClipBoundaries
|
||||
-- , _debug_show_sound = False
|
||||
-- , _debug_seconds_frame = True
|
||||
-- , _debug_noclip = False
|
||||
-- , _debug_mouse_position = False
|
||||
-- , _debug_cr_status = False
|
||||
-- , _debug_cr_awareness = False
|
||||
-- , _debug_view_boundaries = False
|
||||
-- , _debug_pathing = False
|
||||
-- , _debug_walls = False
|
||||
-- , _debug_remove_LOS = False
|
||||
-- , _debug_cull_more_lights = False
|
||||
}
|
||||
|
||||
debugOn :: DebugBool -> Configuration -> Bool
|
||||
debugOn db = S.member db . _debug_booleans
|
||||
+77
-66
@@ -1,88 +1,99 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Creature
|
||||
( module Dodge.Data.Creature
|
||||
, module Dodge.Data.Creature.Misc
|
||||
, module Dodge.Data.Creature.State
|
||||
, module Dodge.Data.Creature.Perception
|
||||
, module Dodge.Data.Creature.Memory
|
||||
, module Dodge.Data.Creature.Stance
|
||||
) where
|
||||
import GHC.Generics
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Creature (
|
||||
module Dodge.Data.Creature,
|
||||
module Dodge.Data.Creature.Misc,
|
||||
module Dodge.Data.Creature.State,
|
||||
module Dodge.Data.Creature.Perception,
|
||||
module Dodge.Data.Creature.Memory,
|
||||
module Dodge.Data.Creature.Stance,
|
||||
) where
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import qualified Data.Map.Strict as M
|
||||
import Dodge.Data.ActionPlan
|
||||
import Dodge.Data.Creature.Memory
|
||||
import Dodge.Data.Creature.Misc
|
||||
import Dodge.Data.Creature.Perception
|
||||
import Dodge.Data.Creature.Stance
|
||||
import Dodge.Data.Creature.State
|
||||
import Dodge.Data.Hammer
|
||||
import Dodge.Data.Item
|
||||
import Dodge.Data.LoadAction
|
||||
import Dodge.Data.Material
|
||||
import Dodge.Data.ActionPlan
|
||||
import Dodge.Data.Hammer
|
||||
import Dodge.Data.Creature.Perception
|
||||
import Dodge.Data.Creature.Memory
|
||||
import Dodge.Data.Creature.Stance
|
||||
import GHC.Generics
|
||||
import Geometry.Data
|
||||
import qualified IntMapHelp as IM
|
||||
import qualified Data.Map.Strict as M
|
||||
|
||||
import Control.Lens
|
||||
data Creature = Creature
|
||||
{ _crPos :: Point2
|
||||
, _crOldPos :: Point2
|
||||
, _crVel :: Point2
|
||||
, _crDir :: Float
|
||||
, _crOldDir :: Float
|
||||
, _crMvDir :: Float
|
||||
, _crTwist :: Float
|
||||
, _crType :: CreatureType
|
||||
, _crID :: Int
|
||||
, _crRad :: Float
|
||||
, _crMass :: Float
|
||||
, _crHP :: Int
|
||||
, _crMaxHP :: Int
|
||||
, _crInv :: IM.IntMap Item
|
||||
, _crInvSel :: InvSel
|
||||
, _crInvCapacity :: Int
|
||||
, _crInvLock :: Bool
|
||||
, _crInvEquipped :: IM.IntMap EquipPosition
|
||||
, _crEquipment :: M.Map EquipPosition Int
|
||||
, _crLeftInvSel :: Maybe Int
|
||||
, _crState :: CreatureState
|
||||
, _crCorpse :: CreatureCorpse --Creature -> Corpse -> SPic
|
||||
, _crMaterial :: Material
|
||||
, _crPastDamage :: Int
|
||||
, _crStance :: Stance
|
||||
, _crActionPlan :: ActionPlan
|
||||
, _crMeleeCooldown :: Int
|
||||
, _crPerception :: Perception
|
||||
, _crMemory :: Memory
|
||||
, _crVocalization :: Vocalization
|
||||
, _crFaction :: Faction
|
||||
, _crGroup :: CrGroup
|
||||
, _crIntention :: Intention
|
||||
, _crMvType :: CrMvType
|
||||
{ _crPos :: Point2
|
||||
, _crOldPos :: Point2
|
||||
, _crVel :: Point2
|
||||
, _crDir :: Float
|
||||
, _crOldDir :: Float
|
||||
, _crMvDir :: Float
|
||||
, _crTwist :: Float
|
||||
, _crType :: CreatureType
|
||||
, _crID :: Int
|
||||
, _crRad :: Float
|
||||
, _crMass :: Float
|
||||
, _crHP :: Int
|
||||
, _crMaxHP :: Int
|
||||
, _crInv :: IM.IntMap Item
|
||||
, _crInvSel :: InvSel
|
||||
, _crInvCapacity :: Int
|
||||
, _crInvLock :: Bool
|
||||
, _crInvEquipped :: IM.IntMap EquipPosition
|
||||
, _crEquipment :: M.Map EquipPosition Int
|
||||
, _crLeftInvSel :: Maybe Int
|
||||
, _crState :: CreatureState
|
||||
, _crCorpse :: CreatureCorpse --Creature -> Corpse -> SPic
|
||||
, _crMaterial :: Material
|
||||
, _crPastDamage :: Int
|
||||
, _crStance :: Stance
|
||||
, _crActionPlan :: ActionPlan
|
||||
, _crMeleeCooldown :: Int
|
||||
, _crPerception :: Perception
|
||||
, _crMemory :: Memory
|
||||
, _crVocalization :: Vocalization
|
||||
, _crFaction :: Faction
|
||||
, _crGroup :: CrGroup
|
||||
, _crIntention :: Intention
|
||||
, _crMvType :: CrMvType
|
||||
, _crHammerPosition :: HammerPosition
|
||||
, _crName :: String
|
||||
, _crStatistics :: CreatureStatistics
|
||||
, _crCamouflage :: CamouflageStatus
|
||||
, _crName :: String
|
||||
, _crStatistics :: CreatureStatistics
|
||||
, _crCamouflage :: CamouflageStatus
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Creature where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Creature where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Creature
|
||||
|
||||
instance FromJSON Creature
|
||||
|
||||
data CreatureCorpse = MakeDefaultCorpse
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON CreatureCorpse where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON CreatureCorpse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON CreatureCorpse
|
||||
|
||||
instance FromJSON CreatureCorpse
|
||||
|
||||
data Intention = Intention
|
||||
{ _targetCr :: Maybe Creature
|
||||
, _mvToPoint :: Maybe Point2
|
||||
, _viewPoint :: Maybe Point2
|
||||
{ _targetCr :: Maybe Creature
|
||||
, _mvToPoint :: Maybe Point2
|
||||
, _viewPoint :: Maybe Point2
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Intention where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Intention where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Intention
|
||||
|
||||
instance FromJSON Intention
|
||||
|
||||
makeLenses ''Creature
|
||||
makeLenses ''Intention
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Distortion where
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Geometry
|
||||
|
||||
data Distortion
|
||||
= RadialDistortion Point2 Point2 Point2 Float
|
||||
deriving (Eq,Ord,Show,Read)
|
||||
|
||||
deriveJSON defaultOptions ''Distortion
|
||||
@@ -9,7 +9,7 @@ import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Control.Lens
|
||||
data FloorItem = FlIt { _flIt :: Item , _flItPos :: Point2 , _flItRot :: Float, _flItID :: Int}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
deriving (Eq,Show,Read,Generic)
|
||||
instance ToJSON FloorItem where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON FloorItem
|
||||
|
||||
+33
-21
@@ -1,39 +1,51 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.HUD where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Geometry.Data
|
||||
|
||||
import Control.Lens
|
||||
data HUDElement
|
||||
import Data.Aeson
|
||||
import GHC.Generics
|
||||
import Geometry.Data
|
||||
|
||||
data HUDElement
|
||||
= DisplayInventory {_subInventory :: SubInventory}
|
||||
| DisplayCarte
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON HUDElement where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON HUDElement where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON HUDElement
|
||||
data SubInventory
|
||||
|
||||
instance FromJSON HUDElement
|
||||
|
||||
data SubInventory
|
||||
= NoSubInventory
|
||||
| TweakInventory
|
||||
| TweakInventory {_tweakInvSel :: Maybe Int}
|
||||
| CombineInventory {_combineInvSel :: Maybe Int}
|
||||
| InspectInventory
|
||||
| LockedInventory
|
||||
| DisplayTerminal {_termID :: Int }
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON SubInventory where
|
||||
| DisplayTerminal {_termID :: Int}
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON SubInventory where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON SubInventory
|
||||
|
||||
instance FromJSON SubInventory
|
||||
|
||||
data HUD = HUD
|
||||
{ _hudElement :: HUDElement
|
||||
, _carteCenter :: Point2
|
||||
, _carteZoom :: Float
|
||||
, _carteRot :: Float
|
||||
{ _hudElement :: HUDElement
|
||||
, _carteCenter :: Point2
|
||||
, _carteZoom :: Float
|
||||
, _carteRot :: Float
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON HUD where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON HUD where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON HUD
|
||||
|
||||
instance FromJSON HUD
|
||||
|
||||
makeLenses ''HUD
|
||||
makeLenses ''HUDElement
|
||||
makeLenses ''SubInventory
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.ItEffect where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Control.Lens
|
||||
-- I believe this is called every frame, not sure when though
|
||||
data ItEffect
|
||||
= NoItEffect
|
||||
| ItInvEffect
|
||||
{_ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
||||
,_ieCounter :: Int
|
||||
}
|
||||
| ItRewindEffect
|
||||
{_ieInv :: ItInvEffect --Item -> Creature -> World -> World
|
||||
-- ,_ieStoredWorlds :: [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
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItEffect where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItEffect
|
||||
data ItInvEffect = NoInvEffect
|
||||
| RewindEffect
|
||||
| ResetAttachmentEffect
|
||||
| OnOffHeldEffect ItInvEffect ItInvEffect
|
||||
| CreateHeldLight
|
||||
| CreateShieldWall
|
||||
| RemoveShieldWall
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItInvEffect where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItInvEffect
|
||||
data ItFloorEffect = NoFloorEffect
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItFloorEffect where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItFloorEffect
|
||||
data ItDropEffect = NoDropEffect
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItDropEffect where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItDropEffect
|
||||
makeLenses ''ItEffect
|
||||
+43
-42
@@ -1,51 +1,52 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Item
|
||||
( module Dodge.Data.Item
|
||||
, module Dodge.Data.Item.Misc
|
||||
, module Dodge.Data.Item.Tweak
|
||||
, module Dodge.Data.Item.Params
|
||||
, module Dodge.Data.Item.Use
|
||||
, module Dodge.Data.Item.Consumption
|
||||
, module Dodge.Data.Item.CurseStatus
|
||||
, module Dodge.Data.Item.Attachment
|
||||
) where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item (
|
||||
module Dodge.Data.Item,
|
||||
module Dodge.Data.Item.Effect,
|
||||
module Dodge.Data.Item.Misc,
|
||||
module Dodge.Data.Item.Tweak,
|
||||
module Dodge.Data.Item.Params,
|
||||
module Dodge.Data.Item.Use,
|
||||
module Dodge.Data.Item.CurseStatus,
|
||||
module Dodge.Data.Item.Attachment,
|
||||
module Dodge.Data.Item.Combine,
|
||||
module Dodge.Data.Item.Targeting,
|
||||
) where
|
||||
|
||||
import Color
|
||||
import Control.Lens
|
||||
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.CurseStatus
|
||||
import Dodge.Data.Item.Misc
|
||||
import Dodge.Data.Item.Tweak
|
||||
import Dodge.Data.Item.Consumption
|
||||
import Dodge.Data.Item.Use
|
||||
import Dodge.Data.Item.Params
|
||||
import Dodge.Data.ItEffect
|
||||
import Dodge.Data.Targeting
|
||||
import Dodge.Combine.Data
|
||||
import Dodge.Data.Item.Attachment
|
||||
import Color
|
||||
import Dodge.Data.Item.Tweak
|
||||
import Dodge.Data.Item.Use
|
||||
import Dodge.Data.Item.Targeting
|
||||
|
||||
data Item = Item
|
||||
{ _itConsumption :: ItemConsumption
|
||||
, _itUse :: ItemUse
|
||||
, _itType :: ItemType
|
||||
{ _itUse :: ItemUse
|
||||
, _itType :: ItemType
|
||||
, _itAttachment :: ItAttachment
|
||||
, _itID :: Maybe Int
|
||||
, _itPos :: ItemPos
|
||||
, _itIsHeld :: Bool
|
||||
, _itEffect :: ItEffect
|
||||
, _itInvSize :: Float
|
||||
, _itInvColor :: Color
|
||||
, _itTargeting :: Targeting
|
||||
, _itDimension :: ItemDimension
|
||||
, _itCurseStatus :: CurseStatus
|
||||
, _itTweaks :: ItemTweaks
|
||||
, _itScope :: Scope
|
||||
, _itValue :: ItemValue
|
||||
, _itParams :: ItemParams
|
||||
, _itID :: Maybe Int
|
||||
, _itPos :: ItemPos
|
||||
, _itIsHeld :: Bool
|
||||
, _itEffect :: ItEffect
|
||||
, _itInvSize :: Float
|
||||
, _itInvColor :: Color
|
||||
, _itTargeting :: Targeting
|
||||
, _itDimension :: ItemDimension
|
||||
, _itCurseStatus :: CurseStatus
|
||||
, _itTweaks :: ItemTweaks
|
||||
, _itScope :: Scope
|
||||
, _itValue :: ItemValue
|
||||
, _itParams :: ItemParams
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Item where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Item
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
makeLenses ''Item
|
||||
deriveJSON defaultOptions ''Item
|
||||
|
||||
@@ -1,43 +1,44 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Item.Attachment
|
||||
where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Geometry.Data
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item.Attachment where
|
||||
|
||||
import Control.Lens
|
||||
import qualified Data.Sequence as Seq
|
||||
data ItAttachment
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Geometry.Data
|
||||
|
||||
data ItAttachment
|
||||
= AttachFuse {_atFuseTime :: Int}
|
||||
| AttachMode {_atMode :: Int}
|
||||
| AttachCharMode {_atCharMode :: Seq.Seq Char }
|
||||
| AttachTargetPos { _atTargetPos :: Point2 }
|
||||
| AttachInt { _atInt :: Int }
|
||||
| AttachMInt { _atMInt :: Maybe Int }
|
||||
| AttachFloat { _atFloat :: Float }
|
||||
| AttachBool { _atBool :: Bool }
|
||||
| AttachTargetPos {_atTargetPos :: Point2}
|
||||
| AttachInt {_atInt :: Int}
|
||||
| AttachMInt {_atMInt :: Maybe Int}
|
||||
| AttachFloat {_atFloat :: Float}
|
||||
| AttachBool {_atBool :: Bool}
|
||||
| NoItAttachment
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItAttachment where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItAttachment
|
||||
data Scope = NoScope
|
||||
| RemoteScope
|
||||
{_scopePos :: Point2 -- ^ a camera offset
|
||||
,_scopeZoom :: Float
|
||||
,_scopeIsCamera :: Bool -- ^ if the camera offset is also the center of vision
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data Scope
|
||||
= NoScope
|
||||
| RemoteScope
|
||||
{ -- | a camera offset
|
||||
_scopePos :: Point2
|
||||
, _scopeZoom :: Float
|
||||
, -- | if the camera offset is also the center of vision
|
||||
_scopeIsCamera :: Bool
|
||||
}
|
||||
| ZoomScope
|
||||
{_scopePos :: Point2 -- ^ a camera offset
|
||||
,_scopeZoomChange :: Int
|
||||
,_scopeZoom :: Float
|
||||
,_scopeDefaultZoom :: Float
|
||||
,_scopeIsCamera :: Bool -- ^ if the camera offset is also the center of vision
|
||||
| ZoomScope
|
||||
{ -- | a camera offset
|
||||
_scopePos :: Point2
|
||||
, _scopeZoomChange :: Int
|
||||
, _scopeZoom :: Float
|
||||
, _scopeDefaultZoom :: Float
|
||||
, -- | if the camera offset is also the center of vision
|
||||
_scopeIsCamera :: Bool
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Scope where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Scope
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
makeLenses ''ItAttachment
|
||||
makeLenses ''Scope
|
||||
deriveJSON defaultOptions ''ItAttachment
|
||||
deriveJSON defaultOptions ''Scope
|
||||
|
||||
@@ -0,0 +1,232 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# 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
|
||||
|
||||
data ItemType = ItemType
|
||||
{ _iyBase :: ItemBaseType
|
||||
, _iyModules :: M.Map ModuleSlot ItemModuleType
|
||||
, _iyStack :: Stack
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data Stack = NoStack | Stack ItAmount
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data CraftType
|
||||
= PIPE
|
||||
| TUBE
|
||||
| HARDWARE
|
||||
| SPRING
|
||||
| DUCTTAPE
|
||||
| CAN
|
||||
| TIN
|
||||
| DRUM
|
||||
| PLANK
|
||||
| SHARDGLASS
|
||||
| PUMP
|
||||
| MOTOR
|
||||
| TRANSFORMER
|
||||
| PRISM
|
||||
| THERMOMETER
|
||||
| LIGHTER
|
||||
| MAGNET
|
||||
| ANTIMATTER
|
||||
| PLATE
|
||||
| TRANSMITTER
|
||||
| MICROCHIP
|
||||
| AIUNIT
|
||||
| CAMERA
|
||||
| MINIDISPLAY -- visual display unit
|
||||
| LED
|
||||
| NAILBOX
|
||||
| IRONBAR
|
||||
| LIGHTSENSOR
|
||||
| SOUNDSENSOR
|
||||
| HEATSENSOR
|
||||
| CREATURESENSOR
|
||||
| WIRE
|
||||
| BATTERY
|
||||
| FUELCELL
|
||||
| PORTABLEFUSION
|
||||
| INCENDIARYMODULE
|
||||
| STATICMODULE
|
||||
| CONCUSSMODULE
|
||||
| FRAGMODULE
|
||||
| FLASHMODULE
|
||||
| BOUNCEMODULE
|
||||
| PENMODULE
|
||||
| TELEPORTMODULE
|
||||
| TIMEMODULE
|
||||
| SIZEMODULE
|
||||
| GRAVITYMODULE
|
||||
deriving (Eq, Ord, Show, Enum, Read)
|
||||
|
||||
data ItemBaseType
|
||||
= HELD {_ibtHeld :: HeldItemType}
|
||||
| LEFT {_ibtLeft :: LeftItemType}
|
||||
| EQUIP {_ibtEquip :: EquipItemType}
|
||||
| Consumable {_ibtConsumable :: ConsumableItemType}
|
||||
| CRAFT CraftType
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data ConsumableItemType
|
||||
= MEDKIT Int
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data EquipItemType
|
||||
= MAGSHIELD
|
||||
| FLAMESHIELD
|
||||
| FRONTARMOUR
|
||||
| WRISTARMOUR
|
||||
| INVISIBILITYEQUIPMENT EquipSite
|
||||
| BRAINHAT
|
||||
| HAT
|
||||
| HEADLAMP
|
||||
| HEADLAMP1
|
||||
| POWERLEGS
|
||||
| SPEEDLEGS
|
||||
| JUMPLEGS
|
||||
| JETPACK
|
||||
| AUTODETECTOR Detector
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data LeftItemType
|
||||
= BOOSTER
|
||||
| REWINDER
|
||||
| BLINKER
|
||||
| BLINKERUNSAFE
|
||||
| SHRINKER
|
||||
| SPAWNER
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data HeldItemType
|
||||
= BANGSTICK {_xNum :: Int}
|
||||
| PISTOL
|
||||
| REVOLVER
|
||||
| REVOLVERX {_xNum :: Int}
|
||||
| MACHINEPISTOL
|
||||
| AUTOPISTOL
|
||||
| SMG
|
||||
| BANGCONE
|
||||
| BLUNDERBUSS
|
||||
| GRAPECANNON {_xNum :: Int}
|
||||
| -- | GRENADELAUNCHER Int -- number of chambers that can be reloaded
|
||||
-- | MORTARCONE / HANDMORTAR
|
||||
MINIGUNX {_xNum :: Int}
|
||||
| VOLLEYGUN {_xNum :: Int}
|
||||
| RIFLE
|
||||
| REPEATER
|
||||
| AUTORIFLE
|
||||
| BURSTRIFLE
|
||||
| -- | FASTBURSTRIFLE
|
||||
-- | COMPLETEBURSTRIFLE
|
||||
BANGROD
|
||||
| ELEPHANTGUN
|
||||
| AMR
|
||||
| AUTOAMR
|
||||
| SNIPERRIFLE
|
||||
| MACHINEGUN
|
||||
| FLAMESPITTER
|
||||
| FLAMETHROWER
|
||||
| FLAMETORRENT
|
||||
| FLAMEWALL
|
||||
| BLOWTORCH
|
||||
| SPARKGUN
|
||||
| TESLAGUN
|
||||
| LASGUN
|
||||
| LASCIRCLE
|
||||
| -- | LASPULSE
|
||||
DUALBEAM
|
||||
| -- | LASGUNSWING
|
||||
|
||||
-- | LASGUNSWAY
|
||||
-- | LASGUNWIDEPULSE
|
||||
LASWIDE {_xNum :: Int}
|
||||
| -- | LASGUNFOCUS Int
|
||||
-- | SONICGUN
|
||||
TRACTORGUN
|
||||
| LAUNCHER
|
||||
| LAUNCHERX {_xNum :: Int}
|
||||
| -- | TRACKINGLAUNCHER
|
||||
REMOTELAUNCHER
|
||||
| POISONSPRAYER
|
||||
| DRONELAUNCHER
|
||||
| SHATTERGUN
|
||||
| FORCEFIELDGUN
|
||||
| HELDDETECTOR Detector
|
||||
| TORCH
|
||||
| FLATSHIELD
|
||||
| KEYCARD Int
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data ItemModuleType
|
||||
= EMPTYMODULE
|
||||
| DRUMMAG
|
||||
| BELTMAG
|
||||
| MAGNETMAG
|
||||
| INCENDBUL
|
||||
| BOUNCEBUL
|
||||
| PENBUL
|
||||
| STATICBUL
|
||||
| CONCUSBUL
|
||||
| TARGCR
|
||||
| TARGLAS
|
||||
| TARGPOS
|
||||
| MAGNETTRAJ
|
||||
| FLECHETRAJ
|
||||
| BEZIERTRAJ
|
||||
| INCENDLAS
|
||||
| SPLITLAS
|
||||
| STATICLAS
|
||||
| WEPTELE
|
||||
| LAUNCHHOME
|
||||
| EXTRABATTERY
|
||||
| ATTACHTORCH
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data Detector
|
||||
= ITEMDETECTOR
|
||||
| CREATUREDETECTOR
|
||||
| WALLDETECTOR
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data ModuleSlot
|
||||
= ModBullet
|
||||
| ModBulletSpawn
|
||||
| ModRifleMag
|
||||
| ModAutoMag
|
||||
| ModTarget
|
||||
| ModBulletTrajectory
|
||||
| ModLauncherHoming
|
||||
| ModBattery
|
||||
| ModTeleport
|
||||
| ModDualBeam
|
||||
| ModHeldAttach
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
instance ToJSONKey ModuleSlot
|
||||
|
||||
instance FromJSONKey ModuleSlot
|
||||
|
||||
deriveJSON defaultOptions ''ItemType
|
||||
deriveJSON defaultOptions ''Stack
|
||||
deriveJSON defaultOptions ''CraftType
|
||||
deriveJSON defaultOptions ''ItemBaseType
|
||||
deriveJSON defaultOptions ''ConsumableItemType
|
||||
deriveJSON defaultOptions ''EquipItemType
|
||||
deriveJSON defaultOptions ''LeftItemType
|
||||
deriveJSON defaultOptions ''HeldItemType
|
||||
deriveJSON defaultOptions ''ItemModuleType
|
||||
deriveJSON defaultOptions ''Detector
|
||||
deriveJSON defaultOptions ''ModuleSlot
|
||||
makeLenses ''ItemType
|
||||
makeLenses ''ItemBaseType
|
||||
makeLenses ''HeldItemType
|
||||
@@ -1,38 +0,0 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Item.Consumption where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Control.Lens
|
||||
import Dodge.Data.Ammo
|
||||
import Dodge.Data.LoadAction
|
||||
import Dodge.Data.ItemAmount
|
||||
data ItemConsumption
|
||||
= LoadableAmmo
|
||||
{ _laAmmoType :: AmmoType
|
||||
, _laMax :: Int
|
||||
, _laLoaded :: Int
|
||||
, _laPrimed :: Bool
|
||||
, _laCycle :: [LoadAction]
|
||||
, _laProgress :: Maybe [LoadAction]
|
||||
}
|
||||
| AutoRecharging
|
||||
{ _arLoaded :: Int
|
||||
, _arMax :: Int
|
||||
, _arTime :: Int
|
||||
, _arProgress :: Int
|
||||
}
|
||||
| ChargeableAmmo
|
||||
{ _wpMaxCharge :: Int
|
||||
, _wpCharge :: Int
|
||||
}
|
||||
| ItemItselfConsumable
|
||||
{ _icAmount :: IcAmount
|
||||
}
|
||||
| NoConsumption
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemConsumption where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemConsumption
|
||||
makeLenses ''ItemConsumption
|
||||
@@ -0,0 +1,55 @@
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item.Effect where
|
||||
|
||||
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
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data ItInvEffect
|
||||
= NoInvEffect
|
||||
| RewindEffect
|
||||
| ResetAttachmentEffect
|
||||
| OnOffHeldEffect ItInvEffect ItInvEffect
|
||||
| CreateHeldLight
|
||||
| CreateShieldWall
|
||||
| RemoveShieldWall
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data ItFloorEffect = NoFloorEffect
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data ItDropEffect = NoDropEffect
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
makeLenses ''ItEffect
|
||||
deriveJSON defaultOptions ''ItEffect
|
||||
deriveJSON defaultOptions ''ItInvEffect
|
||||
deriveJSON defaultOptions ''ItFloorEffect
|
||||
deriveJSON defaultOptions ''ItDropEffect
|
||||
@@ -1,10 +1,23 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item.HeldScroll where
|
||||
import GHC.Generics
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
data HeldScroll = HeldScrollDoNothing | HeldScrollZoom | HeldScrollCharMode
|
||||
deriving (Eq,Ord,Enum,Bounded,Show,Read,Generic)
|
||||
instance ToJSON HeldScroll where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON HeldScroll
|
||||
import Data.Aeson.TH
|
||||
import qualified Data.Sequence as Seq
|
||||
|
||||
data HeldScroll
|
||||
= HeldScrollDoNothing
|
||||
| HeldScrollZoom
|
||||
| HeldScrollCharMode
|
||||
{_hsCharMode :: Seq.Seq Char}
|
||||
| HeldScrollInt
|
||||
{ _hsInt :: Int
|
||||
, _hsMaxInt :: Int
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
makeLenses ''HeldScroll
|
||||
deriveJSON defaultOptions ''HeldScroll
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item.HeldUse where
|
||||
|
||||
import Data.Aeson
|
||||
import Dodge.Combine.Data
|
||||
import Data.Aeson.TH
|
||||
import Dodge.Data.CamouflageStatus
|
||||
import GHC.Generics
|
||||
import Dodge.Data.Item.Combine
|
||||
|
||||
data HeldUse
|
||||
= HeldDoNothing
|
||||
@@ -24,22 +24,12 @@ data HeldUse
|
||||
| HeldTractor
|
||||
| HeldForceField
|
||||
| HeldShatter
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON HeldUse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON HeldUse
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data Cuse
|
||||
= CDoNothing
|
||||
| CHeal Int
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Cuse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON Cuse
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data Euse
|
||||
= EDoNothing
|
||||
@@ -50,12 +40,7 @@ data Euse
|
||||
| ECamouflage CamouflageStatus
|
||||
| EonWristShield
|
||||
| EoffWristShield
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Euse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON Euse
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data Luse
|
||||
= LDoNothing
|
||||
@@ -64,12 +49,7 @@ data Luse
|
||||
| LBlink
|
||||
| LUnsafeBlink
|
||||
| LBoost
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Luse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON Luse
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data HeldMod
|
||||
= HeldModNothing
|
||||
@@ -107,9 +87,10 @@ data HeldMod
|
||||
| RevolverXMod
|
||||
| RevolverXRepeatMod
|
||||
| BangConeMod
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
instance ToJSON HeldMod where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON HeldMod
|
||||
deriveJSON defaultOptions ''Cuse
|
||||
deriveJSON defaultOptions ''HeldMod
|
||||
deriveJSON defaultOptions ''Euse
|
||||
deriveJSON defaultOptions ''HeldUse
|
||||
deriveJSON defaultOptions ''Luse
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item.Params where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Data.Beam
|
||||
import Dodge.Data.ArcStep
|
||||
import Geometry.Data
|
||||
|
||||
import Color
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Dodge.Data.ArcStep
|
||||
import Dodge.Data.Beam
|
||||
import Geometry.Data
|
||||
|
||||
data ItemParams
|
||||
= NoParams
|
||||
| ShellLauncher
|
||||
{ _shellSpinDrag :: Int
|
||||
, _shellSpinAmount :: Int
|
||||
{ _shellSpinDrag :: Int
|
||||
, _shellSpinAmount :: Int
|
||||
, _shellThrustDelay :: Int
|
||||
}
|
||||
| Refracting
|
||||
| Refracting
|
||||
{ _phaseV :: Float
|
||||
, _lasColor :: Color
|
||||
, _lasColor2 :: Color
|
||||
@@ -31,77 +33,83 @@ data ItemParams
|
||||
, _lasDamage :: Int
|
||||
, _lasBeam :: BeamType
|
||||
, _subParams :: Maybe ItemParams
|
||||
, _dbGap :: Float
|
||||
, _dbGap :: Float
|
||||
}
|
||||
| Attracting {_attractionPower :: Point2}
|
||||
| Attracting {_attractionPower :: Point2}
|
||||
| BulletShooter
|
||||
{ _muzVel :: Float
|
||||
, _rifling :: Float
|
||||
, _bore :: Float
|
||||
{ _muzVel :: Float
|
||||
, _rifling :: Float
|
||||
, _bore :: Float
|
||||
, _gunBarrels :: GunBarrels
|
||||
, _recoil :: Float
|
||||
, _torqueAfter :: Float
|
||||
, _recoil :: Float
|
||||
, _torqueAfter :: Float
|
||||
, _randomOffset :: Float
|
||||
}
|
||||
| Sprayer { _sprayNozzles :: [Nozzle] }
|
||||
| Sprayer {_sprayNozzles :: [Nozzle]}
|
||||
| AngleWalk
|
||||
{ _maxWalkAngle :: Float
|
||||
, _currentWalkAngle :: Float
|
||||
, _walkSpeed :: Float
|
||||
}
|
||||
| Arcing
|
||||
{ _currentArc :: Maybe [ArcStep]
|
||||
| Arcing
|
||||
{ _currentArc :: Maybe [ArcStep]
|
||||
, _arcSize :: Float
|
||||
, _arcNumber :: Int
|
||||
, _newArcStep :: NextArcStep --ItemParams -> World -> ArcStep -> State StdGen (Maybe ArcStep)
|
||||
, _previousArcEffect :: PreviousArcEffect
|
||||
}
|
||||
| ParamMID {_paramMID :: Maybe Int}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemParams where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemParams
|
||||
| BoostPropIX {_boostPropIX :: Maybe Int}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
|
||||
|
||||
data PreviousArcEffect = NoPreviousArcEffect | PerturbTillBreakPreviousArc
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON PreviousArcEffect where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON PreviousArcEffect
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
|
||||
|
||||
data GunBarrels
|
||||
= MultiBarrel
|
||||
{ _brlSpread :: BarrelSpread
|
||||
, _brlNum :: Int
|
||||
{ _brlSpread :: BarrelSpread
|
||||
, _brlNum :: Int
|
||||
, _brlInaccuracy :: Float
|
||||
}
|
||||
| RotBarrel
|
||||
{ _brlNum :: Int
|
||||
{ _brlNum :: Int
|
||||
, _brlInaccuracy :: Float
|
||||
}
|
||||
| SingleBarrel {_brlInaccuracy :: Float}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON GunBarrels where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON GunBarrels
|
||||
| SingleBarrel {_brlInaccuracy :: Float}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
|
||||
|
||||
data Nozzle = Nozzle
|
||||
{ _nzPressure :: Float
|
||||
, _nzDir :: Float
|
||||
, _nzMaxWalkAngle :: Float
|
||||
, _nzCurrentWalkAngle :: Float
|
||||
, _nzWalkSpeed :: Float
|
||||
, _nzLength :: Float
|
||||
, _nzWalkSpeed :: Float
|
||||
, _nzLength :: Float
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Nozzle where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Nozzle
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
|
||||
|
||||
data BarrelSpread
|
||||
= AlignedBarrels
|
||||
| SpreadBarrels {_spreadAngle :: Float}
|
||||
| SpreadBarrels {_spreadAngle :: Float}
|
||||
| RotatingBarrels {_rotatingBarrelInaccuracy :: Float}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON BarrelSpread where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON BarrelSpread
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
|
||||
|
||||
makeLenses ''BarrelSpread
|
||||
makeLenses ''ItemParams
|
||||
makeLenses ''Nozzle
|
||||
makeLenses ''GunBarrels
|
||||
deriveJSON defaultOptions ''ItemParams
|
||||
deriveJSON defaultOptions ''PreviousArcEffect
|
||||
deriveJSON defaultOptions ''GunBarrels
|
||||
deriveJSON defaultOptions ''Nozzle
|
||||
deriveJSON defaultOptions ''BarrelSpread
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item.Targeting where
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Geometry.Data
|
||||
|
||||
data Targeting
|
||||
= NoTargeting
|
||||
| Targeting
|
||||
{ _tgPos :: Maybe Point2
|
||||
, _tgUpdate :: TargetUpdate --Item -> Creature -> World -> Targeting -> (World, Targeting)
|
||||
, _tgDraw :: TargetDraw --Item -> Creature -> Configuration -> World -> Picture
|
||||
, _tgID :: Maybe Int
|
||||
, _tgActive :: Bool
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data TargetUpdate
|
||||
= NoTargetUpdate
|
||||
| TargetLaserUpdate
|
||||
| TargetRBPressUpdate
|
||||
| TargetRBCreatureUpdate
|
||||
| TargetCursorUpdate
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data TargetDraw
|
||||
= NoTargetDraw
|
||||
| TargetDistanceDraw
|
||||
| SimpleDrawTarget
|
||||
| TargetRBCreatureDraw
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
makeLenses ''Targeting
|
||||
deriveJSON defaultOptions ''Targeting
|
||||
deriveJSON defaultOptions ''TargetUpdate
|
||||
deriveJSON defaultOptions ''TargetDraw
|
||||
@@ -10,7 +10,6 @@ data ItemTweaks
|
||||
= NoTweaks
|
||||
| Tweakable
|
||||
{ _tweakParams :: IM.IntMap TweakParam
|
||||
, _tweakSel :: Int
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemTweaks where
|
||||
|
||||
+20
-19
@@ -1,4 +1,3 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
@@ -8,16 +7,18 @@ module Dodge.Data.Item.Use (
|
||||
module Dodge.Data.Item.HeldUse,
|
||||
module Dodge.Data.Item.HeldScroll,
|
||||
module Dodge.Data.Item.UseDelay,
|
||||
module Dodge.Data.Item.Use.Consumption,
|
||||
) where
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Dodge.Data.Hammer
|
||||
import Dodge.Data.Item.HeldScroll
|
||||
import Dodge.Data.Item.HeldUse
|
||||
import Dodge.Data.Item.Use.Consumption
|
||||
import Dodge.Data.Item.Use.Equipment
|
||||
import Dodge.Data.Item.UseDelay
|
||||
import GHC.Generics
|
||||
|
||||
data ItemUse
|
||||
= RightUse
|
||||
@@ -27,24 +28,26 @@ data ItemUse
|
||||
, _useHammer :: HammerPosition
|
||||
, _useAim :: AimParams
|
||||
, _heldScroll :: HeldScroll
|
||||
, _heldConsumption :: HeldConsumption
|
||||
}
|
||||
| LeftUse
|
||||
{ _lUse :: Luse
|
||||
, _useDelay :: UseDelay
|
||||
, _useHammer :: HammerPosition
|
||||
, _eqEq :: Equipment
|
||||
, _leftConsumption :: LeftConsumption
|
||||
}
|
||||
| ConsumeUse
|
||||
{ _cUse :: Cuse
|
||||
, _useAmount :: ItAmount
|
||||
}
|
||||
| EquipUse
|
||||
{ _eqEq :: Equipment
|
||||
}
|
||||
| NoUse
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
instance ToJSON ItemUse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemUse
|
||||
| CraftUse
|
||||
{_useAmount :: ItAmount}
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
data AimParams = AimParams
|
||||
{ _aimWeight :: Int
|
||||
, _aimRange :: Float
|
||||
@@ -53,28 +56,26 @@ data AimParams = AimParams
|
||||
, _aimHandlePos :: Float
|
||||
, _aimMuzPos :: Float
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
instance ToJSON AimParams where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON AimParams
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data AimStance
|
||||
= TwoHandTwist
|
||||
| TwoHandFlat
|
||||
| OneHand
|
||||
| LeaveHolstered
|
||||
deriving (Eq, Show, Ord, Enum, Read, Generic)
|
||||
instance ToJSON AimStance where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON AimStance
|
||||
deriving (Eq, Show, Ord, Enum, Read)
|
||||
|
||||
data ItZoom = ItZoom
|
||||
{ _itZoomMax :: Float
|
||||
, _itZoomMin :: Float
|
||||
, _itZoomFac :: Float
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
instance ToJSON ItZoom where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItZoom
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
makeLenses ''ItemUse
|
||||
makeLenses ''AimParams
|
||||
makeLenses ''ItZoom
|
||||
deriveJSON defaultOptions ''ItemUse
|
||||
deriveJSON defaultOptions ''AimParams
|
||||
deriveJSON defaultOptions ''AimStance
|
||||
deriveJSON defaultOptions ''ItZoom
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item.Use.Consumption where
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Dodge.Data.Ammo
|
||||
import Dodge.Data.LoadAction
|
||||
|
||||
data HeldConsumption
|
||||
= LoadableAmmo
|
||||
{ _laAmmoType :: AmmoType
|
||||
, _laMax :: Int
|
||||
, _laLoaded :: Int
|
||||
, _laPrimed :: Bool
|
||||
, _laCycle :: [LoadAction]
|
||||
, _laProgress :: Maybe [LoadAction]
|
||||
}
|
||||
| NoConsumption
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
data LeftConsumption
|
||||
= AutoRecharging
|
||||
{ _arLoaded :: Int
|
||||
, _arMax :: Int
|
||||
, _arTime :: Int
|
||||
, _arProgress :: Int
|
||||
}
|
||||
| ChargeableAmmo
|
||||
{ _wpMaxCharge :: Int
|
||||
, _wpCharge :: Int
|
||||
}
|
||||
deriving (Eq, Show, Read)
|
||||
|
||||
newtype ItAmount = ItAmount {_getItAmount :: Int}
|
||||
deriving (Eq, Ord, Read, Show, Num, Real, Enum, Integral)
|
||||
|
||||
makeLenses ''HeldConsumption
|
||||
makeLenses ''LeftConsumption
|
||||
makeLenses ''ItAmount
|
||||
deriveJSON defaultOptions ''HeldConsumption
|
||||
deriveJSON defaultOptions ''LeftConsumption
|
||||
deriveJSON defaultOptions ''ItAmount
|
||||
@@ -1,10 +0,0 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
|
||||
module Dodge.Data.ItemAmount where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
newtype IcAmount = IcAmount {_toInt :: Int}
|
||||
deriving (Eq,Ord,Num,Integral,Real,Enum,Read,Show,Generic)
|
||||
instance ToJSON IcAmount where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON IcAmount
|
||||
+52
-40
@@ -1,61 +1,73 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Machine
|
||||
where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Data.GenParams
|
||||
import Dodge.Data.Item
|
||||
import Sound.Data
|
||||
import Dodge.Data.Object
|
||||
import Dodge.Data.Damage
|
||||
import Dodge.Data.Sensor
|
||||
import Geometry.Data
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Machine where
|
||||
|
||||
import Color
|
||||
import Dodge.Data.Material
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import qualified Data.IntSet as IS
|
||||
import qualified Data.Map.Strict as M
|
||||
import Control.Lens
|
||||
data MachineDraw = MachineDrawMempty
|
||||
import Dodge.Data.Damage
|
||||
import Dodge.Data.GenParams
|
||||
import Dodge.Data.Item
|
||||
import Dodge.Data.Material
|
||||
import Dodge.Data.Object
|
||||
import Dodge.Data.Sensor
|
||||
import GHC.Generics
|
||||
import Geometry.Data
|
||||
import Sound.Data
|
||||
|
||||
data MachineDraw
|
||||
= MachineDrawMempty
|
||||
| MachineDrawTerminal
|
||||
| MachineDrawTurret
|
||||
| MachineDrawDamageSensor Float (PaletteColor,DecorationShape)
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON MachineDraw where
|
||||
| MachineDrawDamageSensor Float (PaletteColor, DecorationShape)
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON MachineDraw where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON MachineDraw
|
||||
|
||||
instance FromJSON MachineDraw
|
||||
|
||||
data Machine = Machine
|
||||
{ _mcID :: Int
|
||||
, _mcWallIDs :: IS.IntSet
|
||||
, _mcDraw :: MachineDraw --Machine -> SPic
|
||||
{ _mcID :: Int
|
||||
, _mcWallIDs :: IS.IntSet
|
||||
, _mcDraw :: MachineDraw --Machine -> SPic
|
||||
, _mcMaterial :: Material
|
||||
, _mcPos :: Point2
|
||||
, _mcDir :: Float
|
||||
, _mcColor :: Color
|
||||
, _mcHP :: Int
|
||||
, _mcPos :: Point2
|
||||
, _mcDir :: Float
|
||||
, _mcColor :: Color
|
||||
, _mcHP :: Int
|
||||
, _mcSensor :: Sensor
|
||||
, _mcDamage :: [Damage]
|
||||
, _mcType :: MachineType
|
||||
, _mcType :: MachineType
|
||||
, _mcMounts :: M.Map ObjectType Int
|
||||
, _mcName :: String
|
||||
, _mcCloseSound :: Maybe SoundID
|
||||
, _mcName :: String
|
||||
, _mcCloseSound :: Maybe SoundID
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Machine where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Machine where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Machine
|
||||
data MachineType
|
||||
|
||||
instance FromJSON Machine
|
||||
|
||||
data MachineType
|
||||
= StaticMachine
|
||||
| Turret
|
||||
{ _tuWeapon :: Item
|
||||
, _tuTurnSpeed :: Float
|
||||
, _tuFireTime :: Int
|
||||
, _tuMCrID :: Maybe Int
|
||||
{ _tuWeapon :: Item
|
||||
, _tuTurnSpeed :: Float
|
||||
, _tuFireTime :: Int
|
||||
, _tuMCrID :: Maybe Int
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON MachineType where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON MachineType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON MachineType
|
||||
|
||||
instance FromJSON MachineType
|
||||
|
||||
makeLenses ''Machine
|
||||
makeLenses ''MachineType
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.RoomCluster where
|
||||
|
||||
import Control.Lens
|
||||
import qualified Data.Set as S
|
||||
|
||||
data ClusterStatus = ClusterStatus
|
||||
{ _csName :: String
|
||||
, _csLinks :: S.Set ClusterLink
|
||||
}
|
||||
|
||||
data ClusterLink = OnwardCluster | SideCluster | LabelCluster Int
|
||||
deriving (Ord, Eq, Show)
|
||||
|
||||
makeLenses ''ClusterStatus
|
||||
+21
-21
@@ -1,40 +1,40 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Sensor where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Combine.Data
|
||||
import Dodge.Data.Damage.Type
|
||||
|
||||
import Control.Lens
|
||||
data Sensor = NoSensor
|
||||
import Data.Aeson
|
||||
import Data.Aeson.TH
|
||||
import Dodge.Data.Item.Combine
|
||||
import Dodge.Data.Damage.Type
|
||||
|
||||
data Sensor
|
||||
= NoSensor
|
||||
| DamageSensor
|
||||
{ _sensToggle :: Bool
|
||||
, _sensAmount :: Int
|
||||
, _sensType :: DamageType
|
||||
, _sensType :: DamageType
|
||||
}
|
||||
| ProximitySensor
|
||||
{ _proxStatus :: CloseToggle
|
||||
{ _proxStatus :: CloseToggle
|
||||
, _proxDist :: Float
|
||||
, _proxRequirement :: ProximityRequirement
|
||||
, _sensToggle :: Bool
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Sensor where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Sensor
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data ProximityRequirement
|
||||
= RequireHealth {_proxReqMinHealth :: Int}
|
||||
| RequireEquipment {_proxReqEquipment :: ItemBaseType}
|
||||
| RequireImpossible
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ProximityRequirement where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ProximityRequirement
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data CloseToggle = NotClose | IsClose
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON CloseToggle where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON CloseToggle
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
makeLenses ''Sensor
|
||||
makeLenses ''ProximityRequirement
|
||||
deriveJSON defaultOptions ''Sensor
|
||||
deriveJSON defaultOptions ''ProximityRequirement
|
||||
deriveJSON defaultOptions ''CloseToggle
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Targeting where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Geometry.Data
|
||||
import Control.Lens
|
||||
data Targeting
|
||||
= NoTargeting
|
||||
| Targeting
|
||||
{ _tgPos :: Maybe Point2
|
||||
, _tgUpdate :: TargetUpdate --Item -> Creature -> World -> Targeting -> (World, Targeting)
|
||||
, _tgDraw :: TargetDraw --Item -> Creature -> Configuration -> World -> Picture
|
||||
, _tgID :: Maybe Int
|
||||
, _tgActive :: Bool
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Targeting where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Targeting
|
||||
data TargetUpdate = NoTargetUpdate
|
||||
| TargetLaserUpdate
|
||||
| TargetRBPressUpdate
|
||||
| TargetRBCreatureUpdate
|
||||
| TargetCursorUpdate
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TargetUpdate where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TargetUpdate
|
||||
data TargetDraw = NoTargetDraw
|
||||
| TargetDistanceDraw
|
||||
| SimpleDrawTarget
|
||||
| TargetRBCreatureDraw
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TargetDraw where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TargetDraw
|
||||
makeLenses ''Targeting
|
||||
+112
-70
@@ -1,134 +1,176 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Terminal
|
||||
where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Data.WorldEffect
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Terminal where
|
||||
|
||||
import Color
|
||||
import Control.Lens
|
||||
import qualified Data.Text as T
|
||||
import Data.Aeson
|
||||
import qualified Data.Map.Strict as M
|
||||
import qualified Data.Text as T
|
||||
import Dodge.Data.WorldEffect
|
||||
import GHC.Generics
|
||||
|
||||
data TerminalStatus = TerminalOff | TerminalBusy | TerminalReady
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalStatus where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalStatus where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalStatus
|
||||
|
||||
instance FromJSON TerminalStatus
|
||||
|
||||
data TerminalInput = TerminalInput
|
||||
{ _tiText :: T.Text
|
||||
, _tiFocus :: Bool
|
||||
, _tiSel :: (Int,Int)
|
||||
{ _tiText :: T.Text
|
||||
, _tiFocus :: Bool
|
||||
, _tiSel :: (Int, Int)
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalInput where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalInput where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalInput
|
||||
data TerminalBootProgram = TerminalBootMempty
|
||||
|
||||
instance FromJSON TerminalInput
|
||||
|
||||
data TerminalBootProgram
|
||||
= TerminalBootMempty
|
||||
| TerminalBootLines [TerminalLine]
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalBootProgram where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalBootProgram where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalBootProgram
|
||||
|
||||
instance FromJSON TerminalBootProgram
|
||||
|
||||
data Terminal = Terminal
|
||||
{ _tmID :: Int
|
||||
, _tmBootProgram :: TerminalBootProgram -- Terminal -> World -> [TerminalLine]
|
||||
, _tmButtonID :: Int
|
||||
, _tmMachineID :: Int
|
||||
, _tmName :: String
|
||||
, _tmDisplayedLines :: [(String,Color)]
|
||||
, _tmFutureLines :: [TerminalLine]
|
||||
, _tmMaxLines :: Int
|
||||
, _tmTitle :: String
|
||||
, _tmInput :: TerminalInput
|
||||
{ _tmID :: Int
|
||||
, _tmBootProgram :: TerminalBootProgram -- Terminal -> World -> [TerminalLine]
|
||||
, _tmButtonID :: Int
|
||||
, _tmMachineID :: Int
|
||||
, _tmName :: String
|
||||
, _tmDisplayedLines :: [(String, Color)]
|
||||
, _tmFutureLines :: [TerminalLine]
|
||||
, _tmMaxLines :: Int
|
||||
, _tmTitle :: String
|
||||
, _tmInput :: TerminalInput
|
||||
, _tmScrollCommands :: [TerminalCommand]
|
||||
, _tmWriteCommands :: [TerminalCommand]
|
||||
, _tmDeathEffect :: TmWdWd -- Terminal -> World -> World
|
||||
, _tmWriteCommands :: [TerminalCommand]
|
||||
, _tmDeathEffect :: TmWdWd -- Terminal -> World -> World
|
||||
, _tmStatus :: TerminalStatus
|
||||
, _tmCommandHistory :: [String]
|
||||
, _tmToggles :: M.Map String TerminalToggle
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Terminal where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Terminal where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Terminal
|
||||
|
||||
instance FromJSON Terminal
|
||||
|
||||
data TerminalLineString = TerminalLineConst String Color
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalLineString where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalLineString where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalLineString
|
||||
data TmTm = TmId
|
||||
|
||||
instance FromJSON TerminalLineString
|
||||
|
||||
data TmTm
|
||||
= TmId
|
||||
| TmTmClearDisplayedLines
|
||||
| TmTmSetStatus TerminalStatus
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TmTm where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TmTm where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TmTm
|
||||
|
||||
instance FromJSON TmTm
|
||||
|
||||
data TerminalLine
|
||||
= TerminalLineDisplay
|
||||
{_tlPause :: Int
|
||||
,_tlString :: TerminalLineString -- World -> (String, Color)
|
||||
{ _tlPause :: Int
|
||||
, _tlString :: TerminalLineString -- World -> (String, Color)
|
||||
}
|
||||
| TerminalLineTerminalEffect
|
||||
{_tlPause :: Int
|
||||
,_tlTermEffect :: TmTm -- Terminal -> Terminal
|
||||
{ _tlPause :: Int
|
||||
, _tlTermEffect :: TmTm -- Terminal -> Terminal
|
||||
}
|
||||
| TerminalLineEffect
|
||||
{_tlPause :: Int
|
||||
,_tlEffect :: TmWdWd --Terminal -> World -> World
|
||||
{ _tlPause :: Int
|
||||
, _tlEffect :: TmWdWd --Terminal -> World -> World
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalLine where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON TerminalLine
|
||||
|
||||
data TerminalToggle = TerminalToggle
|
||||
{ _ttTriggerID :: Int
|
||||
, _ttDeathEffect :: BlBl
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalToggle where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalToggle where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalToggle
|
||||
data BlBl = BlNegate
|
||||
|
||||
instance FromJSON TerminalToggle
|
||||
|
||||
data BlBl
|
||||
= BlNegate
|
||||
| BlConst Bool
|
||||
| BlId
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON BlBl where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON BlBl where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON BlBl
|
||||
|
||||
instance FromJSON BlBl
|
||||
|
||||
data EffectArguments
|
||||
= NoArguments {_cmdEffect :: [TerminalLine]}
|
||||
| OneArgument
|
||||
{_argType :: String
|
||||
,_argList :: M.Map String [TerminalLine]
|
||||
| OneArgument
|
||||
{ _argType :: String
|
||||
, _argList :: M.Map String [TerminalLine]
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON EffectArguments where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON EffectArguments
|
||||
data TerminalCommandEffect = TerminalCommandArguments EffectArguments
|
||||
|
||||
data TerminalCommandEffect
|
||||
= TerminalCommandArguments EffectArguments
|
||||
| TerminalCommandEffectDamageCoding
|
||||
| TerminalCommandEffectSensorParameter
|
||||
| TerminalCommandEffectLinkedObject
|
||||
| TerminalCommandEffectLinkedObject
|
||||
| TerminalCommandEffectHelp
|
||||
| TerminalCommandEffectNoArgumentsStr String
|
||||
| TerminalCommandEffectCommands
|
||||
| TerminalCommandEffectSingleCommand WdWd [String]
|
||||
| TerminalCommandEffectNone
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalCommandEffect where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalCommandEffect where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalCommandEffect
|
||||
|
||||
instance FromJSON TerminalCommandEffect
|
||||
|
||||
data TerminalCommand = TerminalCommand
|
||||
{ _tcString :: String
|
||||
, _tcAlias :: [String]
|
||||
, _tcHelp :: String
|
||||
, _tcAlias :: [String]
|
||||
, _tcHelp :: String
|
||||
, _tcEffect :: TerminalCommandEffect -- Terminal -> World -> EffectArguments
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TerminalCommand where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TerminalCommand where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TerminalCommand
|
||||
|
||||
instance FromJSON TerminalCommand
|
||||
|
||||
makeLenses ''TerminalInput
|
||||
makeLenses ''Terminal
|
||||
makeLenses ''TerminalLine
|
||||
|
||||
@@ -1,24 +1,31 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
--{-# LANGUAGE DeriveGeneric #-}
|
||||
--{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
module Dodge.Data.WorldEffect where
|
||||
import Dodge.Data.Item
|
||||
import Data.Aeson
|
||||
import GHC.Generics
|
||||
import Dodge.Data.CreatureEffect
|
||||
import Sound.Data
|
||||
import Geometry.Data
|
||||
import Dodge.Data.SoundOrigin
|
||||
data ItCrWdWd = ItCrWdId
|
||||
| ItCrWdItemEffect
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItCrWdWd where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItCrWdWd
|
||||
|
||||
data WdWd = NoWorldEffect
|
||||
| SetTrigger Bool Int
|
||||
module Dodge.Data.WorldEffect where
|
||||
|
||||
import Data.Aeson
|
||||
import Dodge.Data.CreatureEffect
|
||||
import Dodge.Data.Item
|
||||
import Dodge.Data.SoundOrigin
|
||||
import GHC.Generics
|
||||
import Geometry.Data
|
||||
import Sound.Data
|
||||
|
||||
data ItCrWdWd
|
||||
= ItCrWdId
|
||||
| ItCrWdItemEffect
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON ItCrWdWd where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON ItCrWdWd
|
||||
|
||||
data WdWd
|
||||
= NoWorldEffect
|
||||
| SetTrigger Bool Int
|
||||
| WorldEffects [WdWd]
|
||||
| SetLSCol Point3 Int
|
||||
| AccessTerminal (Maybe Int)
|
||||
@@ -29,55 +36,81 @@ data WdWd = NoWorldEffect
|
||||
| WdWdNegateTrig Int
|
||||
| WdWdFromItixCrixWdWd Int Int ItCrWdWd
|
||||
| WdWdFromItCrixWdWd Item Int ItCrWdWd
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON WdWd where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON WdWd where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON WdWd
|
||||
data WdP2 = WdP2Const Point2
|
||||
|
||||
instance FromJSON WdWd
|
||||
|
||||
data WdP2
|
||||
= WdP2Const Point2
|
||||
| WdYouPos
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON WdP2 where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON WdP2 where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON WdP2
|
||||
data MdWdWd = MdWdId
|
||||
|
||||
instance FromJSON WdP2
|
||||
|
||||
data MdWdWd
|
||||
= MdWdId
|
||||
| MdTrigIf MdWdWd MdWdWd
|
||||
| MdSetLSCol Point3
|
||||
| MdFlickerUpdate
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON MdWdWd where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON MdWdWd where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON MdWdWd
|
||||
data WdBl = WdTrig Int
|
||||
|
||||
instance FromJSON MdWdWd
|
||||
|
||||
data WdBl
|
||||
= WdTrig Int
|
||||
| WdBlDoorMoving Int
|
||||
| WdBlConst Bool
|
||||
| WdBlNegate WdBl
|
||||
| WdBlCrFilterNearPoint Float Point2 CrBl
|
||||
| WdBlBtOn Int
|
||||
| WdBlBtNotOff Int
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON WdBl where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON WdBl where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON WdBl
|
||||
data WdP2f = WdP2f0
|
||||
|
||||
instance FromJSON WdBl
|
||||
|
||||
data WdP2f
|
||||
= WdP2f0
|
||||
| WdP2fDoorPosition Int
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON WdP2f where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON WdP2f where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON WdP2f
|
||||
data DrWdWd = DrWdId
|
||||
|
||||
instance FromJSON WdP2f
|
||||
|
||||
data DrWdWd
|
||||
= DrWdId
|
||||
| DrWdMakeDoorDebris
|
||||
| DrWdMechanismStepwise Int [Int] [(Point2,Point2)]
|
||||
| DrWdMechanismStepwise Int [Int] [(Point2, Point2)]
|
||||
| DoorMechanism
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON DrWdWd where
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON DrWdWd where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON DrWdWd
|
||||
data TmWdWd = TmWdId
|
||||
|
||||
instance FromJSON DrWdWd
|
||||
|
||||
data TmWdWd
|
||||
= TmWdId
|
||||
| TmWdWdDisconnectTerminal
|
||||
| TmWdWdfromWdWd WdWd
|
||||
| TmWdWdTermSound SoundID
|
||||
| TmWdWdDoDeathTriggers
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON TmWdWd where
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TmWdWd where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TmWdWd
|
||||
|
||||
instance FromJSON TmWdWd
|
||||
|
||||
Reference in New Issue
Block a user