Add shrinkability and cursed items
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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,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,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
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,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,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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 #-}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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,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
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
|
{-# LANGUAGE StrictData #-}
|
||||||
|
module Dodge.Distortion.Data where
|
||||||
|
import Geometry
|
||||||
|
|
||||||
|
data Distortion
|
||||||
|
= RadialDistortion Point2 Point2 Point2 Float
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ module Dodge.Inventory
|
|||||||
( checkInvSlotsYou
|
( checkInvSlotsYou
|
||||||
, rmSelectedInvItem
|
, rmSelectedInvItem
|
||||||
, addItem
|
, addItem
|
||||||
|
, rmInvItem
|
||||||
, updateCloseObjects
|
, updateCloseObjects
|
||||||
, closeObjScrollDir
|
, closeObjScrollDir
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 ((|>),(<|))
|
||||||
|
|||||||
@@ -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,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,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,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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,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
|
||||||
|
|||||||
Reference in New Issue
Block a user