Add shrinkability and cursed items

This commit is contained in:
2021-11-18 18:30:22 +00:00
parent 147d6098ab
commit a546d070f0
82 changed files with 273 additions and 233 deletions
-1
View File
@@ -7,7 +7,6 @@ import Dodge.LevelGen
import Dodge.Update import Dodge.Update
import Dodge.Event import Dodge.Event
import Dodge.Render import Dodge.Render
import Dodge.Config.Data
import Dodge.Config.KeyConfig import Dodge.Config.KeyConfig
import Dodge.Config.Load import Dodge.Config.Load
import Dodge.Config.Update import Dodge.Config.Update
-1
View File
@@ -10,7 +10,6 @@ module Dodge.Base.Window
) )
where where
import Dodge.Data import Dodge.Data
import Dodge.Config.Data
import Geometry import Geometry
-- | A box covering the screen in world coordinates -- | A box covering the screen in world coordinates
-1
View File
@@ -1,6 +1,5 @@
module Dodge.Block where module Dodge.Block where
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Zone import Dodge.Zone
import Dodge.WorldEvent.Sound import Dodge.WorldEvent.Sound
+1 -2
View File
@@ -1,8 +1,7 @@
{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE StrictData #-} {-# LANGUAGE StrictData #-}
module Dodge.Config.Data module Dodge.Config.Data where
where
import Data.Aeson import Data.Aeson
import GHC.Generics import GHC.Generics
import Control.Lens import Control.Lens
+10 -3
View File
@@ -15,6 +15,7 @@ module Dodge.Creature
import Dodge.Creature.State.Data import Dodge.Creature.State.Data
import Dodge.Item.Weapon.Grenade import Dodge.Item.Weapon.Grenade
import Dodge.Item.Weapon.Booster import Dodge.Item.Weapon.Booster
import Dodge.Item.Weapon.Utility
--import Dodge.Creature.ReaderUpdate --import Dodge.Creature.ReaderUpdate
--import Dodge.Creature.AlertLevel --import Dodge.Creature.AlertLevel
--import Dodge.Creature.SetTarget --import Dodge.Creature.SetTarget
@@ -158,14 +159,20 @@ startCr = defaultCreature
, _crHP = 1000 , _crHP = 1000
, _crMaxHP = 1500 , _crMaxHP = 1500
, _crInv = startInventory , _crInv = startInventory
, _crCorpse = onLayer CorpseLayer $ color (greyN 0.5) $ pictures [color (greyN 0.8) $ circleSolid 10, circLine 10] , _crCorpse = onLayer CorpseLayer
$ color (greyN 0.5) $ pictures [color (greyN 0.8) $ circleSolid 10, circLine 10]
, _crFaction = PlayerFaction , _crFaction = PlayerFaction
, _crMvType = MvWalking yourDefaultSpeed
} }
{- | Items you start with. -} {- | Items you start with. -}
startInvList :: [Item]
startInvList =
[shrinkGun
]
startInventory :: IM.IntMap Item startInventory :: IM.IntMap Item
startInventory = IM.fromList $ zip [0..20] $ repeat NoItem startInventory = IM.fromList $ zip [0..defaultInvSize -1] $ startInvList ++ repeat NoItem
stackedInventory :: IM.IntMap Item stackedInventory :: IM.IntMap Item
stackedInventory = IM.fromList (zip [0..20] stackedInventory = IM.fromList (zip [0..25]
( (
[spreadGun [spreadGun
,tractorGun ,tractorGun
+51 -7
View File
@@ -1,9 +1,14 @@
{-# LANGUAGE TupleSections #-}
{- | Actions performed by creatures within the world {- | Actions performed by creatures within the world
-} -}
module Dodge.Creature.Action module Dodge.Creature.Action
( performActionsR ( performActionsR
, stripNoItems
, setMinInvSize
, dropUnselected
, startReloadingWeapon , startReloadingWeapon
, blinkAction , blinkAction
, sizeSelf
, crAutoReload , crAutoReload
, copyItemToFloor , copyItemToFloor
, youDropItem , youDropItem
@@ -11,10 +16,10 @@ module Dodge.Creature.Action
) )
where where
import Dodge.Path import Dodge.Path
import Dodge.Default
import Dodge.Creature.Stance.Data import Dodge.Creature.Stance.Data
import Dodge.WorldEvent.Shockwave import Dodge.WorldEvent.Shockwave
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Base import Dodge.Base
import Dodge.Zone import Dodge.Zone
import Dodge.Base.Collide import Dodge.Base.Collide
@@ -167,15 +172,15 @@ blinkAction
-> World -> World
blinkAction cr w blinkAction cr w
= soundMultiFrom [TeleSound 0,TeleSound 1] p3 teleS Nothing = soundMultiFrom [TeleSound 0,TeleSound 1] p3 teleS Nothing
. over radDistortion (distortionBulge ++) . over distortions (distortionBulge ++)
. set (creatures . ix cid . crPos) p3 . set (creatures . ix cid . crPos) p3
. blinkShockwave cid p3 . blinkShockwave cid p3
$ inverseShockwaveAt cpos 40 2 2 w $ inverseShockwaveAt cpos 40 2 2 w
where where
distR = 120 distR = 120
distortionBulge = distortionBulge =
[(p3,p3 +.+ V2 distR 0, p3 +.+ V2 0 distR,0.1) [RadialDistortion p3 (p3 +.+ V2 distR 0) (p3 +.+ V2 0 distR) 0.1
,(cpos,cpos +.+ V2 distR 0, cpos +.+ V2 0 distR,1.9) ,RadialDistortion cpos (cpos +.+ V2 distR 0) (cpos +.+ V2 0 distR) 1.9
] ]
cid = _crID cr cid = _crID cr
p1 = mouseWorldPos w p1 = mouseWorldPos w
@@ -191,14 +196,35 @@ blinkShockwave
-> World -> World
blinkShockwave i p = makeShockwaveAt [i] p 60 1 2 cyan blinkShockwave i p = makeShockwaveAt [i] p 60 1 2 cyan
setMinInvSize :: Int -> Creature -> World -> World
setMinInvSize n cr = creatures . ix (_crID cr) . crInv %~ f
where
f inv = IM.unionWith (\x _ -> x) inv $ IM.fromList $ [0..n-1] <&> (, NoItem)
stripNoItems :: Creature -> World -> World
stripNoItems cr = creatures . ix (_crID cr) . crInv %~ IM.mapMaybe f
where
f NoItem = Nothing
f x = Just x
dropUnselected :: Creature -> World -> World
dropUnselected cr w = foldr (dropItem cr) w . IM.keys $ unselectedItems
where
unselectedItems = _crInvSel cr `IM.delete` _crInv cr
dropItem :: Creature -> Int -> World -> World
dropItem cr invid = rmInvItem cid invid . copyItemToFloor cr invid
where
cid = _crID cr
{- | Get your creature to drop the item under the cursor. -} {- | Get your creature to drop the item under the cursor. -}
youDropItem :: World -> World youDropItem :: World -> World
youDropItem w = case yourItem w of youDropItem w = case yourItem w ^? itCurseStatus of
NoItem -> w Just Uncursed -> rmSelectedInvItem (_yourID w)
_ -> rmSelectedInvItem (_yourID w)
. copyItemToFloor (you w) (_crInvSel cr) . copyItemToFloor (you w) (_crInvSel cr)
$ soundStart (CrSound (_crID cr)) (_crPos cr) whiteNoiseFadeOutS Nothing $ soundStart (CrSound (_crID cr)) (_crPos cr) whiteNoiseFadeOutS Nothing
w w
_ -> w
where where
cr = you w cr = you w
{- | Copy an inventory item to the floor. -} {- | Copy an inventory item to the floor. -}
@@ -243,3 +269,21 @@ pickUpItem cid flit w = case maybeInvSlot of
Nothing -> w' Nothing -> w'
Just j -> w' & itemPositions . ix j .~ InInv 0 invid Just j -> w' & itemPositions . ix j .~ InInv 0 invid
sizeSelf :: Float -> Creature -> World -> World
sizeSelf x cr w = w
& soundMultiFrom [TeleSound 0,TeleSound 1] cpos teleS Nothing
& over distortions (distortionBulge :)
-- & inverseShockwaveAt cpos 40 0 2
& creatures . ix cid %~
( (crRad .~ 10 * x)
. (crMvType . mvSpeed .~ yourDefaultSpeed * x)
. (crStance . strideLength .~ ceiling (fromIntegral yourDefaultStrideLength * x))
)
where
distR = 120
distortionBulge
| _crRad cr < 10 * x
= RadialDistortion cpos (cpos +.+ V2 distR 0) (cpos +.+ V2 0 distR) 1.9
| otherwise = RadialDistortion cpos (cpos +.+ V2 distR 0) (cpos +.+ V2 0 distR) 0.1
cid = _crID cr
cpos = _crPos cr
-1
View File
@@ -5,7 +5,6 @@ module Dodge.Creature.ArmourChase
import Dodge.Data import Dodge.Data
import Dodge.Default import Dodge.Default
import Dodge.Creature.State import Dodge.Creature.State
import Dodge.Creature.State.Data
import Dodge.Creature.ReaderUpdate import Dodge.Creature.ReaderUpdate
import Dodge.Creature.Perception import Dodge.Creature.Perception
import Dodge.Creature.Picture import Dodge.Creature.Picture
-1
View File
@@ -2,7 +2,6 @@ module Dodge.Creature.Boid
where where
import Dodge.Data import Dodge.Data
import Dodge.Base import Dodge.Base
import Dodge.Creature.State.Data
import Geometry import Geometry
import Geometry.ConvexPoly import Geometry.ConvexPoly
-1
View File
@@ -10,7 +10,6 @@ import Dodge.Creature.Impulse
import Dodge.Creature.Action import Dodge.Creature.Action
import Dodge.Creature.Perception import Dodge.Creature.Perception
import Dodge.Creature.State import Dodge.Creature.State
import Dodge.Creature.State.Data
import Dodge.Item.Consumable import Dodge.Item.Consumable
import Dodge.Picture.Layer import Dodge.Picture.Layer
import Dodge.SoundLogic import Dodge.SoundLogic
-1
View File
@@ -3,7 +3,6 @@ module Dodge.Creature.ChooseTarget
import Dodge.Data import Dodge.Data
import Dodge.Base import Dodge.Base
import Dodge.Base.Collide import Dodge.Base.Collide
import Dodge.Creature.Perception.Data
import Control.Lens import Control.Lens
--import qualified Data.IntMap.Strict as IM --import qualified Data.IntMap.Strict as IM
-4
View File
@@ -4,12 +4,8 @@ module Dodge.Creature.Impulse
where where
import Dodge.Data import Dodge.Data
import Dodge.Creature.Vocalization import Dodge.Creature.Vocalization
import Dodge.Data.SoundOrigin
import Dodge.Creature.Impulse.Movement import Dodge.Creature.Impulse.Movement
import Dodge.Creature.Impulse.UseItem import Dodge.Creature.Impulse.UseItem
--import Dodge.Creature.Action.UseItem
import Dodge.Creature.State.Data
import Dodge.Creature.Stance.Data
import Dodge.SoundLogic import Dodge.SoundLogic
import Geometry import Geometry
+1 -4
View File
@@ -1,8 +1,5 @@
module Dodge.Creature.Impulse.Movement module Dodge.Creature.Impulse.Movement where
where
import Dodge.Data import Dodge.Data
import Dodge.Creature.Stance.Data
import Dodge.Item.Data
import Geometry import Geometry
import Data.Maybe import Data.Maybe
-2
View File
@@ -12,7 +12,6 @@ import Dodge.Data
import Dodge.WorldEvent.Explosion import Dodge.WorldEvent.Explosion
import Dodge.Creature.Picture import Dodge.Creature.Picture
--import Dodge.Creature.Stance.Data --import Dodge.Creature.Stance.Data
import Dodge.Creature.State.Data
import Dodge.Picture.Layer import Dodge.Picture.Layer
import Dodge.Default import Dodge.Default
import Dodge.Creature.State import Dodge.Creature.State
@@ -29,7 +28,6 @@ import Polyhedra
import Shape import Shape
import Dodge.WorldEvent import Dodge.WorldEvent
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Data.SoundOrigin
import System.Random import System.Random
import Data.List import Data.List
-2
View File
@@ -5,9 +5,7 @@ module Dodge.Creature.Perception
) )
where where
import Dodge.Data import Dodge.Data
import Dodge.Creature.Perception.Data
import Dodge.Creature.Vocalization import Dodge.Creature.Vocalization
import Dodge.Creature.Memory.Data
import Dodge.Base.Collide import Dodge.Base.Collide
--import Dodge.SoundLogic --import Dodge.SoundLogic
import Geometry.Vector import Geometry.Vector
+9 -19
View File
@@ -10,18 +10,10 @@ module Dodge.Creature.Picture
, picAtCrPosNoRot , picAtCrPosNoRot
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Config.Data
--import Dodge.Data.DamageType
--import Dodge.Base --import Dodge.Base
--import Dodge.Creature.Stance.Data
import Dodge.Creature.Perception.Data
--import Dodge.Creature.State.Data
import Dodge.Creature.Stance.Data
--import Dodge.Creature.Memory.Data
import Dodge.Creature.Test import Dodge.Creature.Test
--import Dodge.Creature.AlertLevel.Data --import Dodge.Creature.AlertLevel.Data
--import Dodge.Picture.Layer --import Dodge.Picture.Layer
import Dodge.Item.Data
import Dodge.Clock import Dodge.Clock
import Picture import Picture
import Geometry import Geometry
@@ -58,13 +50,14 @@ basicCrShape
:: Color -- ^ Creature color :: Color -- ^ Creature color
-> Creature -> Creature
-> Shape -> Shape
basicCrShape col cr = tr $ mconcat basicCrShape col cr = tr . scaleSH (V3 crsize crsize crsize) $ mconcat
[ rotdir . _spShape $ drawEquipment cr [ rotdir . _spShape $ drawEquipment cr
, rotdir . dm . translateSHz 20 $ scalp cr , rotdir . dm . translateSHz 20 $ scalp cr
, rotdir . dm $ upperBody col cr , rotdir . dm $ upperBody col cr
, dm . rotmdir $ feet cr , dm . rotmdir $ feet cr
] ]
where where
crsize = 0.1 * _crRad cr
dm = damageModSH cr dm = damageModSH cr
tr = uncurryV translateSHf (_crPos cr) tr = uncurryV translateSHf (_crPos cr)
rotdir = rotateSH (_crDir cr) rotdir = rotateSH (_crDir cr)
@@ -161,7 +154,7 @@ arms :: Creature -> Shape
{-# INLINE arms #-} {-# INLINE arms #-}
arms cr arms cr
| oneH cr = shoulderSH . translateSHf 11 (-3) . rotateSH (-0.5) $ scaleSH (V3 1 1.5 1) aHand | oneH cr = shoulderSH . translateSHf 11 (-3) . rotateSH (-0.5) $ scaleSH (V3 1 1.5 1) aHand
| twists cr = shoulderSH . translateSHf 0 (0.5* crad) . rotateSH (-1) $ mconcat | twists cr = shoulderSH . translateSHf 0 5 . rotateSH (-1) $ mconcat
[ translateSHf 12 4 aHand [ translateSHf 12 4 aHand
, translateSHf 4 (-10) aHand , translateSHf 4 (-10) aHand
] ]
@@ -175,7 +168,6 @@ arms cr
--crIt = _crInv cr IM.! _crInvSel cr --crIt = _crInv cr IM.! _crInvSel cr
aHand :: Shape aHand :: Shape
aHand = translateSHz (-4) . upperPrismPolyHalf 4 $ polyCirc 3 4 aHand = translateSHz (-4) . upperPrismPolyHalf 4 $ polyCirc 3 4
crad = _crRad cr
off = 8 off = 8
sLen = _strideLength $ _crStance cr sLen = _strideLength $ _crStance cr
f i = negate 2 + negate 6 * fromIntegral (sLen - i) / fromIntegral sLen f i = negate 2 + negate 6 * fromIntegral (sLen - i) / fromIntegral sLen
@@ -183,12 +175,11 @@ arms cr
scalp :: Creature -> Shape scalp :: Creature -> Shape
{-# INLINE scalp #-} {-# INLINE scalp #-}
scalp cr scalp cr
| twists cr = translateSHf 0 (0.5*crad) . rotateSH (-1) $ translateSHf (negate 0.25 * crad) 0.25 fhead | twists cr = translateSHf 0 5 . rotateSH (-1) $ translateSHf (negate 2.5) 0.25 fhead
| oneH cr = rotateSH 0.5 $ translateSHf (0.25 * crad) 0 fhead | oneH cr = rotateSH 0.5 $ translateSHf 2.5 0 fhead
| otherwise = translateSHf (0.25 * crad) 0 fhead | otherwise = translateSHf 2.5 0 fhead
where where
fhead = colorSH (greyN 0.9) . upperPrismPolyHalf 5 . polyCirc 4 $ crad * 0.5 fhead = colorSH (greyN 0.9) . upperPrismPolyHalf 5 $ polyCirc 4 5
crad = _crRad cr
oneH :: Creature -> Bool oneH :: Creature -> Bool
oneH cr = crIsAiming' cr && crIt ^? itAimStance == Just OneHand oneH cr = crIsAiming' cr && crIt ^? itAimStance == Just OneHand
@@ -212,7 +203,7 @@ torso cr
[ translateSHf 0 3 . rotateSH (negate 0.2) $ aShoulder [ translateSHf 0 3 . rotateSH (negate 0.2) $ aShoulder
, translateSHf 0 (negate 3) . rotateSH 0.2 $ aShoulder , translateSHf 0 (negate 3) . rotateSH 0.2 $ aShoulder
] ]
| twists cr = translateSHf 0 (0.5* crad) . rotateSH (-1) $ mconcat | twists cr = translateSHf 0 5 . rotateSH (-1) $ mconcat
[ rotateSH (negate 0.2) . translateSHf 2 3 . rotateSH (negate 0.4) $ aShoulder [ rotateSH (negate 0.2) . translateSHf 2 3 . rotateSH (negate 0.4) $ aShoulder
, rotateSH (negate 0.2) . translateSHf 0 (negate 3) . rotateSH 0.2 $ aShoulder , rotateSH (negate 0.2) . translateSHf 0 (negate 3) . rotateSH 0.2 $ aShoulder
] ]
@@ -222,8 +213,7 @@ torso cr
] ]
where where
--aShoulder = translateSHz (-10) . scaleSH (V3 0.5 1 1) . upperPrismPoly 10 $ polyCirc 3 crad --aShoulder = translateSHz (-10) . scaleSH (V3 0.5 1 1) . upperPrismPoly 10 $ polyCirc 3 crad
aShoulder = scaleSH (V3 crad crad 1) baseShoulder aShoulder = scaleSH (V3 10 10 1) baseShoulder
crad = _crRad cr
baseShoulder :: Shape baseShoulder :: Shape
{-# INLINE baseShoulder #-} {-# INLINE baseShoulder #-}
-1
View File
@@ -4,7 +4,6 @@ module Dodge.Creature.Property
, crNearPoint , crNearPoint
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Item.Data
import Geometry import Geometry
import Control.Lens import Control.Lens
-3
View File
@@ -14,11 +14,8 @@ module Dodge.Creature.ReaderUpdate
) )
where where
import Dodge.Data import Dodge.Data
import Dodge.Creature.Stance.Data
import Dodge.Creature.Memory.Data
import Dodge.Creature.Test import Dodge.Creature.Test
import Dodge.Creature.Volition import Dodge.Creature.Volition
import Dodge.Creature.Perception.Data
import Dodge.Base import Dodge.Base
import Dodge.Base.Collide import Dodge.Base.Collide
import Geometry import Geometry
+2 -6
View File
@@ -1,10 +1,6 @@
{- | {- | Deals with setting a target for creatures -}
Deals with setting a target for creatures module Dodge.Creature.SetTarget where
-}
module Dodge.Creature.SetTarget
where
import Dodge.Data import Dodge.Data
import Dodge.Creature.Perception.Data
import Control.Lens import Control.Lens
import qualified Data.IntMap.Strict as IM import qualified Data.IntMap.Strict as IM
-4
View File
@@ -3,11 +3,7 @@ module Dodge.Creature.State
, doDamage , doDamage
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Item.Data
import Dodge.Creature.State.Data
import Dodge.Creature.State.WalkCycle import Dodge.Creature.State.WalkCycle
import Dodge.Creature.Stance.Data
--import Dodge.Creature.Test --import Dodge.Creature.Test
--import Dodge.Base --import Dodge.Base
import Dodge.SoundLogic import Dodge.SoundLogic
-2
View File
@@ -4,8 +4,6 @@ module Dodge.Creature.State.WalkCycle
) )
where where
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Creature.Stance.Data
import Dodge.SoundLogic import Dodge.SoundLogic
import Geometry.Data import Geometry.Data
import Sound.Data import Sound.Data
-1
View File
@@ -10,7 +10,6 @@ import Dodge.Creature.ReaderUpdate
import Dodge.Creature.Perception import Dodge.Creature.Perception
import Dodge.Creature.Impulse import Dodge.Creature.Impulse
import Dodge.Creature.State import Dodge.Creature.State
import Dodge.Creature.State.Data
import Dodge.Picture.Layer import Dodge.Picture.Layer
import Picture import Picture
-1
View File
@@ -19,7 +19,6 @@ module Dodge.Creature.Test
where where
import Dodge.Data import Dodge.Data
import Dodge.Base.Collide import Dodge.Base.Collide
import Dodge.Creature.Stance.Data
import Geometry import Geometry
import SameConstr import SameConstr
-1
View File
@@ -9,7 +9,6 @@ module Dodge.Creature.Volition
import Dodge.Data import Dodge.Data
--import Dodge.Base.Collide --import Dodge.Base.Collide
import Dodge.Creature.Test import Dodge.Creature.Test
import Dodge.Creature.Stance.Data
import Dodge.SoundLogic.LoadSound import Dodge.SoundLogic.LoadSound
import Geometry import Geometry
+1 -3
View File
@@ -3,10 +3,8 @@ module Dodge.Creature.YourControl
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Creature.Impulse.Movement import Dodge.Creature.Impulse.Movement
import Dodge.Creature.Stance.Data
import Dodge.Update.UsingInput import Dodge.Update.UsingInput
import Dodge.Config.KeyConfig import Dodge.Config.KeyConfig
import Dodge.Item.Attachment.Data
import Geometry import Geometry
import Control.Lens import Control.Lens
@@ -24,7 +22,7 @@ yourControl cr w =
, Just . mouseActionsCr (_mouseButtons w) $ wasdWithAiming w speed 0 cr , Just . mouseActionsCr (_mouseButtons w) $ wasdWithAiming w speed 0 cr
) )
where where
speed = 4 speed = _mvSpeed $ _crMvType cr
{- | Turn key presses into creature movement. -} {- | Turn key presses into creature movement. -}
wasdWithAiming wasdWithAiming
:: World :: World
+20 -1
View File
@@ -9,12 +9,22 @@ circular imports are probably not a good idea.
{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DeriveGeneric #-}
module Dodge.Data module Dodge.Data
( module Dodge.Data ( module Dodge.Data
, module Dodge.Distortion.Data
, module Dodge.Data.DamageType , module Dodge.Data.DamageType
, 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
) where ) where
import Dodge.Creature.State.Data import Dodge.Creature.State.Data
import Dodge.Creature.Stance.Data import Dodge.Creature.Stance.Data
import Dodge.Creature.Perception.Data import Dodge.Creature.Perception.Data
import Dodge.Creature.Memory.Data import Dodge.Creature.Memory.Data
import Dodge.Distortion.Data
import Dodge.Data.SoundOrigin import Dodge.Data.SoundOrigin
import Dodge.Data.DamageType import Dodge.Data.DamageType
import Dodge.Config.Data import Dodge.Config.Data
@@ -98,7 +108,7 @@ data World = World
, _sideEffects :: World -> IO World , _sideEffects :: World -> IO World
, _inventoryMode :: InventoryMode , _inventoryMode :: InventoryMode
, _lClickHammer :: HammerPosition , _lClickHammer :: HammerPosition
, _radDistortion :: [(Point2,Point2,Point2,Float)] , _distortions :: [Distortion]
, _worldBounds :: Bounds , _worldBounds :: Bounds
, _gameRooms :: [GameRoom] , _gameRooms :: [GameRoom]
, _keyConfig :: KeyConfigSDL , _keyConfig :: KeyConfigSDL
@@ -107,6 +117,7 @@ data World = World
, _savedWorlds :: M.Map SaveSlot World , _savedWorlds :: M.Map SaveSlot World
, _frameClock :: Int , _frameClock :: Int
} }
data SaveSlot = QuicksaveSlot | LevelStartSlot data SaveSlot = QuicksaveSlot | LevelStartSlot
deriving (Eq,Ord) deriving (Eq,Ord)
@@ -150,6 +161,7 @@ data InventoryMode
| TweakInventory | TweakInventory
| CombineInventory | CombineInventory
| InspectInventory | InspectInventory
| LockedInventory
deriving (Eq, Ord, Show) deriving (Eq, Ord, Show)
data CrGroupParams = CrGroupParams data CrGroupParams = CrGroupParams
{ _crGroupParamID :: Int { _crGroupParamID :: Int
@@ -239,6 +251,7 @@ data Intention = Intention
data CrMvType data CrMvType
= NoMvType = NoMvType
| MvWalking { _mvSpeed :: Float }
| ChaseMvType | ChaseMvType
{ _mvSpeed :: Float { _mvSpeed :: Float
, _mvTurnRad :: Float -> Float , _mvTurnRad :: Float -> Float
@@ -316,6 +329,7 @@ data Item
, _itAimStance :: AimStance , _itAimStance :: AimStance
, _wpNumBarrels :: Int , _wpNumBarrels :: Int
, _itDimension :: ItemDimension , _itDimension :: ItemDimension
, _itCurseStatus :: CurseStatus
} }
| Consumable | Consumable
{ _itName :: String { _itName :: String
@@ -331,6 +345,7 @@ data Item
, _itEffect :: ItEffect , _itEffect :: ItEffect
, _itHammer :: HammerPosition , _itHammer :: HammerPosition
, _itAimStance :: AimStance , _itAimStance :: AimStance
, _itCurseStatus :: CurseStatus
} }
| Craftable | Craftable
{ _itName :: String { _itName :: String
@@ -343,6 +358,7 @@ data Item
, _itInvDisplay :: Item -> String , _itInvDisplay :: Item -> String
, _itInvColor :: Color , _itInvColor :: Color
, _itAimStance :: AimStance , _itAimStance :: AimStance
, _itCurseStatus :: CurseStatus
} }
| Equipment | Equipment
{ _itName :: String { _itName :: String
@@ -359,6 +375,7 @@ data Item
, _itInvColor :: Color , _itInvColor :: Color
, _itHammer :: HammerPosition , _itHammer :: HammerPosition
, _itAimStance :: AimStance , _itAimStance :: AimStance
, _itCurseStatus :: CurseStatus
} }
| Throwable | Throwable
{ _itName :: String { _itName :: String
@@ -385,8 +402,10 @@ data Item
, _itHammer :: HammerPosition , _itHammer :: HammerPosition
, _itScroll :: Float -> Creature -> Item -> Item , _itScroll :: Float -> Creature -> Item -> Item
, _itAimStance :: AimStance , _itAimStance :: AimStance
, _itCurseStatus :: CurseStatus
} }
| NoItem | NoItem
data CurseStatus = Uncursed | UndroppableIdentified | UndroppableUnidentified
data ItemDimension = ItemDimension data ItemDimension = ItemDimension
{ _itDim :: Point3 -- length width height { _itDim :: Point3 -- length width height
-1
View File
@@ -1,7 +1,6 @@
module Dodge.Debug.Terminal module Dodge.Debug.Terminal
where where
import Dodge.Data import Dodge.Data
import Dodge.Config.Data
import Dodge.Creature import Dodge.Creature
import Control.Lens import Control.Lens
+13 -7
View File
@@ -7,12 +7,6 @@ This module contains prototypical data structures.
module Dodge.Default where module Dodge.Default where
import Dodge.Item.Weapon.ExtraEffect import Dodge.Item.Weapon.ExtraEffect
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Item.Data
import Dodge.Creature.Stance.Data
import Dodge.Creature.State.Data
import Dodge.Creature.Perception.Data
import Dodge.Creature.Memory.Data
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Picture.Layer import Dodge.Picture.Layer
import Dodge.Wall.Delete import Dodge.Wall.Delete
@@ -50,7 +44,7 @@ defaultCreature = Creature
, _crStance = Stance , _crStance = Stance
{_carriage=Walking 0 WasLeftForward {_carriage=Walking 0 WasLeftForward
,_posture=AtEase ,_posture=AtEase
,_strideLength = 40 ,_strideLength = yourDefaultStrideLength
} }
, _crVocalization = Mute , _crVocalization = Mute
, _crActionPlan = ActionPlan [] [] WatchAndWait [LiveLongAndProsper] , _crActionPlan = ActionPlan [] [] WatchAndWait [LiveLongAndProsper]
@@ -68,6 +62,9 @@ defaultCreatureMemory = MemoryState
{ _soundsToInvestigate = [] { _soundsToInvestigate = []
} }
defaultInvSize :: Int
defaultInvSize = 20
defaultPerceptionState :: PerceptionState defaultPerceptionState :: PerceptionState
defaultPerceptionState = PerceptionState defaultPerceptionState = PerceptionState
{ _crAwakeLevel = Lethargic { _crAwakeLevel = Lethargic
@@ -118,6 +115,12 @@ defaultAimMvType = AimMvType
defaultAimingCrit :: Creature defaultAimingCrit :: Creature
defaultAimingCrit = defaultCreature { _crMvType = defaultAimMvType } defaultAimingCrit = defaultCreature { _crMvType = defaultAimMvType }
yourDefaultSpeed :: Float
yourDefaultSpeed = 4
yourDefaultStrideLength :: Int
yourDefaultStrideLength = 40
defaultState :: CreatureState defaultState :: CreatureState
defaultState = CrSt defaultState = CrSt
{ _crDamage = [] { _crDamage = []
@@ -128,6 +131,7 @@ defaultState = CrSt
defaultEquipment :: Item defaultEquipment :: Item
defaultEquipment = Equipment defaultEquipment = Equipment
{ _itIdentity = Generic { _itIdentity = Generic
, _itCurseStatus = Uncursed
, _itName = "genericEquipment" , _itName = "genericEquipment"
, _itFloorPict = \_ -> (,) emptySH $ setLayer 0 $ onLayer FlItLayer $ polygon $ map toV2 [(-3,-3),(-3,3),(3,3),(3,-3)] , _itFloorPict = \_ -> (,) emptySH $ setLayer 0 $ onLayer FlItLayer $ polygon $ map toV2 [(-3,-3),(-3,3),(3,3),(3,-3)]
, _itEquipPict = \_ _ -> (,) emptySH blank , _itEquipPict = \_ _ -> (,) emptySH blank
@@ -147,6 +151,7 @@ defaultItZoom = ItZoom 20 0.2 1
defaultConsumable :: Item defaultConsumable :: Item
defaultConsumable = Consumable defaultConsumable = Consumable
{ _itIdentity = Generic { _itIdentity = Generic
, _itCurseStatus = Uncursed
, _itName = "genericConsumable" , _itName = "genericConsumable"
, _itMaxStack = 9 , _itMaxStack = 9
, _itAmount = 1 , _itAmount = 1
@@ -194,6 +199,7 @@ defaultFlIt = FlIt {_flItRot=0,_flIt = defaultIt, _flItPos = V2 0 0, _flItID = 0
defaultIt :: Item defaultIt :: Item
defaultIt = Consumable defaultIt = Consumable
{ _itIdentity = Medkit25 { _itIdentity = Medkit25
, _itCurseStatus = Uncursed
, _itName = "defaultIt" , _itName = "defaultIt"
, _itMaxStack = 3 , _itMaxStack = 3
, _itAmount = 2 , _itAmount = 2
+1 -2
View File
@@ -3,8 +3,6 @@ module Dodge.Default.Weapon
import Dodge.Data import Dodge.Data
import Dodge.Item.Weapon.ExtraEffect import Dodge.Item.Weapon.ExtraEffect
import Dodge.Item.Weapon.InventoryDisplay import Dodge.Item.Weapon.InventoryDisplay
import Dodge.Item.Attachment.Data
import Dodge.Item.Data
import Picture import Picture
import ShapePicture import ShapePicture
@@ -12,6 +10,7 @@ import Linear.V3
defaultGun :: Item defaultGun :: Item
defaultGun = Weapon defaultGun = Weapon
{ _itName = "default" { _itName = "default"
, _itCurseStatus = Uncursed
, _itIdentity = Pistol , _itIdentity = Pistol
, _wpMaxAmmo = 15 , _wpMaxAmmo = 15
, _wpLoadedAmmo = 15 , _wpLoadedAmmo = 15
+1 -3
View File
@@ -2,9 +2,7 @@ module Dodge.Default.World
where where
import Dodge.Data import Dodge.Data
import Dodge.Base import Dodge.Base
import Dodge.Config.Data
import Dodge.Config.KeyConfig import Dodge.Config.KeyConfig
import Dodge.Item.Data
import Dodge.Bounds import Dodge.Bounds
--import Dodge.Menu --import Dodge.Menu
--import Picture --import Picture
@@ -81,7 +79,7 @@ defaultWorld = World
, _inventoryMode = TopInventory , _inventoryMode = TopInventory
, _lClickHammer = HammerUp , _lClickHammer = HammerUp
, _foregroundShape = mempty , _foregroundShape = mempty
, _radDistortion = [] , _distortions = []
, _gameRooms = [] , _gameRooms = []
, _preloadData = DummyPdata -- hack TODO remove this , _preloadData = DummyPdata -- hack TODO remove this
, _frameClock = 0 , _frameClock = 0
+10
View File
@@ -0,0 +1,10 @@
module Dodge.Distortion where
import Dodge.Distortion.Data
updateDistortion :: Distortion -> Maybe Distortion
updateDistortion dt = case dt of
RadialDistortion a b c v
| v > 1 -> Just $ RadialDistortion a b c $ max 1 (v - 0.05)
| v < 1 -> Just $ RadialDistortion a b c $ min 1 (v + 0.05)
| otherwise -> Nothing
+7
View File
@@ -0,0 +1,7 @@
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE StrictData #-}
module Dodge.Distortion.Data where
import Geometry
data Distortion
= RadialDistortion Point2 Point2 Point2 Float
-2
View File
@@ -16,13 +16,11 @@ module Dodge.Event
import Dodge.Event.Keyboard import Dodge.Event.Keyboard
--import Dodge.Event.Menu --import Dodge.Event.Menu
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Base import Dodge.Base
import Dodge.Base.Window import Dodge.Base.Window
--import Dodge.Creature.Action --import Dodge.Creature.Action
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Inventory import Dodge.Inventory
import Dodge.Config.Data
--import Geometry --import Geometry
import Preload.Update import Preload.Update
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
-1
View File
@@ -2,7 +2,6 @@ module Dodge.Initialisation where
import Dodge.Default.World import Dodge.Default.World
import Dodge.Save import Dodge.Save
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Creature import Dodge.Creature
import Dodge.Story import Dodge.Story
import Dodge.WorldEvent.Cloud import Dodge.WorldEvent.Cloud
+1
View File
@@ -2,6 +2,7 @@ module Dodge.Inventory
( checkInvSlotsYou ( checkInvSlotsYou
, rmSelectedInvItem , rmSelectedInvItem
, addItem , addItem
, rmInvItem
, updateCloseObjects , updateCloseObjects
, closeObjScrollDir , closeObjScrollDir
) )
-2
View File
@@ -1,8 +1,6 @@
module Dodge.Item module Dodge.Item
where where
import Dodge.Data import Dodge.Data
import Dodge.Item.Data
--import Dodge.Base
import Dodge.Default import Dodge.Default
import Dodge.Picture import Dodge.Picture
import Picture import Picture
-1
View File
@@ -5,7 +5,6 @@ module Dodge.Item.Attachment
) )
where where
import Dodge.Data import Dodge.Data
import Dodge.Item.Attachment.Data
import Dodge.Default import Dodge.Default
import Control.Lens hiding ((|>),(<|)) import Control.Lens hiding ((|>),(<|))
+2
View File
@@ -19,6 +19,8 @@ data ItAttachment
| ItCharMode {_itCharMode :: Seq.Seq Char } | ItCharMode {_itCharMode :: Seq.Seq Char }
| ItTargetPos { _itTargetPos :: Point2 } | ItTargetPos { _itTargetPos :: Point2 }
| ItInt { _itInt :: Int } | ItInt { _itInt :: Int }
| ItFloat { _itFloat :: Float }
| ItBool { _itBool :: Bool }
| NoItAttachment | NoItAttachment
makeLenses ''ItAttachment makeLenses ''ItAttachment
+1 -4
View File
@@ -1,8 +1,5 @@
module Dodge.Item.Consumable module Dodge.Item.Consumable where
where
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Item.Data
import Dodge.Picture.Layer import Dodge.Picture.Layer
import Dodge.Default import Dodge.Default
import Dodge.SoundLogic import Dodge.SoundLogic
+1 -4
View File
@@ -1,9 +1,6 @@
module Dodge.Item.Draw module Dodge.Item.Draw where
where
import Dodge.Data import Dodge.Data
import Dodge.Item.Data
--import Dodge.Picture.Layer --import Dodge.Picture.Layer
import Dodge.Creature.Stance.Data
--import Picture --import Picture
--import Shape --import Shape
import ShapePicture import ShapePicture
+1 -4
View File
@@ -1,7 +1,5 @@
module Dodge.Item.Equipment module Dodge.Item.Equipment where
where
import Dodge.Data import Dodge.Data
import Dodge.Item.Data
import Dodge.Item.Draw import Dodge.Item.Draw
import Dodge.Default import Dodge.Default
import Dodge.Default.Wall import Dodge.Default.Wall
@@ -10,7 +8,6 @@ import Dodge.Item.Weapon.BatteryGuns
import Dodge.Creature.Test import Dodge.Creature.Test
import Dodge.Wall.Reflect import Dodge.Wall.Reflect
import Dodge.Wall import Dodge.Wall
import Dodge.Creature.State.Data
import Picture import Picture
import Geometry import Geometry
import ShapePicture import ShapePicture
+1 -35
View File
@@ -2,22 +2,18 @@
In progress: move out effects into other modules. -} In progress: move out effects into other modules. -}
module Dodge.Item.Weapon where module Dodge.Item.Weapon where
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Base import Dodge.Base
import Dodge.Zone import Dodge.Zone
import Dodge.Picture.Layer import Dodge.Picture.Layer
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Creature.Action
import Dodge.WorldEvent import Dodge.WorldEvent
import Dodge.Default import Dodge.Default
import Dodge.Item.Draw import Dodge.Item.Draw
import Dodge.Item.Data
import Dodge.Item.Weapon.BulletGuns import Dodge.Item.Weapon.BulletGuns
import Dodge.Item.Weapon.TriggerType import Dodge.Item.Weapon.TriggerType
import Dodge.Item.Weapon.ExtraEffect import Dodge.Item.Weapon.ExtraEffect
import Dodge.Item.Weapon.UseEffect import Dodge.Item.Weapon.UseEffect
import Dodge.Item.Weapon.Remote import Dodge.Item.Weapon.Remote
import Dodge.Item.Attachment.Data
import Dodge.Default.Weapon import Dodge.Default.Weapon
import Dodge.Item.Weapon.Grenade import Dodge.Item.Weapon.Grenade
import Geometry import Geometry
@@ -83,40 +79,9 @@ removeItAttachment i _ w = w & creatures . ix i . crInv . ix itRef . itAttachmen
cr = _creatures w IM.! i cr = _creatures w IM.! i
itRef = _crInvSel cr itRef = _crInvSel cr
blinkGun :: Item
blinkGun = defaultGun
{ _itName = "BLINKER"
, _itIdentity = Blinker
, _wpMaxAmmo = 100
, _wpLoadedAmmo = 100
, _wpReloadTime = 20
, _wpReloadState = 0
, _itUseRate = 0
, _itUseTime = 0
, _itUse = const aSelf
, _itUseModifiers =
[ ammoCheckI
, hammerCheckI
]
, _itLeftClickUse = Just $ hammerCheckL $ shootL aSelfL
, _wpSpread = 0.05
, _wpRange = 20
, _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ polygon $ map toV2[(-2,-2),(-2,2),(2,2),(2,0),(0,0),(0,-2)]
, _itAimingSpeed = 1
, _itAimingRange = 0
}
shellExplosionAt :: Point2 -> World -> World shellExplosionAt :: Point2 -> World -> World
shellExplosionAt = makeExplosionAt shellExplosionAt = makeExplosionAt
aSelf :: Creature -> World -> World
aSelf = blinkAction
aSelfL :: Creature -> Int -> World -> World
aSelfL cr _ = blinkAction cr
reflect :: Float -> Float -> Float reflect :: Float -> Float -> Float
reflect a b = a + 2*(a-b) reflect a b = a + 2*(a-b)
@@ -270,6 +235,7 @@ remoteBombUnarmedPic = color (dark $ dark orange) $ circleSolid 5
pipe :: Item pipe :: Item
pipe = Craftable pipe = Craftable
{ _itIdentity = Generic { _itIdentity = Generic
, _itCurseStatus = Uncursed
, _itName = "PIPE" , _itName = "PIPE"
, _itMaxStack = 3 , _itMaxStack = 3
, _itAmount = 3 , _itAmount = 3
-2
View File
@@ -12,11 +12,9 @@ import Dodge.WorldEvent
import Dodge.WorldEvent.Damage import Dodge.WorldEvent.Damage
import Dodge.Default import Dodge.Default
import Dodge.Item.Draw import Dodge.Item.Draw
import Dodge.Item.Data
import Dodge.Item.Weapon.InventoryDisplay import Dodge.Item.Weapon.InventoryDisplay
import Dodge.Item.Weapon.TriggerType import Dodge.Item.Weapon.TriggerType
import Dodge.Item.Weapon.AmmoParams import Dodge.Item.Weapon.AmmoParams
import Dodge.Item.Attachment.Data
import Dodge.Default.Weapon import Dodge.Default.Weapon
import Dodge.Item.Attachment import Dodge.Item.Attachment
import Dodge.WorldEvent.HelperParticle import Dodge.WorldEvent.HelperParticle
-2
View File
@@ -4,13 +4,11 @@ module Dodge.Item.Weapon.Bezier
import Dodge.Data import Dodge.Data
import Dodge.Base import Dodge.Base
import Dodge.Default.Weapon import Dodge.Default.Weapon
import Dodge.Item.Data
import Dodge.Item.Draw import Dodge.Item.Draw
import Dodge.Item.Weapon.Targeting import Dodge.Item.Weapon.Targeting
import Dodge.Item.Weapon.BulletGuns import Dodge.Item.Weapon.BulletGuns
import Dodge.Item.Weapon.TriggerType import Dodge.Item.Weapon.TriggerType
import Dodge.Item.Weapon.ExtraEffect import Dodge.Item.Weapon.ExtraEffect
import Dodge.Item.Attachment.Data
import Dodge.Default import Dodge.Default
import Dodge.Particle.Bullet.Spawn import Dodge.Particle.Bullet.Spawn
import Dodge.Particle.Bullet.HitEffect import Dodge.Particle.Bullet.HitEffect
-2
View File
@@ -6,12 +6,10 @@ import Dodge.Base
import Dodge.Zone import Dodge.Zone
import Dodge.Base.Collide import Dodge.Base.Collide
import Dodge.Default.Weapon import Dodge.Default.Weapon
import Dodge.Item.Data
import Geometry import Geometry
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
import Dodge.Picture.Layer import Dodge.Picture.Layer
import Picture import Picture
import Dodge.Item.Attachment.Data
import ShapePicture import ShapePicture
import Shape import Shape
+2 -7
View File
@@ -15,11 +15,9 @@ import Dodge.Data
import Dodge.Default.Weapon import Dodge.Default.Weapon
import Dodge.Default import Dodge.Default
import Dodge.Item.Attachment import Dodge.Item.Attachment
import Dodge.Item.Attachment.Data
import Dodge.Item.Weapon.ExtraEffect import Dodge.Item.Weapon.ExtraEffect
import Dodge.Item.Weapon.InventoryDisplay import Dodge.Item.Weapon.InventoryDisplay
import Dodge.Item.Weapon.AmmoParams import Dodge.Item.Weapon.AmmoParams
import Dodge.Item.Data
import Dodge.Item.Draw import Dodge.Item.Draw
import Dodge.Item.Weapon.Bullet import Dodge.Item.Weapon.Bullet
import Dodge.Item.Weapon.TriggerType import Dodge.Item.Weapon.TriggerType
@@ -75,18 +73,15 @@ autoGun = defaultAutoGun
, _wpAmmo = basicBullet , _wpAmmo = basicBullet
} }
autoGunPic :: Item -> SPic autoGunPic :: Item -> SPic
autoGunPic it = autoGunPic it = noPic $
( colorSH red (prismPoly colorSH red (prismPoly
(map (addZ 5) $ rectNESW 2 12 (-2) (-8)) (map (addZ 5) $ rectNESW 2 12 (-2) (-8))
(map (addZ 0) $ rectNESW 4 12 (-4) (-12)) (map (addZ 0) $ rectNESW 4 12 (-4) (-12))
) )
<> translateSHf 0 (-1) (rotateSHx (negate $ pi/4) . upperPrismPoly 2 $ rectNESW (negate $ 3 + 0.25 * x) 0 3 (-5)) <> translateSHf 0 (-1) (rotateSHx (negate $ pi/4) . upperPrismPoly 2 $ rectNESW (negate $ 3 + 0.25 * x) 0 3 (-5))
, mempty
)
where where
x = fromIntegral $ loadedAmmo it x = fromIntegral $ loadedAmmo it
pistol :: Item pistol :: Item
pistol = defaultGun pistol = defaultGun
{ _itName = "PISTOL" { _itName = "PISTOL"
-1
View File
@@ -11,7 +11,6 @@ module Dodge.Item.Weapon.ExtraEffect
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Base import Dodge.Base
import Dodge.Item.Data
import Dodge.Item.Weapon.Decoration import Dodge.Item.Weapon.Decoration
import Dodge.Item.Weapon.UseEffect import Dodge.Item.Weapon.UseEffect
--import Dodge.Item.Attachment.Data --import Dodge.Item.Attachment.Data
+1 -3
View File
@@ -2,8 +2,6 @@ module Dodge.Item.Weapon.Grenade
( grenade ( grenade
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Item.Data
import Dodge.Picture.Layer import Dodge.Picture.Layer
import Dodge.WorldEvent.Explosion import Dodge.WorldEvent.Explosion
import Dodge.Item.Weapon.TriggerType import Dodge.Item.Weapon.TriggerType
@@ -11,7 +9,6 @@ import Dodge.Default
import Dodge.Base import Dodge.Base
import Dodge.Zone import Dodge.Zone
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Item.Attachment.Data
import Dodge.Item.Draw import Dodge.Item.Draw
import Dodge.Item.Weapon.InventoryDisplay import Dodge.Item.Weapon.InventoryDisplay
import Dodge.Item.Weapon.ExtraEffect import Dodge.Item.Weapon.ExtraEffect
@@ -27,6 +24,7 @@ import qualified Data.IntMap.Strict as IM
grenade :: Item grenade :: Item
grenade = Throwable grenade = Throwable
{ _itName = "GRENADE " ++ show fuseTime { _itName = "GRENADE " ++ show fuseTime
, _itCurseStatus = Uncursed
, _itIdentity = Grenade , _itIdentity = Grenade
, _itMaxStack = 8 , _itMaxStack = 8
, _itAmount = 1 , _itAmount = 1
@@ -5,7 +5,6 @@ module Dodge.Item.Weapon.InventoryDisplay
( basicWeaponDisplay ( basicWeaponDisplay
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Item.Attachment.Data
import Padding import Padding
import Data.Sequence import Data.Sequence
-3
View File
@@ -3,13 +3,10 @@ module Dodge.Item.Weapon.Launcher
, remoteLauncher , remoteLauncher
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Default.Weapon import Dodge.Default.Weapon
import Dodge.Default.Shell import Dodge.Default.Shell
import Dodge.SoundLogic.LoadSound import Dodge.SoundLogic.LoadSound
import Dodge.WorldEvent.Explosion import Dodge.WorldEvent.Explosion
import Dodge.Item.Data
import Dodge.Item.Attachment.Data
import Dodge.Item.Draw import Dodge.Item.Draw
import Dodge.Item.Weapon.Shell import Dodge.Item.Weapon.Shell
import Dodge.Item.Weapon.Remote import Dodge.Item.Weapon.Remote
-2
View File
@@ -14,14 +14,12 @@ import Dodge.SoundLogic.LoadSound
import Dodge.WorldEvent import Dodge.WorldEvent
import Dodge.Default import Dodge.Default
import Dodge.Item.Draw import Dodge.Item.Draw
import Dodge.Item.Data
--import Dodge.Item.Weapon.BulletGuns --import Dodge.Item.Weapon.BulletGuns
--import Dodge.Item.Weapon.InventoryDisplay --import Dodge.Item.Weapon.InventoryDisplay
import Dodge.Item.Weapon.TriggerType import Dodge.Item.Weapon.TriggerType
--import Dodge.Item.Weapon.ExtraEffect --import Dodge.Item.Weapon.ExtraEffect
--import Dodge.Item.Weapon.UseEffect --import Dodge.Item.Weapon.UseEffect
import Dodge.Item.Weapon.AmmoParams import Dodge.Item.Weapon.AmmoParams
import Dodge.Item.Attachment.Data
import Dodge.Default.Weapon import Dodge.Default.Weapon
--import Dodge.Item.Attachment --import Dodge.Item.Attachment
import Geometry import Geometry
-3
View File
@@ -37,13 +37,10 @@ module Dodge.Item.Weapon.TriggerType
) )
where where
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Creature.Action (startReloadingWeapon) import Dodge.Creature.Action (startReloadingWeapon)
import Dodge.WorldEvent import Dodge.WorldEvent
import Dodge.RandomHelp import Dodge.RandomHelp
import Dodge.Item.Attachment.Data
import Dodge.Item.Data
import Dodge.Default import Dodge.Default
import Sound.Data import Sound.Data
import Geometry import Geometry
+79
View File
@@ -0,0 +1,79 @@
module Dodge.Item.Weapon.Utility where
import Dodge.Data
import Dodge.Default
import Dodge.Picture.Layer
import Dodge.Creature.Action
import Dodge.Item.Weapon.TriggerType
import Dodge.Default.Weapon
import Geometry
import Picture
--import qualified IntMapHelp as IM
import Shape
--import ShapePicture
import Control.Lens
shrinkGun :: Item
shrinkGun = defaultGun
{ _itName = "SHRINKER"
, _itIdentity = Generic
, _wpMaxAmmo = 100
, _wpLoadedAmmo = 100
, _wpReloadTime = 20
, _wpReloadState = 0
, _itUseRate = 0
, _itUseTime = 0
, _itAimStance = TwoHandFlat
, _itUse = useShrinkGun
, _itUseModifiers =
[ ammoCheckI
, hammerCheckI
]
, _itLeftClickUse = Nothing
, _wpSpread = 0.05
, _wpRange = 20
, _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ polygon $ map toV2[(-2,-2),(-2,2),(2,2),(2,0),(0,0),(0,-2)]
, _itAimingSpeed = 1
, _itAimingRange = 0
, _itAttachment = ItBool True
}
useShrinkGun :: Item -> Creature -> World -> World
useShrinkGun it cr = case _itBool $ _itAttachment it of
True -> sizeSelf 0.5 cr . f False UndroppableIdentified
. stripNoItems cr
. dropUnselected cr
False -> sizeSelf 1 cr . f True Uncursed
. setMinInvSize defaultInvSize cr
where
f isInUse cstatus = creatures . ix (_crID cr) . crInv . ix (_crInvSel cr) %~
( (itAttachment . itBool .~ isInUse) . (itCurseStatus .~ cstatus) )
blinkGun :: Item
blinkGun = defaultGun
{ _itName = "BLINKER"
, _itIdentity = Blinker
, _wpMaxAmmo = 100
, _wpLoadedAmmo = 100
, _wpReloadTime = 20
, _wpReloadState = 0
, _itUseRate = 0
, _itUseTime = 0
, _itUse = const blinkAction
, _itUseModifiers =
[ ammoCheckI
, hammerCheckI
]
, _itLeftClickUse = Just $ hammerCheckL $ shootL aSelfL
, _wpSpread = 0.05
, _wpRange = 20
, _itFloorPict = \_ -> (,) emptySH $ onLayer FlItLayer $ polygon $ map toV2[(-2,-2),(-2,2),(2,2),(2,0),(0,0),(0,-2)]
, _itAimingSpeed = 1
, _itAimingRange = 0
}
aSelf :: Creature -> World -> World
aSelf = blinkAction
aSelfL :: Creature -> Int -> World -> World
aSelfL cr _ = blinkAction cr
+1 -1
View File
@@ -20,7 +20,7 @@ data PSType = PutCrit {_unPutCrit :: Creature}
| PutProp Prop | PutProp Prop
| PutFlIt Item | PutFlIt Item
| PutPressPlate PressPlate | PutPressPlate PressPlate
| PutBlock BlockMaterial [Int] Color [Point2] | PutBlock BlockMaterial [Int] Wall [Point2]
| PutCoordinate Point2 | PutCoordinate Point2
| PutMod Modification | PutMod Modification
| PutTrigger (World -> Bool) | PutTrigger (World -> Bool)
-1
View File
@@ -6,7 +6,6 @@ module Dodge.LevelGen.Switch
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Default import Dodge.Default
import Dodge.Data.SoundOrigin
import Dodge.SoundLogic import Dodge.SoundLogic
import Picture import Picture
import ShapePicture import ShapePicture
-1
View File
@@ -8,7 +8,6 @@ module Dodge.Menu
where where
import Dodge.Data import Dodge.Data
import Dodge.Save import Dodge.Save
import Dodge.Config.Data
import Dodge.Config.Update import Dodge.Config.Update
import SDL import SDL
import SDL.Internal.Numbered import SDL.Internal.Numbered
-2
View File
@@ -5,14 +5,12 @@ module Dodge.Particle.Bullet.HitEffect
where where
import Dodge.Data import Dodge.Data
import Dodge.Particle.Spark import Dodge.Particle.Spark
import Dodge.Data.SoundOrigin
import Dodge.Wall.Damage import Dodge.Wall.Damage
import Dodge.WorldEvent import Dodge.WorldEvent
import Dodge.Particle.Bullet.Spawn import Dodge.Particle.Bullet.Spawn
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.RandomHelp import Dodge.RandomHelp
import Dodge.WorldEvent.Shockwave import Dodge.WorldEvent.Shockwave
import Dodge.Creature.State.Data
import Dodge.Creature.Property import Dodge.Creature.Property
import Dodge.Wall.Reflect import Dodge.Wall.Reflect
import Geometry import Geometry
-1
View File
@@ -7,7 +7,6 @@ import Dodge.Data
import Dodge.Particle.Bullet.Draw import Dodge.Particle.Bullet.Draw
import Dodge.Particle.Bullet.Update import Dodge.Particle.Bullet.Update
import Dodge.WorldEvent.HitEffect import Dodge.WorldEvent.HitEffect
import Dodge.Creature.State.Data
import Color import Color
import Geometry import Geometry
-1
View File
@@ -2,7 +2,6 @@ module Dodge.Particle.TeslaArc
( makeTeslaArcAt ( makeTeslaArcAt
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Creature.State.Data
import Dodge.WorldEvent.Damage import Dodge.WorldEvent.Damage
import Dodge.Base import Dodge.Base
import Dodge.Zone import Dodge.Zone
-1
View File
@@ -8,7 +8,6 @@ import Dodge.WorldEvent.Explosion
import Dodge.Item.Weapon.BatteryGuns import Dodge.Item.Weapon.BatteryGuns
import Dodge.SoundLogic.LoadSound import Dodge.SoundLogic.LoadSound
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Data.SoundOrigin
import Geometry import Geometry
import ShapePicture import ShapePicture
import Shape import Shape
+13 -2
View File
@@ -23,9 +23,9 @@ lowWall ps = ps0j (PutForeground . colorSH col $ upperPrismPoly 30 ps)
singleBlock :: Point2 -> [Placement] singleBlock :: Point2 -> [Placement]
singleBlock a = singleBlock a =
[sPS a 0 [sPS a 0
$ PutBlock StoneBlock [5,20,20] (greyN 0.5) $ PutBlock StoneBlock [5,20,20] baseBlockPane
$ reverse $ reverse
$ rectNSWE 10 (-10) (-10) 10 $ square 10
] ]
{- {-
Places a line of blocks between two points. Places a line of blocks between two points.
@@ -82,6 +82,17 @@ baseBlockPane = defaultWall
, _wlDraw = True , _wlDraw = True
, _wlFireThrough = True , _wlFireThrough = True
} }
dirtWall :: Wall
dirtWall = defaultWall
{ _wlLine = (V2 0 0,V2 50 0)
, _wlID = 0
, _wlColor = V4 (150/256) ( 75/256) 0 ( 250/256)
, _wlSeen = False
, _wlOpacity = Opaque
, _wlRotateTo = False
, _wlDraw = True
, _wlFireThrough = True
}
baseWindowPane :: Wall baseWindowPane :: Wall
baseWindowPane = defaultWall baseWindowPane = defaultWall
{ _wlLine = (V2 0 0,V2 50 0) { _wlLine = (V2 0 0,V2 50 0)
+1 -1
View File
@@ -102,7 +102,7 @@ placeSpotID ps pt w = case pt of
PutDoor col f pss -> placeDoor col f (map (bimap doShift doShift) pss) w PutDoor col f pss -> placeDoor col f (map (bimap doShift doShift) pss) w
PutCoordinate coordp -> placeNewInto coordinates (doShift coordp) w PutCoordinate coordp -> placeNewInto coordinates (doShift coordp) w
PutSlideDoor pathing col f a b spd -> placeSlideDoor pathing col f (doShift a) (doShift b) spd w PutSlideDoor pathing col f a b spd -> placeSlideDoor pathing col f (doShift a) (doShift b) spd w
PutBlock bm (hp:hps) col ps' -> placeBlock (map doShift ps') hp col Opaque hps bm w PutBlock bm (hp:hps) wl ps' -> placeBlock (map doShift ps') hp wl hps bm w
PutBlock{} -> error "messed up block placement somehow" PutBlock{} -> error "messed up block placement somehow"
PutLineBlock wl bm wdth dpth a b -> placeLineBlock wl bm wdth dpth (doShift a) (doShift b) w PutLineBlock wl bm wdth dpth a b -> placeLineBlock wl bm wdth dpth (doShift a) (doShift b) w
PutWall { _pwPoly = ps', _pwWall = wl } -> (0,placeWallPoly (map doShift ps') wl w) PutWall { _pwPoly = ps', _pwWall = wl } -> (0,placeWallPoly (map doShift ps') wl w)
+12 -18
View File
@@ -8,10 +8,8 @@ import Dodge.Data
import Dodge.Path import Dodge.Path
import Dodge.Base import Dodge.Base
import Dodge.Zone import Dodge.Zone
import Dodge.Default.Wall
import Geometry import Geometry
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
import Color
import Control.Lens import Control.Lens
import Data.List import Data.List
@@ -19,16 +17,15 @@ import qualified Data.IntSet as IS
addBlock addBlock
:: [Point2] -- ^ Block polygon :: [Point2] -- ^ Block polygon
-> Wall -- ^ Base Pane
-> Int -- ^ First layer of health -> Int -- ^ First layer of health
-> Color
-> Opacity -- ^ Is the block see through?
-> [Int] -- ^ Extra layers of health -> [Int] -- ^ Extra layers of health
-> BlockMaterial -> BlockMaterial
-> World -> World
-> World -> World
addBlock (p:ps) hp col opacity hps bm w addBlock (p:ps) wl hp hps bm w
| hp <= 0 && null hps = w | hp <= 0 && null hps = w
| hp <= 0 = addBlock (p:ps) (head hps + hp) col opacity (tail hps) bm w | hp <= 0 = addBlock (p:ps) wl (head hps + hp) (tail hps) bm w
| otherwise = w | otherwise = w
& wallsZone . znObjects %~ flip (IM.foldl' $ flip wallInZone) panes & wallsZone . znObjects %~ flip (IM.foldl' $ flip wallInZone) panes
& walls %~ IM.union panes & walls %~ IM.union panes
@@ -40,31 +37,28 @@ addBlock (p:ps) hp col opacity hps bm w
i = IM.newKey $ _walls w i = IM.newKey $ _walls w
is = [i.. i + length lns-1] is = [i.. i + length lns-1]
panes = IM.fromList $ zipWith panes = IM.fromList $ zipWith
(\j (a,b) -> (,) j defaultWall (\j (a,b) -> (,) j wl
{ _wlLine = (a,b) { _wlLine = (a,b)
, _wlID = j , _wlID = j
, _wlColor = col
, _wlOpacity = opacity
, _wlStructure = BlockPart blid , _wlStructure = BlockPart blid
, _wlFireThrough = True
} }
) is lns ) is lns
wallInZone wl wallInZone wl'
| uncurry dist (_wlLine wl) <= 2*zoneSize | uncurry dist (_wlLine wl') <= 2*zoneSize
= insertIMInZone x y wlid wl = insertIMInZone x y wlid wl'
| otherwise = flip (foldl' $ flip (\(a,b) -> insertIMInZone a b wlid wl)) ips | otherwise = flip (foldl' $ flip (\(a,b) -> insertIMInZone a b wlid wl')) ips
where where
(x,y) = zoneOfPoint $ uncurry pHalf (_wlLine wl) (x,y) = zoneOfPoint $ uncurry pHalf (_wlLine wl)
wlid = _wlID wl wlid = _wlID wl
ips = map zoneOfPoint $ uncurry (divideLine (2*zoneSize)) (_wlLine wl) ips = map zoneOfPoint $ uncurry (divideLine (2*zoneSize)) (_wlLine wl)
addBlock _ _ _ _ _ _ _ = error "Trying to add a block with incomplete polygon" addBlock _ _ _ _ _ _ = error "Trying to add a block with incomplete polygon"
placeBlock :: [Point2] -> Int -> Color -> Opacity -> [Int] -> BlockMaterial -> World -> (Int,World) placeBlock :: [Point2] -> Int -> Wall -> [Int] -> BlockMaterial -> World -> (Int,World)
placeBlock poly i c opac is bm w placeBlock poly i wl is bm w
= (0, foldr (uncurry removePathsCrossing) wWithBlock pairs) = (0, foldr (uncurry removePathsCrossing) wWithBlock pairs)
where where
pairs = loopPairs poly pairs = loopPairs poly
wWithBlock = addBlock poly i c opac is bm w wWithBlock = addBlock poly wl i is bm w
{- | Splits a line into many four cornered blocks. -} {- | Splits a line into many four cornered blocks. -}
placeLineBlock placeLineBlock
@@ -11,7 +11,6 @@ import Picture
import Geometry import Geometry
import qualified IntMapHelp as IM import qualified IntMapHelp as IM
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Data.SoundOrigin
import Data.List import Data.List
import Control.Lens import Control.Lens
+3 -4
View File
@@ -5,7 +5,6 @@ module Dodge.Render
) )
where where
import Dodge.Data import Dodge.Data
import Dodge.Config.Data
import Dodge.Base.Window import Dodge.Base.Window
import Dodge.Render.Picture import Dodge.Render.Picture
import Dodge.Render.ShapePicture import Dodge.Render.ShapePicture
@@ -216,15 +215,15 @@ doDrawing pdata w = do
depthFunc $= Just Always depthFunc $= Just Always
blendFunc $= (One,Zero) blendFunc $= (One,Zero)
-- perform any radial distortion -- perform any radial distortion
case _radDistortion w of case _distortions w of
[] -> do [] -> do
bindTO $ fst $ snd $ _fboBase pdata bindTO $ fst $ snd $ _fboBase pdata
bindFramebuffer Framebuffer $= defaultFramebufferObject bindFramebuffer Framebuffer $= defaultFramebufferObject
--bufferUBO $ perspectiveMatrixb rot camzoom trans wins viewFroms --bufferUBO $ perspectiveMatrixb rot camzoom trans wins viewFroms
drawShader (_fullscreenShader pdata) 4 drawShader (_fullscreenShader pdata) 4
rds -> do rds -> do
let bindDrawDist :: (Point2,Point2,Point2,Float) -> IO () let bindDrawDist :: Distortion -> IO ()
bindDrawDist ( V2 a b , V2 c d , V2 e f , g) = do bindDrawDist (RadialDistortion (V2 a b) (V2 c d) (V2 e f) g) = do
pokeArray (shadVBOptr $ _barrelShader pdata) [a,b,c,d,e,f,g] pokeArray (shadVBOptr $ _barrelShader pdata) [a,b,c,d,e,f,g]
bindShaderBuffers [_barrelShader pdata] [1] bindShaderBuffers [_barrelShader pdata] [1]
drawShader (_barrelShader pdata) 1 drawShader (_barrelShader pdata) 1
+8 -1
View File
@@ -37,6 +37,7 @@ drawInventory w = subInventoryDisplay w `appendPic` displayInv 0 w
subInventoryDisplay :: World -> Picture subInventoryDisplay :: World -> Picture
subInventoryDisplay w = case _inventoryMode w of subInventoryDisplay w = case _inventoryMode w of
LockedInventory -> topInvCursor col iPos w
TopInventory -> pictures TopInventory -> pictures
[ closeObjectTexts w [ closeObjectTexts w
, topInvCursor col iPos w , topInvCursor col iPos w
@@ -201,7 +202,13 @@ itemText :: Item -> Picture
--itemText NoItem = dShadCol (greyN 0.5) $ text "----" --itemText NoItem = dShadCol (greyN 0.5) $ text "----"
--itemText it = dShadCol (_itInvColor it) $ text (_itInvDisplay it it) --itemText it = dShadCol (_itInvColor it) $ text (_itInvDisplay it it)
itemText NoItem = text "----" itemText NoItem = text "----"
itemText it = color (_itInvColor it) $ text (_itInvDisplay it it) itemText it = case _itCurseStatus it of
UndroppableIdentified -> color black (text (_itInvDisplay it it))
<> color (withAlpha 0.5 thecolor) (polygon (rectNSEW 120 (-70) 900 (-100)))
_ -> color thecolor $ text (_itInvDisplay it it)
where
thecolor = _itInvColor it
openCursorAt openCursorAt
:: Float -- ^ Width :: Float -- ^ Width
-1
View File
@@ -11,7 +11,6 @@ import Dodge.Room.Corridor
import Dodge.Room.Path import Dodge.Room.Path
--import Dodge.LevelGen.Data --import Dodge.LevelGen.Data
import Dodge.Creature import Dodge.Creature
import Dodge.Creature.State.Data
import Dodge.RandomHelp import Dodge.RandomHelp
import Dodge.Layout.Tree.Polymorphic import Dodge.Layout.Tree.Polymorphic
import Geometry import Geometry
-1
View File
@@ -4,7 +4,6 @@ module Dodge.Room.NoNeedWeapon
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Creature import Dodge.Creature
import Dodge.Creature.State.Data
--import Dodge.Creature.Inanimate --import Dodge.Creature.Inanimate
import Dodge.LevelGen.Data import Dodge.LevelGen.Data
import Dodge.Room.Procedural import Dodge.Room.Procedural
+1
View File
@@ -13,6 +13,7 @@ import Dodge.Data
import Dodge.Default.Wall import Dodge.Default.Wall
import Dodge.PlacementSpot import Dodge.PlacementSpot
import Dodge.Placement.Instance import Dodge.Placement.Instance
import Dodge.Item.Weapon.Utility
import Dodge.Room.Link import Dodge.Room.Link
import Dodge.Room.Path import Dodge.Room.Path
import Dodge.Default.Room import Dodge.Default.Room
+9 -4
View File
@@ -74,15 +74,20 @@ blockedCorridor = do
sequence $ treeFromPost [] $ return $ Right $ set rmPmnts plmnts corridor sequence $ treeFromPost [] $ return $ Right $ set rmPmnts plmnts corridor
dirtPoly :: [Point2] -> PSType dirtPoly :: [Point2] -> PSType
dirtPoly = PutBlock DirtBlock [1] (V4 (150/256) ( 75/256) 0 ( 250/256)) . reverse dirtPoly = PutBlock DirtBlock [1] dirtWall . reverse
-- | A single corridor with a destructible block blocking it. -- | A single corridor with a destructible block blocking it.
blockedCorridor' :: RandomGen g => State g Room blockedCorridor' :: RandomGen g => State g Room
blockedCorridor' = do blockedCorridor' = do
r <- state $ randomR (0,pi) r <- state $ randomR (0,pi)
theblocks <- takeOne [ [sPS (V2 20 40) r $ dirtPoly $ reverse $ square 10] theblocks <- takeOne
, [ sPS (V2 5 40) r $ dirtPoly $ square 10 [ -- [sPS (V2 20 40) r $ dirtPoly $ square 10]
, sPS (V2 35 40) (r+0.5) $ dirtPoly $ square 10 --, [ sPS (V2 5 40) r $ dirtPoly $ square 10
-- , sPS (V2 35 40) (r+0.5) $ dirtPoly $ square 10
-- ]
--,
[ sPS (V2 5 50) r $ dirtPoly $ square 10
, sPS (V2 35 35) (r+0.5) $ dirtPoly $ square 10
] ]
] ]
return $ corridor & rmPmnts .~ theblocks return $ corridor & rmPmnts .~ theblocks
+1 -2
View File
@@ -18,7 +18,6 @@ import Dodge.Room.Link
import Dodge.Room.Door import Dodge.Room.Door
import Dodge.Room.Airlock import Dodge.Room.Airlock
import Geometry import Geometry
import Picture
import Tile import Tile
import Control.Lens import Control.Lens
@@ -147,7 +146,7 @@ miniRoom3 = do
w <- state $ randomR (300,400) w <- state $ randomR (300,400)
h <- state $ randomR (300,400) h <- state $ randomR (300,400)
let cp = V2 0 (h/2+40) let cp = V2 0 (h/2+40)
let b = PutBlock StoneBlock [5,20,20] (greyN 0.5) $ map toV2 [(-10,-60) let b = PutBlock StoneBlock [5,20,20] baseBlockPane $ map toV2 [(-10,-60)
,( 10,-60) ,( 10,-60)
,( 10,-80) ,( 10,-80)
,(-10,-80) ,(-10,-80)
-1
View File
@@ -22,7 +22,6 @@ module Dodge.SoundLogic (
, module Dodge.SoundLogic.LoadSound , module Dodge.SoundLogic.LoadSound
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Sound.Data import Sound.Data
import Geometry.Data import Geometry.Data
import Geometry.Vector import Geometry.Vector
+4 -13
View File
@@ -5,10 +5,9 @@ Description : Simulation update
module Dodge.Update (update) where module Dodge.Update (update) where
import Dodge.Data import Dodge.Data
import Dodge.Block import Dodge.Block
import Dodge.Data.SoundOrigin import Dodge.Distortion
import Dodge.SoundLogic import Dodge.SoundLogic
import Dodge.Menu import Dodge.Menu
import Dodge.Config.Data
import Dodge.Base import Dodge.Base
import Dodge.Zone import Dodge.Zone
import Dodge.WallCreatureCollisions import Dodge.WallCreatureCollisions
@@ -46,7 +45,7 @@ functionalUpdate w = case _menuLayers w of
w w
(_ : _) -> w (_ : _) -> w
[] -> checkEndGame [] -> checkEndGame
. updateRadialDistortions . updateDistortions
. updateCreatureSoundPositions . updateCreatureSoundPositions
. ppEvents . ppEvents
. updateCamera . updateCamera
@@ -112,16 +111,8 @@ updateCreatureGroups :: World -> World
updateCreatureGroups w = w & creatureGroups %~ updateCreatureGroups w = w & creatureGroups %~
IM.mapMaybe (\cgp -> _crGroupUpdate cgp w cgp) IM.mapMaybe (\cgp -> _crGroupUpdate cgp w cgp)
updateRadialDistortions :: World -> World updateDistortions :: World -> World
updateRadialDistortions = radDistortion %~ mapMaybe decreaseBulge updateDistortions = distortions %~ mapMaybe updateDistortion
decreaseBulge
:: (Point2,Point2,Point2,Float)
-> Maybe (Point2,Point2,Point2,Float)
decreaseBulge (a,b,c,v)
| v > 1 = Just (a,b,c,max 1 (v - 0.05) )
| v < 1 = Just (a,b,c,min 1 (v + 0.05) )
| otherwise = Nothing
updateLightSources :: World -> World updateLightSources :: World -> World
updateLightSources w = over tempLightSources f w updateLightSources w = over tempLightSources f w
-1
View File
@@ -12,7 +12,6 @@ import Dodge.Zone
import Dodge.Base.Window import Dodge.Base.Window
import Dodge.Base.Collide import Dodge.Base.Collide
import Dodge.Config.KeyConfig import Dodge.Config.KeyConfig
import Dodge.Item.Attachment.Data
import Geometry import Geometry
--import Geometry.ConvexPoly --import Geometry.ConvexPoly
import Dodge.GameRoom import Dodge.GameRoom
-1
View File
@@ -4,7 +4,6 @@ module Dodge.Update.UsingInput
( updateUsingInput ( updateUsingInput
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Item.Data
import Dodge.Creature.Impulse.UseItem import Dodge.Creature.Impulse.UseItem
import Geometry import Geometry
-1
View File
@@ -7,7 +7,6 @@ import Dodge.Data
--import Dodge.Creature.State.Data --import Dodge.Creature.State.Data
import Dodge.Zone import Dodge.Zone
import Dodge.Base import Dodge.Base
import Dodge.Config.Data
import Geometry import Geometry
import Data.Monoid import Data.Monoid
-1
View File
@@ -2,7 +2,6 @@ module Dodge.WorldEvent.Damage
( damThingHitWith ( damThingHitWith
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Creature.State.Data
import Geometry import Geometry
import Dodge.Wall.Damage import Dodge.Wall.Damage
-1
View File
@@ -8,7 +8,6 @@ module Dodge.WorldEvent.Explosion
, makeTeslaExplosionAt , makeTeslaExplosionAt
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Default import Dodge.Default
import Dodge.Zone import Dodge.Zone
import Dodge.Base.Collide import Dodge.Base.Collide
-1
View File
@@ -5,7 +5,6 @@ module Dodge.WorldEvent.HitEffect
, penWalls , penWalls
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Creature.State.Data
import Geometry import Geometry
import Data.Bifunctor import Data.Bifunctor
-1
View File
@@ -4,7 +4,6 @@ module Dodge.WorldEvent.Shockwave
) )
where where
import Dodge.Data import Dodge.Data
import Dodge.Creature.State.Data
import Dodge.Wall.Damage import Dodge.Wall.Damage
import Dodge.Base import Dodge.Base
import Dodge.Zone import Dodge.Zone
-1
View File
@@ -6,7 +6,6 @@ module Dodge.WorldEvent.Sound
) )
where where
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.SoundLogic import Dodge.SoundLogic
import Sound.Data import Sound.Data
import Geometry.Data import Geometry.Data
-3
View File
@@ -7,9 +7,6 @@ module Dodge.WorldEvent.SpawnParticle
, makeFlameletTimed , makeFlameletTimed
) where ) where
import Dodge.Data import Dodge.Data
import Dodge.Data.SoundOrigin
import Dodge.Creature.State.Data
--import Dodge.WorldEvent.Damage
import Dodge.Base import Dodge.Base
import Dodge.WorldEvent.HitEffect import Dodge.WorldEvent.HitEffect
import Dodge.WorldEvent.ThingsHit import Dodge.WorldEvent.ThingsHit
+4
View File
@@ -4,6 +4,7 @@ module ShapePicture
, translateSPz , translateSPz
, rotateSP , rotateSP
, SPic , SPic
, noPic
, _spShape , _spShape
, _spPicture , _spPicture
) )
@@ -16,6 +17,9 @@ import Data.Bifunctor
type SPic = (Shape, Picture) type SPic = (Shape, Picture)
noPic :: Shape -> SPic
noPic sh = (sh,mempty)
_spShape :: SPic -> Shape _spShape :: SPic -> Shape
_spShape = fst _spShape = fst
_spPicture :: SPic -> Picture _spPicture :: SPic -> Picture