Cleanup
This commit is contained in:
+84
-90
@@ -1,83 +1,66 @@
|
||||
module Dodge.Creature
|
||||
( module Dodge.Creature
|
||||
, module Dodge.Creature.ChaseCrit
|
||||
, module Dodge.Creature.Inanimate
|
||||
, launcherCrit
|
||||
, pistolCrit
|
||||
, ltAutoCrit
|
||||
, spreadGunCrit
|
||||
, autoCrit
|
||||
, armourChaseCrit
|
||||
module Dodge.Creature (
|
||||
module Dodge.Creature,
|
||||
module Dodge.Creature.ChaseCrit,
|
||||
module Dodge.Creature.Inanimate,
|
||||
launcherCrit,
|
||||
pistolCrit,
|
||||
ltAutoCrit,
|
||||
spreadGunCrit,
|
||||
autoCrit,
|
||||
armourChaseCrit,
|
||||
) where
|
||||
import Dodge.Creature.State.Data
|
||||
import Dodge.Item.Equipment.Booster
|
||||
import Dodge.Item.Weapon.Utility
|
||||
--import Dodge.Item.Weapon.Drone
|
||||
import Dodge.Item.Craftable
|
||||
import Dodge.Creature.LauncherCrit
|
||||
import Dodge.Creature.PistolCrit
|
||||
import Dodge.Creature.LtAutoCrit
|
||||
import Dodge.Creature.SpreadGunCrit
|
||||
|
||||
import Control.Lens
|
||||
import Dodge.Creature.ArmourChase
|
||||
import Dodge.Creature.AutoCrit
|
||||
import Dodge.Creature.ChaseCrit
|
||||
import Dodge.Creature.ArmourChase
|
||||
import Dodge.Creature.Inanimate
|
||||
import Dodge.Creature.LauncherCrit
|
||||
import Dodge.Creature.LtAutoCrit
|
||||
import Dodge.Creature.PistolCrit
|
||||
import Dodge.Creature.SpreadGunCrit
|
||||
import Dodge.Data
|
||||
import Dodge.Default
|
||||
import Dodge.Item.Weapon
|
||||
import Dodge.Item.Equipment
|
||||
import Dodge.Item.Consumable
|
||||
import Dodge.Creature.Inanimate
|
||||
import Picture
|
||||
import Dodge.Item.Craftable
|
||||
import Dodge.Item.Equipment
|
||||
import Dodge.Item.Weapon
|
||||
import Geometry.Data
|
||||
import qualified IntMapHelp as IM
|
||||
|
||||
--import Data.List
|
||||
--import Data.Char
|
||||
--import Data.Maybe
|
||||
--import Data.Function
|
||||
import Control.Lens
|
||||
--import System.Random
|
||||
--import qualified Data.Set as S
|
||||
--import qualified Data.Map as M
|
||||
import Picture
|
||||
|
||||
spawnerCrit :: Creature
|
||||
spawnerCrit = defaultCreature
|
||||
{ --_crUpdate = stateUpdate $ spawnerAI chaseCrit
|
||||
_crHP = 300
|
||||
, _crInv = IM.empty -- IM.fromList [(0,frontArmour)]
|
||||
}
|
||||
spawnerCrit =
|
||||
defaultCreature
|
||||
& crHP .~ 300
|
||||
& crInv .~ IM.empty
|
||||
& crType . skinUpper .~ light4 blue
|
||||
|
||||
miniGunCrit :: Creature
|
||||
miniGunCrit = defaultCreature
|
||||
{ _crInv = IM.fromList [(0,miniGunX 3)]
|
||||
, _crRad = 10
|
||||
, _crState = defaultState
|
||||
, _crHP = 500
|
||||
, _crMvType = defaultAimMvType
|
||||
}
|
||||
miniGunCrit =
|
||||
defaultCreature
|
||||
& crInv .~ IM.fromList [(0, miniGunX 3)]
|
||||
& crType . skinUpper .~ light4 red
|
||||
& crType . humanoidAI .~ MiniGunAI
|
||||
|
||||
longCrit :: Creature
|
||||
longCrit = defaultCreature
|
||||
{ _crActionPlan = ActionPlan
|
||||
longCrit =
|
||||
defaultCreature
|
||||
& crActionPlan .~
|
||||
ActionPlan
|
||||
{ _apImpulse = []
|
||||
, _apAction = []
|
||||
, _apStrategy = StrategyActions WatchAndWait [StartSentinelPost]
|
||||
, _apGoal = []
|
||||
}
|
||||
, _crInv = IM.fromList [(0,sniperRifle),(1,medkit 100)]
|
||||
, _crRad = 10
|
||||
, _crHP = 150
|
||||
}
|
||||
& crInv .~ IM.fromList [(0, sniperRifle), (1, medkit 100)]
|
||||
& crType . humanoidAI .~ LongAI
|
||||
& crType . skinUpper .~ light4 red
|
||||
|
||||
multGunCrit :: Creature
|
||||
multGunCrit = defaultCreature
|
||||
{ _crInv = IM.fromList [(0,volleyGun 4),(1,medkit 100)]
|
||||
, _crRad = 10
|
||||
, _crHP = 300
|
||||
}
|
||||
multGunCrit =
|
||||
defaultCreature
|
||||
& crInv .~ IM.fromList [(0, volleyGun 4), (1, medkit 100)]
|
||||
& crType . skinUpper .~ light4 red
|
||||
& crType . humanoidAI .~ MultGunAI
|
||||
|
||||
@@ -85,29 +68,31 @@ addArmour :: Creature -> Creature
|
||||
addArmour = over crInv insarmour
|
||||
where
|
||||
insarmour xs = IM.insert (IM.newKey xs) frontArmour xs
|
||||
|
||||
{- | The creature you control.
|
||||
ID 0. -}
|
||||
ID 0.
|
||||
-}
|
||||
startCr :: Creature
|
||||
startCr = defaultCreature
|
||||
{ _crPos = V2 20 0
|
||||
, _crOldPos = V2 20 0
|
||||
, _crDir = pi/2
|
||||
, _crMvDir = pi/2
|
||||
, _crID = 0
|
||||
, _crRad = 10
|
||||
, _crMass = 10
|
||||
, _crHP = 1000
|
||||
, _crMaxHP = 1500
|
||||
, _crInv = startInventory
|
||||
, _crCorpse = MakeDefaultCorpse
|
||||
, _crFaction = PlayerFaction
|
||||
, _crMvType = MvWalking yourDefaultSpeed
|
||||
}
|
||||
startCr =
|
||||
defaultCreature
|
||||
& crPos .~ V2 20 0
|
||||
& crOldPos .~ V2 20 0
|
||||
& crDir .~ pi / 2
|
||||
& crMvDir .~ pi / 2
|
||||
& crID .~ 0
|
||||
& crHP .~ 1000
|
||||
& crMaxHP .~ 1500
|
||||
& crInv .~ startInventory
|
||||
& crCorpse .~ MakeDefaultCorpse
|
||||
& crFaction .~ PlayerFaction
|
||||
& crMvType .~ MvWalking yourDefaultSpeed
|
||||
& crType . skinUpper .~ light4 black
|
||||
& crType . humanoidAI .~ YourAI
|
||||
{- | Items you start with. -}
|
||||
|
||||
-- | Items you start with.
|
||||
startInvList :: [Item]
|
||||
startInvList = []
|
||||
|
||||
startInventory :: IM.IntMap Item
|
||||
startInventory = IM.fromList $ zip [0 ..] startInvList
|
||||
|
||||
@@ -183,14 +168,16 @@ inventoryX c = case c of
|
||||
, makeTypeCraftNum 5 STATICMODULE
|
||||
]
|
||||
'H' -> [shatterGun]
|
||||
'I' -> [ makeTypeCraft TELEPORTMODULE
|
||||
'I' ->
|
||||
[ makeTypeCraft TELEPORTMODULE
|
||||
, makeTypeCraftNum 2 MICROCHIP
|
||||
]
|
||||
'J' -> [ lasGun
|
||||
'J' ->
|
||||
[ lasGun
|
||||
, lasGun
|
||||
, dualBeam
|
||||
-- , lasWidePulse
|
||||
, makeTypeCraftNum 10 TRANSFORMER
|
||||
, -- , lasWidePulse
|
||||
makeTypeCraftNum 10 TRANSFORMER
|
||||
]
|
||||
'K' ->
|
||||
[ autoRifle
|
||||
@@ -211,7 +198,10 @@ inventoryX c = case c of
|
||||
_ -> []
|
||||
|
||||
testInventory :: IM.IntMap Item
|
||||
testInventory = IM.fromList $ zip [0..]
|
||||
testInventory =
|
||||
IM.fromList $
|
||||
zip
|
||||
[0 ..]
|
||||
[ makeTypeCraftNum 9 PIPE
|
||||
, autoAmr
|
||||
, brainHat
|
||||
@@ -226,10 +216,10 @@ testInventory = IM.fromList $ zip [0..]
|
||||
, makeTypeCraft INCENDIARYMODULE
|
||||
, makeTypeCraft STATICMODULE
|
||||
, makeTypeCraft CONCUSSMODULE
|
||||
-- , bounceModule
|
||||
, -- , bounceModule
|
||||
-- , medkit 50 & itConsumption . itAmount .~ 3
|
||||
, teleportModule
|
||||
-- , makeTypeCraftNum 1 LIGHTER
|
||||
teleportModule
|
||||
, -- , makeTypeCraftNum 1 LIGHTER
|
||||
-- , makeTypeCraftNum 15 TUBE
|
||||
-- , makeTypeCraftNum 9 TRANSFORMER
|
||||
-- , makeTypeCraftNum 5 CREATURESENSOR
|
||||
@@ -239,17 +229,21 @@ testInventory = IM.fromList $ zip [0..]
|
||||
-- , makeTypeCraftNum 3 BATTERY
|
||||
-- , makeTypeCraftNum 1 MAGNET
|
||||
-- , makeTypeCraftNum 1 TRANSMITTER
|
||||
, makeTypeCraftNum 10 HARDWARE
|
||||
makeTypeCraftNum 10 HARDWARE
|
||||
, makeTypeCraftNum 3 SPRING
|
||||
, makeTypeCraftNum 10 CAN
|
||||
-- , makeTypeCraftNum 3 TIN
|
||||
, makeTypeCraftNum 3 PLANK
|
||||
, -- , makeTypeCraftNum 3 TIN
|
||||
makeTypeCraftNum 3 PLANK
|
||||
-- , makeTypeCraftNum 1 MOTOR
|
||||
-- , makeTypeCraftNum 5 MICROCHIP
|
||||
-- , makeTypeCraftNum 5 AIUNIT
|
||||
]
|
||||
|
||||
stackedInventory :: IM.IntMap Item
|
||||
stackedInventory = IM.fromList $ zip [0..]
|
||||
stackedInventory =
|
||||
IM.fromList $
|
||||
zip
|
||||
[0 ..]
|
||||
[ --sonicGun
|
||||
burstRifle
|
||||
, pipe
|
||||
@@ -260,12 +254,12 @@ stackedInventory = IM.fromList $ zip [0..]
|
||||
, teslaGun
|
||||
, blinkGun
|
||||
, miniGunX 3
|
||||
-- ,multGun
|
||||
,boosterGun
|
||||
, -- ,multGun
|
||||
boosterGun
|
||||
, remoteLauncher
|
||||
, flatShield
|
||||
-- ,grenade
|
||||
,spawnGun (lamp 5)
|
||||
, -- ,grenade
|
||||
spawnGun (lamp 5)
|
||||
, lasGun
|
||||
, flameThrower
|
||||
, poisonSprayer
|
||||
@@ -282,6 +276,6 @@ stackedInventory = IM.fromList $ zip [0..]
|
||||
--,medkit 50
|
||||
--,bezierGun
|
||||
]
|
||||
|
||||
--smokeGenGun :: Item
|
||||
--smokeGenGun = effectGun "smoke" $ const spawnSmokeAtCursor
|
||||
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Creature.State.Data
|
||||
where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
--import Geometry
|
||||
import Geometry.Data
|
||||
import Color
|
||||
|
||||
import Control.Lens
|
||||
import qualified Data.IntSet as IS
|
||||
data CreatureDropType
|
||||
= DropAll
|
||||
| DropAmount Int
|
||||
| DropSpecific [Int]
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON CreatureDropType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON CreatureDropType
|
||||
data CrSpState
|
||||
= Barrel { _piercedPoints :: [Point2]}
|
||||
| GenCr
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON CrSpState where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON CrSpState
|
||||
data Faction
|
||||
= GenericFaction Int
|
||||
| ZombieFaction
|
||||
| EncircleFlock
|
||||
| ChaseCritters
|
||||
| SpawnedBy Int
|
||||
| NoFaction
|
||||
| ColorFaction Color
|
||||
| PlayerFaction
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON Faction where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Faction
|
||||
data CrGroup
|
||||
= LoneWolf
|
||||
| Swarm
|
||||
{ _swarm :: IS.IntSet
|
||||
, _crGroupID :: Int
|
||||
}
|
||||
| CrGroupID { _crGroupID :: Int }
|
||||
| ShieldGroup
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON CrGroup where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON CrGroup
|
||||
makeLenses ''CrSpState
|
||||
makeLenses ''CrGroup
|
||||
+217
-209
@@ -1,3 +1,10 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE DerivingStrategies #-}
|
||||
{-# LANGUAGE FlexibleInstances #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
||||
|
||||
{- |
|
||||
Contains base datatypes that cannot be seperated into
|
||||
different modules because they are interdependent;
|
||||
@@ -6,193 +13,171 @@ circular imports are probably not a good idea.
|
||||
WARNING: orphan instances concerning Aeson classes and SDL datatypes have been introduced.
|
||||
The warnings have been disabled.
|
||||
-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE FlexibleInstances #-}
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE DerivingStrategies #-}
|
||||
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
||||
module Dodge.Data
|
||||
( module Dodge.Data
|
||||
, module Dodge.Data.CrGroupParams
|
||||
, module Dodge.Data.Corpse
|
||||
, module Dodge.Data.ActionPlan
|
||||
, module Dodge.Data.CreatureEffect
|
||||
, module Dodge.Data.WorldEffect
|
||||
, module Dodge.Data.Button
|
||||
, module Dodge.Data.Item.Params
|
||||
, module Dodge.Data.Beam
|
||||
, module Dodge.Data.Targeting
|
||||
, module Dodge.Data.ItEffect
|
||||
, module Dodge.Data.Hammer
|
||||
, module Dodge.Data.Item.Use
|
||||
, module Dodge.Data.Item.UseDelay
|
||||
, module Dodge.Data.ArcStep
|
||||
, module Dodge.Data.CrWlID
|
||||
, module Dodge.Data.Item.HeldUse
|
||||
, module Dodge.Data.Item.HeldScroll
|
||||
, module Dodge.Data.Item.Consumption
|
||||
, module Dodge.Data.Gas
|
||||
, module Dodge.Data.Ammo
|
||||
, module Dodge.Data.Payload
|
||||
, module Dodge.Data.RadarSweep
|
||||
, module Dodge.Data.PosEvent
|
||||
, module Dodge.Data.EnergyBall
|
||||
, module Dodge.Data.Flame
|
||||
, module Dodge.Data.Magnet
|
||||
, module Dodge.Data.Spark
|
||||
, module Dodge.Data.Bullet
|
||||
, module Dodge.Data.Door
|
||||
, module Dodge.Data.Item
|
||||
, module Dodge.Data.HUD
|
||||
, module Dodge.Data.Cloud
|
||||
, module Dodge.Data.RightButtonOptions
|
||||
, module Dodge.Data.Material
|
||||
, module Dodge.Data.LightSource
|
||||
, module Dodge.Data.Creature
|
||||
, module Dodge.Data.Block
|
||||
, module Dodge.Data.Flare
|
||||
, module Dodge.Data.LoadAction
|
||||
, module Dodge.Data.ForegroundShape
|
||||
, module Dodge.Data.Wall
|
||||
, module Dodge.Data.Object
|
||||
, module Dodge.Data.Zoning
|
||||
, module Dodge.Data.Bounds
|
||||
, module Dodge.Data.Sensor
|
||||
, module Dodge.Combine.Data
|
||||
, module Dodge.Distortion.Data
|
||||
, module Dodge.Data.Damage
|
||||
, module Dodge.Data.SoundOrigin
|
||||
, module Dodge.Creature.State.Data
|
||||
, module Dodge.Creature.Stance.Data
|
||||
, module Dodge.Creature.Perception.Data
|
||||
, module Dodge.Creature.Memory.Data
|
||||
, module Dodge.Item.Attachment.Data
|
||||
, module Dodge.Item.Data
|
||||
, module Dodge.Config.Data
|
||||
, module MaybeHelp
|
||||
, module Dodge.Data.ItemAmount
|
||||
, module Dodge.RoomCluster.Data
|
||||
, module Dodge.Data.Room
|
||||
, module Dodge.Data.RadarBlip
|
||||
, module Dodge.Data.PathGraph
|
||||
, module Dodge.Data.Gust
|
||||
, module Dodge.Data.Projectile
|
||||
, module Dodge.Data.Modification
|
||||
, module Dodge.Data.PressPlate
|
||||
, module Dodge.Data.Laser
|
||||
, module Dodge.Data.TeslaArc
|
||||
, module Dodge.Data.Shockwave
|
||||
, module Dodge.Data.Prop
|
||||
, module Dodge.Data.LinearShockwave
|
||||
, module Dodge.Data.TractorBeam
|
||||
, module Dodge.Data.MountedObject
|
||||
, module Dodge.Data.Machine
|
||||
, module Dodge.Data.GenParams
|
||||
, module Dodge.Data.Terminal
|
||||
, module Dodge.Data.FloorItem
|
||||
module Dodge.Data (
|
||||
module Dodge.Data,
|
||||
module Dodge.Data.CrGroupParams,
|
||||
module Dodge.Data.Corpse,
|
||||
module Dodge.Data.ActionPlan,
|
||||
module Dodge.Data.CreatureEffect,
|
||||
module Dodge.Data.WorldEffect,
|
||||
module Dodge.Data.Button,
|
||||
module Dodge.Data.Beam,
|
||||
module Dodge.Data.Targeting,
|
||||
module Dodge.Data.ItEffect,
|
||||
module Dodge.Data.Hammer,
|
||||
module Dodge.Data.ArcStep,
|
||||
module Dodge.Data.CrWlID,
|
||||
module Dodge.Data.Gas,
|
||||
module Dodge.Data.Ammo,
|
||||
module Dodge.Data.Payload,
|
||||
module Dodge.Data.RadarSweep,
|
||||
module Dodge.Data.PosEvent,
|
||||
module Dodge.Data.EnergyBall,
|
||||
module Dodge.Data.Flame,
|
||||
module Dodge.Data.Magnet,
|
||||
module Dodge.Data.Spark,
|
||||
module Dodge.Data.Bullet,
|
||||
module Dodge.Data.Door,
|
||||
module Dodge.Data.Item,
|
||||
module Dodge.Data.HUD,
|
||||
module Dodge.Data.Cloud,
|
||||
module Dodge.Data.RightButtonOptions,
|
||||
module Dodge.Data.Material,
|
||||
module Dodge.Data.LightSource,
|
||||
module Dodge.Data.Creature,
|
||||
module Dodge.Data.Block,
|
||||
module Dodge.Data.Flare,
|
||||
module Dodge.Data.LoadAction,
|
||||
module Dodge.Data.ForegroundShape,
|
||||
module Dodge.Data.Wall,
|
||||
module Dodge.Data.Object,
|
||||
module Dodge.Data.Zoning,
|
||||
module Dodge.Data.Bounds,
|
||||
module Dodge.Data.Sensor,
|
||||
module Dodge.Combine.Data,
|
||||
module Dodge.Distortion.Data,
|
||||
module Dodge.Data.Damage,
|
||||
module Dodge.Data.SoundOrigin,
|
||||
module Dodge.Creature.Stance.Data,
|
||||
module Dodge.Creature.Perception.Data,
|
||||
module Dodge.Creature.Memory.Data,
|
||||
module Dodge.Config.Data,
|
||||
module MaybeHelp,
|
||||
module Dodge.Data.ItemAmount,
|
||||
module Dodge.RoomCluster.Data,
|
||||
module Dodge.Data.Room,
|
||||
module Dodge.Data.RadarBlip,
|
||||
module Dodge.Data.PathGraph,
|
||||
module Dodge.Data.Gust,
|
||||
module Dodge.Data.Projectile,
|
||||
module Dodge.Data.Modification,
|
||||
module Dodge.Data.PressPlate,
|
||||
module Dodge.Data.Laser,
|
||||
module Dodge.Data.TeslaArc,
|
||||
module Dodge.Data.Shockwave,
|
||||
module Dodge.Data.Prop,
|
||||
module Dodge.Data.LinearShockwave,
|
||||
module Dodge.Data.TractorBeam,
|
||||
module Dodge.Data.MountedObject,
|
||||
module Dodge.Data.Machine,
|
||||
module Dodge.Data.GenParams,
|
||||
module Dodge.Data.Terminal,
|
||||
module Dodge.Data.FloorItem,
|
||||
) where
|
||||
import Dodge.Data.FloorItem
|
||||
|
||||
import Color
|
||||
import Control.Lens
|
||||
import Control.Monad.State
|
||||
import Data.Aeson
|
||||
import GHC.Generics
|
||||
import Dodge.Data.Terminal
|
||||
import Dodge.Data.GenParams
|
||||
import Dodge.Data.Machine
|
||||
import Dodge.Data.MountedObject
|
||||
import Dodge.Data.TractorBeam
|
||||
import Dodge.Data.LinearShockwave
|
||||
import Dodge.Data.Prop
|
||||
import Dodge.Data.Shockwave
|
||||
import Dodge.Data.TeslaArc
|
||||
import Dodge.Data.Laser
|
||||
import Dodge.Data.PressPlate
|
||||
import Dodge.Data.Modification
|
||||
import Dodge.Data.Projectile
|
||||
import Dodge.Data.Gust
|
||||
import Dodge.Data.CrGroupParams
|
||||
import Dodge.Data.Corpse
|
||||
import Dodge.Data.ActionPlan
|
||||
import Dodge.Data.CreatureEffect
|
||||
import Dodge.Data.WorldEffect
|
||||
import Dodge.Data.Button
|
||||
import Dodge.Data.Item.Params
|
||||
import Dodge.Data.Beam
|
||||
import Dodge.Data.Targeting
|
||||
import Dodge.Data.ItEffect
|
||||
import Dodge.Data.Hammer
|
||||
import Dodge.Data.Item.Use
|
||||
import Dodge.Data.Item.UseDelay
|
||||
import Dodge.Data.CrWlID
|
||||
import Dodge.Data.ArcStep
|
||||
import Dodge.Data.Item.HeldUse
|
||||
import Dodge.Data.Item.HeldScroll
|
||||
import Dodge.Data.Item.Consumption
|
||||
import Dodge.Data.Gas
|
||||
import Dodge.Data.Ammo
|
||||
import Dodge.Data.Payload
|
||||
import Dodge.Data.RadarSweep
|
||||
import Dodge.Data.PosEvent
|
||||
import Dodge.Data.EnergyBall
|
||||
import Dodge.Data.Flame
|
||||
import Dodge.Data.Magnet
|
||||
import Dodge.Data.Spark
|
||||
import Dodge.Data.Bullet
|
||||
import Dodge.Data.Door
|
||||
import Dodge.Data.Item
|
||||
import Dodge.Data.HUD
|
||||
import Dodge.Data.Cloud
|
||||
import Dodge.Data.RadarBlip
|
||||
import Dodge.Data.RightButtonOptions
|
||||
import Dodge.Data.LightSource
|
||||
import Dodge.Data.Creature
|
||||
import Dodge.Data.Room
|
||||
import Dodge.Data.Block
|
||||
import Dodge.Data.Sensor
|
||||
import Dodge.Data.Flare
|
||||
import Dodge.Data.PathGraph
|
||||
import Dodge.Data.Object
|
||||
import Dodge.Data.Zoning
|
||||
import Dodge.Data.ForegroundShape
|
||||
import Dodge.Data.LoadAction
|
||||
import Dodge.Data.Material
|
||||
import Dodge.Data.Wall
|
||||
import Dodge.Data.Bounds
|
||||
import Dodge.RoomCluster.Data
|
||||
import Dodge.Data.ItemAmount
|
||||
import Dodge.Creature.State.Data
|
||||
import Dodge.Creature.Stance.Data
|
||||
import Dodge.Creature.Perception.Data
|
||||
import Dodge.Creature.Memory.Data
|
||||
import Dodge.Distortion.Data
|
||||
import Dodge.Data.SoundOrigin
|
||||
import Dodge.Data.Damage
|
||||
import Data.Graph.Inductive
|
||||
import qualified Data.IntSet as IS
|
||||
import qualified Data.Map.Strict as M
|
||||
import Data.Preload
|
||||
import qualified Data.Set as S
|
||||
import qualified Data.Text as T
|
||||
import Data.Tile
|
||||
import Dodge.Combine.Data
|
||||
import Dodge.Config.Data
|
||||
import Dodge.Config.KeyConfig
|
||||
import Dodge.Item.Attachment.Data
|
||||
import Dodge.Item.Data
|
||||
import Data.Preload
|
||||
import Picture.Data
|
||||
import Geometry.Data
|
||||
import Geometry.ConvexPoly
|
||||
import Sound.Data
|
||||
import Dodge.Creature.Memory.Data
|
||||
import Dodge.Creature.Perception.Data
|
||||
import Dodge.Creature.Stance.Data
|
||||
import Dodge.Data.ActionPlan
|
||||
import Dodge.Data.Ammo
|
||||
import Dodge.Data.ArcStep
|
||||
import Dodge.Data.Beam
|
||||
import Dodge.Data.Block
|
||||
import Dodge.Data.Bounds
|
||||
import Dodge.Data.Bullet
|
||||
import Dodge.Data.Button
|
||||
import Dodge.Data.Cloud
|
||||
import Dodge.Data.Corpse
|
||||
import Dodge.Data.CrGroupParams
|
||||
import Dodge.Data.CrWlID
|
||||
import Dodge.Data.Creature
|
||||
import Dodge.Data.CreatureEffect
|
||||
import Dodge.Data.Damage
|
||||
import Dodge.Data.Door
|
||||
import Dodge.Data.EnergyBall
|
||||
import Dodge.Data.Flame
|
||||
import Dodge.Data.Flare
|
||||
import Dodge.Data.FloorItem
|
||||
import Dodge.Data.ForegroundShape
|
||||
import Dodge.Data.Gas
|
||||
import Dodge.Data.GenParams
|
||||
import Dodge.Data.Gust
|
||||
import Dodge.Data.HUD
|
||||
import Dodge.Data.Hammer
|
||||
import Dodge.Data.ItEffect
|
||||
import Dodge.Data.Item
|
||||
import Dodge.Data.ItemAmount
|
||||
import Dodge.Data.Laser
|
||||
import Dodge.Data.LightSource
|
||||
import Dodge.Data.LinearShockwave
|
||||
import Dodge.Data.LoadAction
|
||||
import Dodge.Data.Machine
|
||||
import Dodge.Data.Magnet
|
||||
import Dodge.Data.Material
|
||||
import Dodge.Data.Modification
|
||||
import Dodge.Data.MountedObject
|
||||
import Dodge.Data.Object
|
||||
import Dodge.Data.PathGraph
|
||||
import Dodge.Data.Payload
|
||||
import Dodge.Data.PosEvent
|
||||
import Dodge.Data.PressPlate
|
||||
import Dodge.Data.Projectile
|
||||
import Dodge.Data.Prop
|
||||
import Dodge.Data.RadarBlip
|
||||
import Dodge.Data.RadarSweep
|
||||
import Dodge.Data.RightButtonOptions
|
||||
import Dodge.Data.Room
|
||||
import Dodge.Data.Sensor
|
||||
import Dodge.Data.Shockwave
|
||||
import Dodge.Data.SoundOrigin
|
||||
import Dodge.Data.Spark
|
||||
import Dodge.Data.Targeting
|
||||
import Dodge.Data.Terminal
|
||||
import Dodge.Data.TeslaArc
|
||||
import Dodge.Data.TractorBeam
|
||||
import Dodge.Data.Wall
|
||||
import Dodge.Data.WorldEffect
|
||||
import Dodge.Data.Zoning
|
||||
import Dodge.Distortion.Data
|
||||
import Dodge.GameRoom
|
||||
import Color
|
||||
import Data.Tile
|
||||
import MaybeHelp
|
||||
|
||||
import Control.Lens
|
||||
import Control.Monad.State
|
||||
import System.Random
|
||||
import Data.Graph.Inductive
|
||||
import qualified Data.Set as S
|
||||
import qualified Data.IntSet as IS
|
||||
import Dodge.RoomCluster.Data
|
||||
import GHC.Generics
|
||||
import Geometry.ConvexPoly
|
||||
import Geometry.Data
|
||||
import qualified IntMapHelp as IM
|
||||
import qualified Data.Map.Strict as M
|
||||
import qualified Data.Text as T
|
||||
import SDL (Scancode, MouseButton)
|
||||
import MaybeHelp
|
||||
import Picture.Data
|
||||
import SDL (MouseButton, Scancode)
|
||||
import Sound.Data
|
||||
import Streaming
|
||||
import System.Random
|
||||
|
||||
type CRUpdate = Creature -> World -> (World -> World, Maybe Creature)
|
||||
|
||||
type CRUpdate' = Creature -> World -> (World -> World, Creature)
|
||||
|
||||
data Universe = Universe
|
||||
@@ -205,11 +190,13 @@ data Universe = Universe
|
||||
, _uvConfig :: Configuration
|
||||
, _uvTestString :: Universe -> [String]
|
||||
}
|
||||
|
||||
data GenWorld = GenWorld
|
||||
{ _gwWorld :: World
|
||||
, _genPlacements :: IM.IntMap [(Placement, Int)]
|
||||
, _genRooms :: IM.IntMap Room
|
||||
}
|
||||
|
||||
data World = World
|
||||
{ _cWorld :: CWorld
|
||||
, _randGen :: StdGen
|
||||
@@ -220,6 +207,7 @@ data World = World
|
||||
, _mouseButtons :: M.Map MouseButton Bool
|
||||
, _hammers :: M.Map WorldHammer HammerPosition
|
||||
}
|
||||
|
||||
data CWorld = CWorld
|
||||
{ _cameraCenter :: Point2
|
||||
, _cameraRot :: Float
|
||||
@@ -307,18 +295,28 @@ data CWorld = CWorld
|
||||
, _rSelect :: Point2
|
||||
}
|
||||
deriving (Eq, Show, Read, Generic)
|
||||
|
||||
instance ToJSON CWorld where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON CWorld
|
||||
|
||||
instance ToJSON MouseButton where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON MouseButton
|
||||
|
||||
instance ToJSONKey MouseButton
|
||||
|
||||
instance FromJSONKey MouseButton
|
||||
|
||||
instance ToJSON Scancode where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON Scancode
|
||||
|
||||
instance ToJSONKey Scancode
|
||||
|
||||
instance FromJSONKey Scancode
|
||||
|
||||
data TimeFlowStatus
|
||||
@@ -326,25 +324,35 @@ data TimeFlowStatus
|
||||
| RewindingLastFrame
|
||||
| NormalTimeFlow
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON TimeFlowStatus where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON TimeFlowStatus
|
||||
|
||||
data WorldHammer
|
||||
= SubInvHam
|
||||
| DoubleMouseHam
|
||||
deriving (Eq, Ord, Show, Read, Enum, Bounded, Generic)
|
||||
|
||||
instance ToJSON WorldHammer where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON WorldHammer
|
||||
|
||||
instance ToJSONKey WorldHammer
|
||||
|
||||
instance FromJSONKey WorldHammer
|
||||
|
||||
data SaveSlot = QuicksaveSlot | LevelStartSlot
|
||||
data SaveSlot
|
||||
= QuicksaveSlot
|
||||
| LevelStartSlot
|
||||
| SaveSlotNum Int
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data OptionScreenFlag = NormalOptions | GameOverOptions
|
||||
deriving (Eq, Ord, Show, Read)
|
||||
|
||||
data ScreenLayer
|
||||
= OptionScreen
|
||||
{ _scTitle :: Universe -> String
|
||||
@@ -368,6 +376,7 @@ data ScreenLayer
|
||||
| DisplayScreen
|
||||
{ _scDisplay :: Universe -> Picture
|
||||
}
|
||||
|
||||
data MenuOption
|
||||
= Toggle
|
||||
{ _moEff :: Universe -> IO (Maybe Universe)
|
||||
@@ -386,7 +395,6 @@ data MenuOption
|
||||
, _moEff :: Universe -> IO (Maybe Universe)
|
||||
}
|
||||
|
||||
|
||||
data IntID a = IntID Int a
|
||||
|
||||
data WorldBeams = WorldBeams
|
||||
@@ -396,33 +404,23 @@ data WorldBeams = WorldBeams
|
||||
, _electronBeams :: [Beam]
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON WorldBeams where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON WorldBeams
|
||||
|
||||
{- Objects without ids.
|
||||
Update themselves, perhaps with side effects. -}
|
||||
--data Particle = DPart
|
||||
-- = ShockLine
|
||||
-- { _ptUpdate :: World -> Particle -> (World, Maybe Particle)
|
||||
-- , _ptPointDirs :: [[(Point2,Float)]]
|
||||
-- , _ptTimer :: Int
|
||||
-- , _ptColor :: Color
|
||||
-- , _ptCenter :: Point2
|
||||
-- }
|
||||
--type HitEffect = Particle
|
||||
-- -> Stream (Of (Point2, Either Creature Wall)) Identity ()
|
||||
-- -> World
|
||||
-- -> (World,Maybe Particle)
|
||||
type HitEffect' = Flame
|
||||
-> Stream (Of (Point2, Either Creature Wall)) Identity ()
|
||||
-> World
|
||||
-> (World,Maybe Flame)
|
||||
type HitEffect' =
|
||||
Flame ->
|
||||
Stream (Of (Point2, Either Creature Wall)) Identity () ->
|
||||
World ->
|
||||
(World, Maybe Flame)
|
||||
|
||||
data Either3 a b c = E3x1 a | E3x2 b | E3x3 c
|
||||
|
||||
---- ROOM DATATYPES
|
||||
data PSType = PutCrit {_unPutCrit :: Creature}
|
||||
data PSType
|
||||
= PutCrit {_unPutCrit :: Creature}
|
||||
| PutMachine {_putMachinePoly :: [Point2], _putMachineMachine :: Machine, _putMachineWall :: Wall}
|
||||
| PutLS LightSource
|
||||
| PutButton {_putButton :: Button}
|
||||
@@ -434,8 +432,12 @@ data PSType = PutCrit {_unPutCrit :: Creature}
|
||||
| PutCoord Point2
|
||||
| PutMod Modification
|
||||
| PutTrigger Bool
|
||||
| PutLineBlock {_putWall :: Wall , _putWidth :: Float
|
||||
, _putStartPoint :: Point2, _putEndPoint :: Point2}
|
||||
| PutLineBlock
|
||||
{ _putWall :: Wall
|
||||
, _putWidth :: Float
|
||||
, _putStartPoint :: Point2
|
||||
, _putEndPoint :: Point2
|
||||
}
|
||||
| PutWall {_pwPoly :: [Point2], _pwWall :: Wall}
|
||||
| PutSlideDr Door Wall EdgeObstacle Float Point2 Point2
|
||||
| PutDoor Color EdgeObstacle WdBl [(Point2, Point2)]
|
||||
@@ -446,6 +448,7 @@ data PSType = PutCrit {_unPutCrit :: Creature}
|
||||
| PutNothing
|
||||
| PutUsingGenParams (World -> (World, PSType))
|
||||
| PutID {_putID :: Int}
|
||||
|
||||
-- maybe there is a monadic implementation of this?
|
||||
-- add room effect for any placement spot?
|
||||
data PlacementSpot
|
||||
@@ -460,6 +463,7 @@ data PlacementSpot
|
||||
{ _psRoomRandPointNum :: Int
|
||||
, _psRandShift :: (Point2, Float) -> PlacementSpot
|
||||
}
|
||||
|
||||
-- TODO attempt to unify/simplify this union type
|
||||
data Placement
|
||||
= Placement
|
||||
@@ -483,14 +487,14 @@ assigning no bounds will allow rooms to overlap. -}
|
||||
data Room = Room
|
||||
{ _rmPolys :: [[Point2]]
|
||||
, _rmLinks :: [RoomLink]
|
||||
-- the Int is the number of previous outlinks that have been assigned
|
||||
, _rmLinkEff
|
||||
:: RoomLink -- ^ child link
|
||||
-> Room -- ^ child room
|
||||
-> Int -- ^ child number
|
||||
-> RoomLink -- ^ parent link
|
||||
-> Room -- ^ parent room
|
||||
-> Room
|
||||
, -- the Int is the number of previous outlinks that have been assigned
|
||||
_rmLinkEff ::
|
||||
RoomLink -> -- child link
|
||||
Room -> -- child room
|
||||
Int -> -- child number
|
||||
RoomLink -> -- parent link
|
||||
Room -> -- parent room
|
||||
Room
|
||||
, _rmPos :: [RoomPos]
|
||||
, _rmPath :: S.Set (Point2, Point2)
|
||||
, _rmPmnts :: [Placement]
|
||||
@@ -511,15 +515,19 @@ data Room = Room
|
||||
, _rmType :: RoomType
|
||||
, _rmClusterStatus :: ClusterStatus
|
||||
}
|
||||
|
||||
data OutPlacement = OutPlacement
|
||||
{ _opPlacement :: Placement
|
||||
, _opPlacementID :: Int
|
||||
}
|
||||
|
||||
data InPlacement = InPlacement
|
||||
{ _ipPlacement :: [Placement] -> Placement
|
||||
, _ipPlacementID :: Int
|
||||
}
|
||||
|
||||
makeLenses ''World
|
||||
|
||||
--makeLenses ''Particle
|
||||
makeLenses ''Universe
|
||||
makeLenses ''ScreenLayer
|
||||
|
||||
@@ -18,7 +18,6 @@ import Dodge.Data.Hammer
|
||||
import Dodge.Creature.Perception.Data
|
||||
import Dodge.Creature.Memory.Data
|
||||
import Dodge.Creature.Stance.Data
|
||||
import Dodge.Creature.State.Data
|
||||
import Geometry.Data
|
||||
import qualified IntMapHelp as IM
|
||||
import qualified Data.Map.Strict as M
|
||||
|
||||
@@ -1,19 +1,81 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Creature.State where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Data.Damage
|
||||
import Dodge.Creature.State.Data
|
||||
|
||||
import Color
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import qualified Data.IntSet as IS
|
||||
import Dodge.Data.Damage
|
||||
import GHC.Generics
|
||||
import Geometry.Data
|
||||
|
||||
data CreatureState = CrSt
|
||||
{ _csDamage :: [Damage]
|
||||
, _csSpState :: CrSpState
|
||||
, _csDropsOnDeath :: CreatureDropType
|
||||
}
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON CreatureState where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON CreatureState
|
||||
|
||||
data CreatureDropType
|
||||
= DropAll
|
||||
| DropAmount Int
|
||||
| DropSpecific [Int]
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON CreatureDropType where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON CreatureDropType
|
||||
|
||||
data CrSpState
|
||||
= Barrel {_piercedPoints :: [Point2]}
|
||||
| GenCr
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON CrSpState where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON CrSpState
|
||||
|
||||
data Faction
|
||||
= GenericFaction Int
|
||||
| ZombieFaction
|
||||
| EncircleFlock
|
||||
| ChaseCritters
|
||||
| SpawnedBy Int
|
||||
| NoFaction
|
||||
| ColorFaction Color
|
||||
| PlayerFaction
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON Faction where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON Faction
|
||||
|
||||
data CrGroup
|
||||
= LoneWolf
|
||||
| Swarm
|
||||
{ _swarm :: IS.IntSet
|
||||
, _crGroupID :: Int
|
||||
}
|
||||
| CrGroupID {_crGroupID :: Int}
|
||||
| ShieldGroup
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
|
||||
instance ToJSON CrGroup where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
|
||||
instance FromJSON CrGroup
|
||||
|
||||
makeLenses ''CreatureState
|
||||
makeLenses ''CrSpState
|
||||
makeLenses ''CrGroup
|
||||
|
||||
+5
-15
@@ -7,10 +7,14 @@ module Dodge.Data.Item
|
||||
, 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
|
||||
import Control.Lens
|
||||
import Dodge.Data.Item.CurseStatus
|
||||
import Dodge.Data.Item.Misc
|
||||
import Dodge.Data.Item.Tweak
|
||||
import Dodge.Data.Item.Consumption
|
||||
@@ -18,12 +22,9 @@ import Dodge.Data.Item.Use
|
||||
import Dodge.Data.Item.Params
|
||||
import Dodge.Data.ItEffect
|
||||
import Dodge.Data.Targeting
|
||||
import Dodge.Item.Data
|
||||
import Dodge.Combine.Data
|
||||
import Dodge.Item.Attachment.Data
|
||||
import Dodge.Data.Item.Attachment
|
||||
import Color
|
||||
|
||||
import qualified IntMapHelp as IM
|
||||
data Item = Item
|
||||
{ _itConsumption :: ItemConsumption
|
||||
, _itUse :: ItemUse
|
||||
@@ -47,15 +48,4 @@ data Item = Item
|
||||
instance ToJSON Item where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Item
|
||||
data ItemTweaks
|
||||
= NoTweaks
|
||||
| Tweakable
|
||||
{ _tweakParams :: IM.IntMap TweakParam
|
||||
, _tweakSel :: Int
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemTweaks where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemTweaks
|
||||
makeLenses ''Item
|
||||
makeLenses ''ItemTweaks
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Item.Attachment.Data
|
||||
module Dodge.Data.Item.Attachment
|
||||
where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
@@ -1,7 +1,8 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
--{-# LANGUAGE TemplateHaskell #-}
|
||||
module Dodge.Item.Data where
|
||||
module Dodge.Data.Item.CurseStatus
|
||||
where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
data CurseStatus
|
||||
@@ -1,11 +1,15 @@
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
|
||||
module Dodge.Data.Item.HeldUse where
|
||||
import GHC.Generics
|
||||
|
||||
import Data.Aeson
|
||||
import Dodge.Combine.Data
|
||||
import Dodge.Data.CamouflageStatus
|
||||
data HeldUse = HeldDoNothing
|
||||
import GHC.Generics
|
||||
|
||||
data HeldUse
|
||||
= HeldDoNothing
|
||||
| HeldUseAmmoParams
|
||||
| HeldOverNozzlesUseGasParams
|
||||
| HeldPJCreation
|
||||
@@ -24,27 +28,28 @@ data HeldUse = HeldDoNothing
|
||||
instance ToJSON HeldUse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON HeldUse
|
||||
data Cuse = CDoNothing
|
||||
data Cuse
|
||||
= CDoNothing
|
||||
| CHeal Int
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
instance ToJSON Cuse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Cuse
|
||||
data Euse = EDoNothing
|
||||
data Euse
|
||||
= EDoNothing
|
||||
| EDetector Detector
|
||||
| EMagShield
|
||||
| EWristShield
|
||||
| EHeadLamp
|
||||
| ECamouflage CamouflageStatus
|
||||
|
||||
| EonWristShield
|
||||
|
||||
| EoffWristShield
|
||||
deriving (Eq, Ord, Show, Read, Generic)
|
||||
instance ToJSON Euse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Euse
|
||||
data Luse = LDoNothing
|
||||
data Luse
|
||||
= LDoNothing
|
||||
| LRewind
|
||||
| LShrink
|
||||
| LBlink
|
||||
@@ -54,7 +59,8 @@ data Luse = LDoNothing
|
||||
instance ToJSON Luse where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON Luse
|
||||
data HeldMod = HeldModNothing
|
||||
data HeldMod
|
||||
= HeldModNothing
|
||||
| PoisonSprayerMod
|
||||
| FlameSpitterMod
|
||||
| FlameThrowerMod
|
||||
|
||||
@@ -5,6 +5,17 @@ module Dodge.Data.Item.Tweak where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Control.Lens
|
||||
import qualified IntMapHelp as IM
|
||||
data ItemTweaks
|
||||
= NoTweaks
|
||||
| Tweakable
|
||||
{ _tweakParams :: IM.IntMap TweakParam
|
||||
, _tweakSel :: Int
|
||||
}
|
||||
deriving (Eq,Ord,Show,Read,Generic)
|
||||
instance ToJSON ItemTweaks where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON ItemTweaks
|
||||
data TweakType = TweakPhaseV
|
||||
| TweakTractionPower
|
||||
| TweakSpinDrag
|
||||
@@ -24,3 +35,4 @@ instance ToJSON TweakParam where
|
||||
toEncoding = genericToEncoding defaultOptions
|
||||
instance FromJSON TweakParam
|
||||
makeLenses ''TweakParam
|
||||
makeLenses ''ItemTweaks
|
||||
|
||||
+23
-18
@@ -1,36 +1,41 @@
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
module Dodge.Data.Item.Use
|
||||
( module Dodge.Data.Item.Use
|
||||
, module Dodge.Data.Equipment
|
||||
)
|
||||
where
|
||||
import GHC.Generics
|
||||
import Data.Aeson
|
||||
import Dodge.Data.Item.HeldUse
|
||||
import Dodge.Data.Item.HeldScroll
|
||||
import Dodge.Data.Item.UseDelay
|
||||
import Dodge.Data.Hammer
|
||||
import Dodge.Data.Equipment
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module Dodge.Data.Item.Use (
|
||||
module Dodge.Data.Item.Use,
|
||||
module Dodge.Data.Item.Use.Equipment,
|
||||
module Dodge.Data.Item.HeldUse,
|
||||
module Dodge.Data.Item.HeldScroll,
|
||||
module Dodge.Data.Item.UseDelay,
|
||||
) where
|
||||
|
||||
import Control.Lens
|
||||
import Data.Aeson
|
||||
import Dodge.Data.Hammer
|
||||
import Dodge.Data.Item.HeldScroll
|
||||
import Dodge.Data.Item.HeldUse
|
||||
import Dodge.Data.Item.Use.Equipment
|
||||
import Dodge.Data.Item.UseDelay
|
||||
import GHC.Generics
|
||||
|
||||
data ItemUse
|
||||
= RightUse
|
||||
{ _rUse :: HeldUse -- Item -> Creature -> World -> World
|
||||
{ _rUse :: HeldUse
|
||||
, _useDelay :: UseDelay
|
||||
, _useMods :: HeldMod --[(Item -> Creature -> World -> World) -> Item -> Creature -> World -> World]
|
||||
, _useMods :: HeldMod
|
||||
, _useHammer :: HammerPosition
|
||||
, _useAim :: AimParams
|
||||
, _heldScroll :: HeldScroll --Float -> Creature -> Item -> Item
|
||||
, _heldScroll :: HeldScroll
|
||||
}
|
||||
| LeftUse
|
||||
{ _lUse :: Luse --Item -> Creature -> World -> World
|
||||
{ _lUse :: Luse
|
||||
, _useDelay :: UseDelay
|
||||
, _useHammer :: HammerPosition
|
||||
, _eqEq :: Equipment
|
||||
}
|
||||
| ConsumeUse
|
||||
{ _cUse :: Cuse --Item -> Creature -> World -> World
|
||||
{ _cUse :: Cuse
|
||||
}
|
||||
| EquipUse
|
||||
{ _eqEq :: Equipment
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE DeriveGeneric #-}
|
||||
module Dodge.Data.Equipment
|
||||
module Dodge.Data.Item.Use.Equipment
|
||||
( module Dodge.Data.Equipment.Misc
|
||||
, module Dodge.Data.Equipment
|
||||
, module Dodge.Data.Item.Use.Equipment
|
||||
)
|
||||
where
|
||||
import Dodge.Data.Item.HeldUse
|
||||
Reference in New Issue
Block a user