Cleanup tesla arcs
This commit is contained in:
@@ -19,7 +19,7 @@ data ItemParams
|
|||||||
| FlatShieldParams
|
| FlatShieldParams
|
||||||
{_flatShieldWlMIX :: Maybe Int}
|
{_flatShieldWlMIX :: Maybe Int}
|
||||||
| Arcing
|
| Arcing
|
||||||
{ _currentArc :: Maybe [ArcStep]
|
{ _currentArc :: [ArcStep]
|
||||||
, _arcSize :: Float
|
, _arcSize :: Float
|
||||||
, _arcNumber :: Int
|
, _arcNumber :: Int
|
||||||
, _newArcStep :: NextArcStep --ItemParams -> World -> ArcStep -> State StdGen (Maybe ArcStep)
|
, _newArcStep :: NextArcStep --ItemParams -> World -> ArcStep -> State StdGen (Maybe ArcStep)
|
||||||
|
|||||||
+2
-2
@@ -18,7 +18,7 @@ module Dodge.Draw (
|
|||||||
module Dodge.RadarSweep.Draw,
|
module Dodge.RadarSweep.Draw,
|
||||||
module Dodge.Spark.Draw,
|
module Dodge.Spark.Draw,
|
||||||
module Dodge.Targeting.Draw,
|
module Dodge.Targeting.Draw,
|
||||||
module Dodge.Tesla.Arc.Draw,
|
module Dodge.Tesla.Draw,
|
||||||
module Dodge.TractorBeam.Draw,
|
module Dodge.TractorBeam.Draw,
|
||||||
module Dodge.Shockwave.Draw,
|
module Dodge.Shockwave.Draw,
|
||||||
) where
|
) where
|
||||||
@@ -40,5 +40,5 @@ import Dodge.RadarSweep.Draw
|
|||||||
import Dodge.Shockwave.Draw
|
import Dodge.Shockwave.Draw
|
||||||
import Dodge.Spark.Draw
|
import Dodge.Spark.Draw
|
||||||
import Dodge.Targeting.Draw
|
import Dodge.Targeting.Draw
|
||||||
import Dodge.Tesla.Arc.Draw
|
import Dodge.Tesla.Draw
|
||||||
import Dodge.TractorBeam.Draw
|
import Dodge.TractorBeam.Draw
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import Dodge.Item.Weapon.Shatter
|
|||||||
import Dodge.Projectile.Create
|
import Dodge.Projectile.Create
|
||||||
import Dodge.RadarSweep
|
import Dodge.RadarSweep
|
||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.Tesla.Arc
|
import Dodge.Tesla
|
||||||
import Geometry
|
import Geometry
|
||||||
import LensHelp
|
import LensHelp
|
||||||
import ListHelp
|
import ListHelp
|
||||||
|
|||||||
@@ -5,11 +5,11 @@ module Dodge.Item.Held.BatteryGuns
|
|||||||
, tractorGun
|
, tractorGun
|
||||||
) where
|
) where
|
||||||
|
|
||||||
|
import Dodge.Data.ArcStep
|
||||||
import Dodge.SoundLogic.ExternallyGeneratedSounds
|
import Dodge.SoundLogic.ExternallyGeneratedSounds
|
||||||
import Dodge.Default.Item
|
import Dodge.Default.Item
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
import Dodge.Data.Item
|
import Dodge.Data.Item
|
||||||
import Dodge.Tesla.ItemParams
|
|
||||||
import Geometry.Data
|
import Geometry.Data
|
||||||
|
|
||||||
sparkGun :: Item
|
sparkGun :: Item
|
||||||
@@ -34,6 +34,16 @@ teslaGun =
|
|||||||
& itAmmoSlots .~ singleAmmo ElectricalAmmo
|
& itAmmoSlots .~ singleAmmo ElectricalAmmo
|
||||||
& itUse . heldTriggerType .~ AutoTrigger
|
& itUse . heldTriggerType .~ AutoTrigger
|
||||||
|
|
||||||
|
teslaParams :: ItemParams
|
||||||
|
teslaParams =
|
||||||
|
Arcing
|
||||||
|
{ _currentArc = []
|
||||||
|
, _arcSize = 20
|
||||||
|
, _arcNumber = 10
|
||||||
|
, _newArcStep = DefaultArcStep --defaultArcStep
|
||||||
|
, _previousArcEffect = NoPreviousArcEffect
|
||||||
|
}
|
||||||
|
|
||||||
-- previous phaseV parameters: 0.2, 1, 5
|
-- previous phaseV parameters: 0.2, 1, 5
|
||||||
laser :: Item
|
laser :: Item
|
||||||
laser =
|
laser =
|
||||||
|
|||||||
@@ -133,3 +133,4 @@ mcSPic :: LWorld -> Machine -> SPic
|
|||||||
mcSPic lw mc =
|
mcSPic lw mc =
|
||||||
uncurryV translateSPxy (_mcPos mc) $
|
uncurryV translateSPxy (_mcPos mc) $
|
||||||
rotateSP (_mcDir mc) (drawMachine lw mc)
|
rotateSP (_mcDir mc) (drawMachine lw mc)
|
||||||
|
|
||||||
|
|||||||
+161
-8
@@ -1,9 +1,162 @@
|
|||||||
module Dodge.Tesla
|
module Dodge.Tesla (
|
||||||
( module Dodge.Tesla.Ball
|
makeTeslaArc,
|
||||||
, module Dodge.Tesla.Arc
|
updateTeslaArc,
|
||||||
, module Dodge.Tesla.ItemParams
|
) where
|
||||||
) where
|
|
||||||
import Dodge.Tesla.Ball
|
|
||||||
import Dodge.Tesla.Arc
|
|
||||||
import Dodge.Tesla.ItemParams
|
|
||||||
|
|
||||||
|
import Data.Foldable
|
||||||
|
import Data.List (sortOn)
|
||||||
|
import Data.Maybe
|
||||||
|
import Dodge.Base.Collide
|
||||||
|
import Dodge.Damage
|
||||||
|
import Dodge.Data.ArcStep
|
||||||
|
import Dodge.Data.CrWlID
|
||||||
|
import Dodge.Data.World
|
||||||
|
import Dodge.Spark
|
||||||
|
import Geometry
|
||||||
|
import qualified IntMapHelp as IM
|
||||||
|
import LensHelp
|
||||||
|
import MonadHelp
|
||||||
|
import Picture
|
||||||
|
import RandomHelp
|
||||||
|
import Shape
|
||||||
|
|
||||||
|
updateTeslaArc ::
|
||||||
|
World ->
|
||||||
|
TeslaArc ->
|
||||||
|
(World, Maybe TeslaArc)
|
||||||
|
updateTeslaArc w pt
|
||||||
|
| _taTimer pt == 2 =
|
||||||
|
( makesparks $ foldl' (flip damthings) w thearc
|
||||||
|
, Just $ pt & taTimer -~ 1
|
||||||
|
)
|
||||||
|
| _taTimer pt < 0 = (w, Nothing)
|
||||||
|
| otherwise = (w, Just $ pt & taTimer -~ 1)
|
||||||
|
where
|
||||||
|
thearc = _taArcSteps pt
|
||||||
|
rcol = brightX 100 1.5 <$> takeOne [white, azure, blue, cyan]
|
||||||
|
rspeed = state (randomR (3, 6))
|
||||||
|
makeaspark = randSpark ELECTRICAL rspeed rcol rdir lp
|
||||||
|
makesparks = makeaspark . makeaspark . makeaspark
|
||||||
|
rp x = randPeakedParam 2 (x - 0.7) x (x + 0.7)
|
||||||
|
(lp, rdir) = case last thearc of
|
||||||
|
ArcStep lp' ld' NothingID -> (lp', rp ld')
|
||||||
|
ArcStep lp' ld' (CrID crid) -> case w ^? cWorld . lWorld . creatures . ix crid of
|
||||||
|
Nothing -> (lp', rp ld')
|
||||||
|
Just cr -> (lp' -.- (_crRad cr + 1) *.* unitVectorAtAngle ld', rp $ ld' + pi)
|
||||||
|
ArcStep lp' ld' (WlID wlid) -> case w ^? cWorld . lWorld . walls . ix wlid of
|
||||||
|
Nothing -> (lp', rp ld')
|
||||||
|
Just wl ->
|
||||||
|
( lp' -.- 2 *.* unitVectorAtAngle ld'
|
||||||
|
, randWallReflect ld' wl
|
||||||
|
)
|
||||||
|
damthings (ArcStep p dir crwl) = damageCrWlID (thedamage p dir) crwl
|
||||||
|
thedamage p dir = Damage ELECTRICAL 50 (p -.- q) p (p +.+ q) NoDamageEffect
|
||||||
|
where
|
||||||
|
q = 5 *.* unitVectorAtAngle dir
|
||||||
|
|
||||||
|
randWallReflect :: RandomGen g => Float -> Wall -> State g Float
|
||||||
|
randWallReflect a wl = do
|
||||||
|
let (x, y) = _wlLine wl
|
||||||
|
outa = reflectAngle a x y
|
||||||
|
a1 = nearestAngleRep outa $ argV (x - y)
|
||||||
|
a2 = if a1 < outa then a1 + pi else a1 - pi
|
||||||
|
randPeaked a1 outa a2
|
||||||
|
|
||||||
|
makeTeslaArc :: ItemParams -> Point2 -> Float -> World -> (World, ItemParams)
|
||||||
|
makeTeslaArc ip pos dir w =
|
||||||
|
( w & randGen .~ g
|
||||||
|
& cWorld . lWorld . teslaArcs
|
||||||
|
.:~ TeslaArc
|
||||||
|
{ _taPoints = map (^. asPos) newarc
|
||||||
|
, _taArcSteps = newarc
|
||||||
|
, _taTimer = 2
|
||||||
|
, _taColor = brightX 100 1.5 col
|
||||||
|
}
|
||||||
|
, ip & currentArc .~ newarc
|
||||||
|
)
|
||||||
|
where
|
||||||
|
(col, g) = takeOne [white, azure, blue, cyan] & runState $ _randGen w
|
||||||
|
newarc = updateArc ip w pos dir & evalState $ _randGen w
|
||||||
|
|
||||||
|
createNewArc ::
|
||||||
|
ItemParams ->
|
||||||
|
World ->
|
||||||
|
Point2 ->
|
||||||
|
Float ->
|
||||||
|
State StdGen [ArcStep]
|
||||||
|
createNewArc arcparams w p dir =
|
||||||
|
take (_arcNumber arcparams)
|
||||||
|
<$> unfoldrMID (doArcStep (_newArcStep arcparams) arcparams w) (ArcStep p dir NothingID)
|
||||||
|
|
||||||
|
updateArc ::
|
||||||
|
ItemParams ->
|
||||||
|
World ->
|
||||||
|
Point2 ->
|
||||||
|
Float ->
|
||||||
|
State StdGen [ArcStep]
|
||||||
|
updateArc ip w p dir = take (_arcNumber ip) <$> zipArcs ip w (ArcStep p dir NothingID) carc
|
||||||
|
where
|
||||||
|
carc = case _currentArc ip of
|
||||||
|
(_:xs) -> xs
|
||||||
|
[] -> [] -- tail $ _currentArc ip
|
||||||
|
|
||||||
|
zipArcs ::
|
||||||
|
ItemParams ->
|
||||||
|
World ->
|
||||||
|
ArcStep ->
|
||||||
|
[ArcStep] ->
|
||||||
|
State StdGen [ArcStep]
|
||||||
|
zipArcs ip w x (y : ys) =
|
||||||
|
(x :) <$> do
|
||||||
|
defaultnext <- doArcStep (_newArcStep ip) ip w x
|
||||||
|
case defaultnext of
|
||||||
|
Nothing -> return []
|
||||||
|
Just z@(ArcStep _ _ (CrID _)) -> return [z]
|
||||||
|
Just z@(ArcStep _ _ (WlID _)) -> return [z]
|
||||||
|
Just z -> do
|
||||||
|
p <- randInCirc 5
|
||||||
|
let csize = _arcSize ip
|
||||||
|
center = _asPos x +.+ csize *.* unitVectorAtAngle (_asDir x)
|
||||||
|
newp = _asPos y +.+ p
|
||||||
|
--newdir = argV $ newp -.- _asPos x
|
||||||
|
newdir = _asDir x
|
||||||
|
if dist newp center < csize
|
||||||
|
then zipArcs ip w (y & asPos .~ newp & asDir .~ newdir) ys
|
||||||
|
else zipArcs ip w z ys
|
||||||
|
zipArcs ip w y _ = createNewArc ip w (_asPos y) (_asDir y)
|
||||||
|
|
||||||
|
doArcStep :: NextArcStep -> ItemParams -> World -> ArcStep -> State StdGen (Maybe ArcStep)
|
||||||
|
doArcStep nas = case nas of
|
||||||
|
DefaultArcStep -> defaultArcStep
|
||||||
|
EndArc -> const $ const $ const $ return Nothing
|
||||||
|
|
||||||
|
defaultArcStep ::
|
||||||
|
RandomGen g =>
|
||||||
|
ItemParams ->
|
||||||
|
World ->
|
||||||
|
ArcStep ->
|
||||||
|
State g (Maybe ArcStep)
|
||||||
|
defaultArcStep _ _ (ArcStep _ _ (CrID _)) = return Nothing
|
||||||
|
defaultArcStep _ _ (ArcStep _ _ (WlID _)) = return Nothing
|
||||||
|
defaultArcStep itparams w (ArcStep p dir _) = do
|
||||||
|
let csize = _arcSize itparams
|
||||||
|
--rot <- takeOne [pi/4,negate pi/4]
|
||||||
|
rot <- takeOne [0]
|
||||||
|
let center = csize *.* rotateV rot (unitVectorAtAngle dir) +.+ p
|
||||||
|
newp <- (center +.+) <$> randInCirc csize
|
||||||
|
let mcr =
|
||||||
|
listToMaybe
|
||||||
|
. sortOn (dist center . _crPos)
|
||||||
|
. filter (\cr -> dist center (_crPos cr) < csize)
|
||||||
|
. IM.elems
|
||||||
|
$ w ^. cWorld . lWorld . creatures --_creatures (_cWorld w)
|
||||||
|
mwl =
|
||||||
|
listToMaybe
|
||||||
|
. sortOn (dist p . fst)
|
||||||
|
. mapMaybe (\q -> sequence $ collidePointWallsFilter (const True) p (center +.+ q) w)
|
||||||
|
-- collidePointWallsWall and wlsnearpoint
|
||||||
|
$ polyCirc 6 csize
|
||||||
|
f (q, wl) = ArcStep q dir (WlID $ _wlID wl)
|
||||||
|
g cr = ArcStep (_crPos cr +.+ csize *.* unitVectorAtAngle dir) dir (CrID $ _crID cr)
|
||||||
|
return . listToMaybe . sortOn (dist p . (^. asPos)) $
|
||||||
|
ArcStep newp dir NothingID : catMaybes [fmap f mwl, fmap g mcr]
|
||||||
|
|||||||
@@ -1,169 +0,0 @@
|
|||||||
module Dodge.Tesla.Arc (
|
|
||||||
makeTeslaArc,
|
|
||||||
updateTeslaArc,
|
|
||||||
) where
|
|
||||||
|
|
||||||
import Data.Foldable
|
|
||||||
import Data.List (sortOn)
|
|
||||||
import Data.Maybe
|
|
||||||
import Dodge.Base.Collide
|
|
||||||
import Dodge.Damage
|
|
||||||
import Dodge.Data.ArcStep
|
|
||||||
import Dodge.Data.CrWlID
|
|
||||||
import Dodge.Data.World
|
|
||||||
import Dodge.Spark
|
|
||||||
import Geometry
|
|
||||||
import qualified IntMapHelp as IM
|
|
||||||
import LensHelp
|
|
||||||
import MonadHelp
|
|
||||||
import Picture
|
|
||||||
import RandomHelp
|
|
||||||
import Shape
|
|
||||||
|
|
||||||
updateTeslaArc ::
|
|
||||||
World ->
|
|
||||||
TeslaArc ->
|
|
||||||
(World, Maybe TeslaArc)
|
|
||||||
updateTeslaArc w pt
|
|
||||||
| _taTimer pt == 2 =
|
|
||||||
( makesparks $ foldl' (flip damthings) w thearc
|
|
||||||
, Just $ pt & taTimer -~ 1
|
|
||||||
)
|
|
||||||
| _taTimer pt < 1 = (w, Nothing)
|
|
||||||
| otherwise = (w, Just $ pt & taTimer -~ 1)
|
|
||||||
where
|
|
||||||
thearc = _taArcSteps pt
|
|
||||||
rcol = brightX 100 1.5 <$> takeOne [white, azure, blue, cyan]
|
|
||||||
rspeed = state (randomR (3, 6))
|
|
||||||
makeaspark = randSpark ELECTRICAL rspeed rcol rdir lp
|
|
||||||
makesparks = makeaspark . makeaspark . makeaspark
|
|
||||||
rp x = randPeakedParam 2 (x - 0.7) x (x + 0.7)
|
|
||||||
(lp, rdir) = case last thearc of
|
|
||||||
ArcStep lp' ld' NothingID -> (lp', rp ld')
|
|
||||||
ArcStep lp' ld' (CrID crid) -> case w ^? cWorld . lWorld . creatures . ix crid of
|
|
||||||
Nothing -> (lp', rp ld')
|
|
||||||
Just cr -> (lp' -.- (_crRad cr + 1) *.* unitVectorAtAngle ld', rp $ ld' + pi)
|
|
||||||
ArcStep lp' ld' (WlID wlid) -> case w ^? cWorld . lWorld . walls . ix wlid of
|
|
||||||
Nothing -> (lp', rp ld')
|
|
||||||
Just wl ->
|
|
||||||
( lp' -.- 2 *.* unitVectorAtAngle ld'
|
|
||||||
, randWallReflect ld' wl
|
|
||||||
)
|
|
||||||
damthings (ArcStep p dir crwl) = damageCrWlID (thedamage p dir) crwl
|
|
||||||
thedamage p dir = Damage ELECTRICAL 50 (p -.- q) p (p +.+ q) NoDamageEffect
|
|
||||||
where
|
|
||||||
q = 5 *.* unitVectorAtAngle dir
|
|
||||||
|
|
||||||
randWallReflect :: RandomGen g => Float -> Wall -> State g Float
|
|
||||||
randWallReflect a wl = do
|
|
||||||
let (x, y) = _wlLine wl
|
|
||||||
outa = reflectAngle a x y
|
|
||||||
a1 = nearestAngleRep outa $ argV (x - y)
|
|
||||||
a2 = if a1 < outa then a1 + pi else a1 - pi
|
|
||||||
randPeaked a1 outa a2
|
|
||||||
|
|
||||||
makeTeslaArc :: ItemParams -> Point2 -> Float -> World -> (World, ItemParams)
|
|
||||||
makeTeslaArc ip pos dir w =
|
|
||||||
( w & randGen .~ g
|
|
||||||
& cWorld . lWorld . teslaArcs
|
|
||||||
.:~ TeslaArc
|
|
||||||
{ _taPoints = map (^. asPos) newarc
|
|
||||||
, _taArcSteps = newarc
|
|
||||||
, _taTimer = 2
|
|
||||||
, _taColor = brightX 100 1.5 col
|
|
||||||
}
|
|
||||||
, ip & currentArc ?~ newarc
|
|
||||||
)
|
|
||||||
where
|
|
||||||
(col, g) = takeOne [white, azure, blue, cyan] & runState $ _randGen w
|
|
||||||
newarc = createArc ip w pos dir & evalState $ _randGen w
|
|
||||||
|
|
||||||
createArc ::
|
|
||||||
ItemParams ->
|
|
||||||
World ->
|
|
||||||
Point2 ->
|
|
||||||
Float ->
|
|
||||||
State StdGen [ArcStep]
|
|
||||||
createArc arcparams@Arcing{_currentArc = Nothing} w p dir = createNewArc arcparams w p dir
|
|
||||||
createArc arcparams w p dir = updateArc arcparams w p dir
|
|
||||||
|
|
||||||
createNewArc ::
|
|
||||||
ItemParams ->
|
|
||||||
World ->
|
|
||||||
Point2 ->
|
|
||||||
Float ->
|
|
||||||
State StdGen [ArcStep]
|
|
||||||
createNewArc arcparams w p dir =
|
|
||||||
take (_arcNumber arcparams)
|
|
||||||
<$> unfoldrMID (doArcStep (_newArcStep arcparams) arcparams w) (ArcStep p dir NothingID)
|
|
||||||
|
|
||||||
updateArc ::
|
|
||||||
ItemParams ->
|
|
||||||
World ->
|
|
||||||
Point2 ->
|
|
||||||
Float ->
|
|
||||||
State StdGen [ArcStep]
|
|
||||||
updateArc ip w p dir = take (_arcNumber ip) <$> zipArcs ip w (ArcStep p dir NothingID) carc
|
|
||||||
where
|
|
||||||
carc = tail $ fromJust $ _currentArc ip
|
|
||||||
|
|
||||||
zipArcs ::
|
|
||||||
ItemParams ->
|
|
||||||
World ->
|
|
||||||
ArcStep ->
|
|
||||||
[ArcStep] ->
|
|
||||||
State StdGen [ArcStep]
|
|
||||||
zipArcs ip w x (y : ys) =
|
|
||||||
(x :) <$> do
|
|
||||||
defaultnext <- doArcStep (_newArcStep ip) ip w x
|
|
||||||
case defaultnext of
|
|
||||||
Nothing -> return []
|
|
||||||
Just z@(ArcStep _ _ (CrID _)) -> return [z]
|
|
||||||
Just z@(ArcStep _ _ (WlID _)) -> return [z]
|
|
||||||
Just z -> do
|
|
||||||
p <- randInCirc 5
|
|
||||||
let csize = _arcSize ip
|
|
||||||
center = _asPos x +.+ csize *.* unitVectorAtAngle (_asDir x)
|
|
||||||
newp = _asPos y +.+ p
|
|
||||||
--newdir = argV $ newp -.- _asPos x
|
|
||||||
newdir = _asDir x
|
|
||||||
if dist newp center < csize
|
|
||||||
then zipArcs ip w (y & asPos .~ newp & asDir .~ newdir) ys
|
|
||||||
else zipArcs ip w z ys
|
|
||||||
zipArcs ip w y _ = createNewArc ip w (_asPos y) (_asDir y)
|
|
||||||
|
|
||||||
doArcStep :: NextArcStep -> ItemParams -> World -> ArcStep -> State StdGen (Maybe ArcStep)
|
|
||||||
doArcStep nas = case nas of
|
|
||||||
DefaultArcStep -> defaultArcStep
|
|
||||||
EndArc -> const $ const $ const $ return Nothing
|
|
||||||
|
|
||||||
defaultArcStep ::
|
|
||||||
RandomGen g =>
|
|
||||||
ItemParams ->
|
|
||||||
World ->
|
|
||||||
ArcStep ->
|
|
||||||
State g (Maybe ArcStep)
|
|
||||||
defaultArcStep _ _ (ArcStep _ _ (CrID _)) = return Nothing
|
|
||||||
defaultArcStep _ _ (ArcStep _ _ (WlID _)) = return Nothing
|
|
||||||
defaultArcStep itparams w (ArcStep p dir _) = do
|
|
||||||
let csize = _arcSize itparams
|
|
||||||
--rot <- takeOne [pi/4,negate pi/4]
|
|
||||||
rot <- takeOne [0]
|
|
||||||
let center = csize *.* rotateV rot (unitVectorAtAngle dir) +.+ p
|
|
||||||
newp <- (center +.+) <$> randInCirc csize
|
|
||||||
let mcr =
|
|
||||||
listToMaybe
|
|
||||||
. sortOn (dist center . _crPos)
|
|
||||||
. filter (\cr -> dist center (_crPos cr) < csize)
|
|
||||||
. IM.elems
|
|
||||||
$ w ^. cWorld . lWorld . creatures --_creatures (_cWorld w)
|
|
||||||
mwl =
|
|
||||||
listToMaybe
|
|
||||||
. sortOn (dist p . fst)
|
|
||||||
. mapMaybe (\q -> sequence $ collidePointWallsFilter (const True) p (center +.+ q) w)
|
|
||||||
-- collidePointWallsWall and wlsnearpoint
|
|
||||||
$ polyCirc 6 csize
|
|
||||||
f (q, wl) = ArcStep q dir (WlID $ _wlID wl)
|
|
||||||
g cr = ArcStep (_crPos cr +.+ csize *.* unitVectorAtAngle dir) dir (CrID $ _crID cr)
|
|
||||||
return . listToMaybe . sortOn (dist p . (^. asPos)) $
|
|
||||||
ArcStep newp dir NothingID : catMaybes [fmap f mwl, fmap g mcr]
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
module Dodge.Tesla.Arc.Draw where
|
|
||||||
|
|
||||||
import Dodge.Data.TeslaArc
|
|
||||||
import Geometry
|
|
||||||
import Picture
|
|
||||||
|
|
||||||
drawTeslaArc :: TeslaArc -> Picture
|
|
||||||
drawTeslaArc pt =
|
|
||||||
setLayer BloomNoZWrite $
|
|
||||||
fold
|
|
||||||
[ setDepth 20.5 $ color (brightX 2 1 $ _taColor pt) $ thickLine 3 ps
|
|
||||||
, setDepth 20 $ color (V4 0 0 0 0.5) $ thickLine 10 ps
|
|
||||||
]
|
|
||||||
where
|
|
||||||
ps = _taPoints pt
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
module Dodge.Tesla.Ball where
|
|
||||||
|
|
||||||
import Dodge.Data.World
|
|
||||||
import Geometry
|
|
||||||
|
|
||||||
makeTeslaBallAt :: Point2 -> World -> World
|
|
||||||
makeTeslaBallAt _ = id
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
module Dodge.Tesla.ItemParams where
|
|
||||||
|
|
||||||
import Dodge.Data.ArcStep
|
|
||||||
import Dodge.Data.Item.Params
|
|
||||||
|
|
||||||
teslaParams :: ItemParams
|
|
||||||
teslaParams =
|
|
||||||
Arcing
|
|
||||||
{ _currentArc = Nothing
|
|
||||||
, _arcSize = 20
|
|
||||||
, _arcNumber = 10
|
|
||||||
, _newArcStep = DefaultArcStep --defaultArcStep
|
|
||||||
, _previousArcEffect = NoPreviousArcEffect
|
|
||||||
}
|
|
||||||
+1
-1
@@ -47,7 +47,7 @@ import Dodge.SmoothScroll
|
|||||||
import Dodge.SoundLogic
|
import Dodge.SoundLogic
|
||||||
import Dodge.Spark
|
import Dodge.Spark
|
||||||
import Dodge.Terminal.Type
|
import Dodge.Terminal.Type
|
||||||
import Dodge.Tesla.Arc
|
import Dodge.Tesla
|
||||||
import Dodge.TmTm
|
import Dodge.TmTm
|
||||||
import Dodge.TractorBeam.Update
|
import Dodge.TractorBeam.Update
|
||||||
import Dodge.Update.Camera
|
import Dodge.Update.Camera
|
||||||
|
|||||||
@@ -573,6 +573,7 @@ Draw src/Dodge/Shockwave/Draw.hs 1;" m
|
|||||||
Draw src/Dodge/Spark/Draw.hs 1;" m
|
Draw src/Dodge/Spark/Draw.hs 1;" m
|
||||||
Draw src/Dodge/Targeting/Draw.hs 1;" m
|
Draw src/Dodge/Targeting/Draw.hs 1;" m
|
||||||
Draw src/Dodge/Tesla/Arc/Draw.hs 1;" m
|
Draw src/Dodge/Tesla/Arc/Draw.hs 1;" m
|
||||||
|
Draw src/Dodge/Tesla/Draw.hs 1;" m
|
||||||
Draw src/Dodge/TractorBeam/Draw.hs 1;" m
|
Draw src/Dodge/TractorBeam/Draw.hs 1;" m
|
||||||
Draw src/Dodge/Wall/Draw.hs 1;" m
|
Draw src/Dodge/Wall/Draw.hs 1;" m
|
||||||
DrawBlankProjectile src/Dodge/Data/Item/Use/Consumption/Ammo.hs 20;" C
|
DrawBlankProjectile src/Dodge/Data/Item/Use/Consumption/Ammo.hs 20;" C
|
||||||
@@ -3700,6 +3701,7 @@ createGas src/Dodge/Gas.hs 8;" f
|
|||||||
createHeadLamp src/Dodge/Euse.hs 135;" f
|
createHeadLamp src/Dodge/Euse.hs 135;" f
|
||||||
createItemYou src/Dodge/Inventory/Add.hs 95;" f
|
createItemYou src/Dodge/Inventory/Add.hs 95;" f
|
||||||
createLightMap src/Render.hs 26;" f
|
createLightMap src/Render.hs 26;" f
|
||||||
|
createNewArc src/Dodge/Tesla.hs 81;" f
|
||||||
createNewArc src/Dodge/Tesla/Arc.hs 90;" f
|
createNewArc src/Dodge/Tesla/Arc.hs 90;" f
|
||||||
createPathGrid src/Dodge/Room/Path.hs 21;" f
|
createPathGrid src/Dodge/Room/Path.hs 21;" f
|
||||||
createProjectile src/Dodge/HeldUse.hs 575;" f
|
createProjectile src/Dodge/HeldUse.hs 575;" f
|
||||||
@@ -3816,6 +3818,7 @@ defaultAimMvType src/Dodge/Default/Creature.hs 116;" f
|
|||||||
defaultAimParams src/Dodge/Default/Item/Use/AimParams.hs 9;" f
|
defaultAimParams src/Dodge/Default/Item/Use/AimParams.hs 9;" f
|
||||||
defaultAimingCrit src/Dodge/Default/Creature.hs 125;" f
|
defaultAimingCrit src/Dodge/Default/Creature.hs 125;" f
|
||||||
defaultApplyDamage src/Dodge/Creature/Damage.hs 20;" f
|
defaultApplyDamage src/Dodge/Creature/Damage.hs 20;" f
|
||||||
|
defaultArcStep src/Dodge/Tesla.hs 133;" f
|
||||||
defaultArcStep src/Dodge/Tesla/Arc.hs 140;" f
|
defaultArcStep src/Dodge/Tesla/Arc.hs 140;" f
|
||||||
defaultArcStep src/Dodge/Tesla/Arc/Default.hs 15;" f
|
defaultArcStep src/Dodge/Tesla/Arc/Default.hs 15;" f
|
||||||
defaultAudition src/Dodge/Default/Creature.hs 93;" f
|
defaultAudition src/Dodge/Default/Creature.hs 93;" f
|
||||||
@@ -3936,6 +3939,7 @@ divideLineOddNumPoints src/Geometry.hs 278;" f
|
|||||||
doAfterPlacement src/Dodge/Layout.hs 86;" f
|
doAfterPlacement src/Dodge/Layout.hs 86;" f
|
||||||
doAfterPlacements src/Dodge/Layout.hs 83;" f
|
doAfterPlacements src/Dodge/Layout.hs 83;" f
|
||||||
doAnyEquipmentEffect src/Dodge/Creature/State.hs 180;" f
|
doAnyEquipmentEffect src/Dodge/Creature/State.hs 180;" f
|
||||||
|
doArcStep src/Dodge/Tesla.hs 128;" f
|
||||||
doArcStep src/Dodge/Tesla/Arc.hs 135;" f
|
doArcStep src/Dodge/Tesla/Arc.hs 135;" f
|
||||||
doBackspace src/Dodge/Update/Input/Text.hs 31;" f
|
doBackspace src/Dodge/Update/Input/Text.hs 31;" f
|
||||||
doBlBl src/Dodge/WorldEffect.hs 90;" f
|
doBlBl src/Dodge/WorldEffect.hs 90;" f
|
||||||
@@ -4131,6 +4135,7 @@ drawSwitchWire src/Dodge/LevelGen/Switch.hs 28;" f
|
|||||||
drawTargeting src/Dodge/Targeting/Draw.hs 13;" f
|
drawTargeting src/Dodge/Targeting/Draw.hs 13;" f
|
||||||
drawTerminalDisplay src/Dodge/Render/HUD.hs 351;" f
|
drawTerminalDisplay src/Dodge/Render/HUD.hs 351;" f
|
||||||
drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f
|
drawTeslaArc src/Dodge/Tesla/Arc/Draw.hs 7;" f
|
||||||
|
drawTeslaArc src/Dodge/Tesla/Draw.hs 9;" f
|
||||||
drawText src/Picture/Base.hs 220;" f
|
drawText src/Picture/Base.hs 220;" f
|
||||||
drawTitle src/Dodge/Render/MenuScreen.hs 58;" f
|
drawTitle src/Dodge/Render/MenuScreen.hs 58;" f
|
||||||
drawTitleBackground src/Dodge/Render/List.hs 44;" f
|
drawTitleBackground src/Dodge/Render/List.hs 44;" f
|
||||||
@@ -4643,7 +4648,7 @@ lasSensorTurretTest src/Dodge/Room/LasTurret.hs 104;" f
|
|||||||
lasTunnel src/Dodge/Room/LasTurret.hs 123;" f
|
lasTunnel src/Dodge/Room/LasTurret.hs 123;" f
|
||||||
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 164;" f
|
lasTunnelRunPast src/Dodge/Room/LasTurret.hs 164;" f
|
||||||
lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f
|
lasTurret src/Dodge/Placement/Instance/Turret.hs 23;" f
|
||||||
laser src/Dodge/Item/Held/BatteryGuns.hs 38;" f
|
laser src/Dodge/Item/Held/BatteryGuns.hs 48;" f
|
||||||
laserLinkTest src/Dodge/Item/Grammar.hs 119;" f
|
laserLinkTest src/Dodge/Item/Grammar.hs 119;" f
|
||||||
lastMap src/Dodge/DoubleTree.hs 174;" f
|
lastMap src/Dodge/DoubleTree.hs 174;" f
|
||||||
launcher src/Dodge/Item/Held/Launcher.hs 12;" f
|
launcher src/Dodge/Item/Held/Launcher.hs 12;" f
|
||||||
@@ -4802,6 +4807,7 @@ makeSwitch src/Dodge/LevelGen/Switch.hs 52;" f
|
|||||||
makeSwitchSPic src/Dodge/LevelGen/Switch.hs 40;" f
|
makeSwitchSPic src/Dodge/LevelGen/Switch.hs 40;" f
|
||||||
makeTermLine src/Dodge/Terminal.hs 120;" f
|
makeTermLine src/Dodge/Terminal.hs 120;" f
|
||||||
makeTermPara src/Dodge/Terminal.hs 123;" f
|
makeTermPara src/Dodge/Terminal.hs 123;" f
|
||||||
|
makeTeslaArc src/Dodge/Tesla.hs 65;" f
|
||||||
makeTeslaArc src/Dodge/Tesla/Arc.hs 65;" f
|
makeTeslaArc src/Dodge/Tesla/Arc.hs 65;" f
|
||||||
makeTeslaBallAt src/Dodge/Tesla/Ball.hs 6;" f
|
makeTeslaBallAt src/Dodge/Tesla/Ball.hs 6;" f
|
||||||
makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 40;" f
|
makeTeslaExplosionAt src/Dodge/WorldEvent/Explosion.hs 40;" f
|
||||||
@@ -5299,6 +5305,7 @@ randPeaked src/RandomHelp.hs 133;" f
|
|||||||
randPeakedParam src/RandomHelp.hs 125;" f
|
randPeakedParam src/RandomHelp.hs 125;" f
|
||||||
randProb src/RandomHelp.hs 68;" f
|
randProb src/RandomHelp.hs 68;" f
|
||||||
randSpark src/Dodge/Spark.hs 74;" f
|
randSpark src/Dodge/Spark.hs 74;" f
|
||||||
|
randWallReflect src/Dodge/Tesla.hs 57;" f
|
||||||
randWallReflect src/Dodge/Tesla/Arc.hs 57;" f
|
randWallReflect src/Dodge/Tesla/Arc.hs 57;" f
|
||||||
randomChallenges src/Dodge/Room/Start.hs 62;" f
|
randomChallenges src/Dodge/Room/Start.hs 62;" f
|
||||||
randomCompass src/Dodge/Layout.hs 59;" f
|
randomCompass src/Dodge/Layout.hs 59;" f
|
||||||
@@ -5836,6 +5843,7 @@ terminalShape src/Dodge/Machine/Draw.hs 32;" f
|
|||||||
terminalWheelEvent src/Dodge/Update/Scroll.hs 78;" f
|
terminalWheelEvent src/Dodge/Update/Scroll.hs 78;" f
|
||||||
teslaGun src/Dodge/Item/Held/BatteryGuns.hs 21;" f
|
teslaGun src/Dodge/Item/Held/BatteryGuns.hs 21;" f
|
||||||
teslaGunPic src/Dodge/Item/Draw/SPic.hs 386;" f
|
teslaGunPic src/Dodge/Item/Draw/SPic.hs 386;" f
|
||||||
|
teslaParams src/Dodge/Item/Held/BatteryGuns.hs 37;" f
|
||||||
teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f
|
teslaParams src/Dodge/Tesla/ItemParams.hs 6;" f
|
||||||
testCrossWalls src/Dodge/Room/Path.hs 47;" f
|
testCrossWalls src/Dodge/Room/Path.hs 47;" f
|
||||||
testEvent src/Dodge/Event/Test.hs 10;" f
|
testEvent src/Dodge/Event/Test.hs 10;" f
|
||||||
@@ -5912,7 +5920,7 @@ torso src/Dodge/Creature/Picture.hs 105;" f
|
|||||||
tractCr src/Dodge/TractorBeam/Update.hs 28;" f
|
tractCr src/Dodge/TractorBeam/Update.hs 28;" f
|
||||||
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f
|
tractFlIt src/Dodge/TractorBeam/Update.hs 23;" f
|
||||||
tractorBeamAt src/Dodge/HeldUse.hs 347;" f
|
tractorBeamAt src/Dodge/HeldUse.hs 347;" f
|
||||||
tractorGun src/Dodge/Item/Held/BatteryGuns.hs 60;" f
|
tractorGun src/Dodge/Item/Held/BatteryGuns.hs 70;" f
|
||||||
tractorGunPic src/Dodge/Item/Draw/SPic.hs 413;" f
|
tractorGunPic src/Dodge/Item/Draw/SPic.hs 413;" f
|
||||||
tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f
|
tractorPullPos src/Dodge/TractorBeam/Update.hs 33;" f
|
||||||
tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f
|
tractorSPic src/Dodge/TractorBeam/Draw.hs 10;" f
|
||||||
@@ -6014,6 +6022,7 @@ unusedSpotNearInLink src/Dodge/PlacementSpot.hs 191;" f
|
|||||||
upHammer src/Dodge/Default.hs 76;" f
|
upHammer src/Dodge/Default.hs 76;" f
|
||||||
upProjectile src/Dodge/Projectile/Update.hs 26;" f
|
upProjectile src/Dodge/Projectile/Update.hs 26;" f
|
||||||
updateAllNodes src/TreeHelp.hs 85;" f
|
updateAllNodes src/TreeHelp.hs 85;" f
|
||||||
|
updateArc src/Dodge/Tesla.hs 91;" f
|
||||||
updateArc src/Dodge/Tesla/Arc.hs 100;" f
|
updateArc src/Dodge/Tesla/Arc.hs 100;" f
|
||||||
updateAttachedItems src/Dodge/Creature/State.hs 256;" f
|
updateAttachedItems src/Dodge/Creature/State.hs 256;" f
|
||||||
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 455;" f
|
updateBackspaceRegex src/Dodge/Update/Input/InGame.hs 455;" f
|
||||||
@@ -6109,6 +6118,7 @@ updateSounds src/Sound.hs 66;" f
|
|||||||
updateSpark src/Dodge/Spark.hs 19;" f
|
updateSpark src/Dodge/Spark.hs 19;" f
|
||||||
updateSparks src/Dodge/Update.hs 564;" f
|
updateSparks src/Dodge/Update.hs 564;" f
|
||||||
updateTempLightSource src/Dodge/LightSource/Update.hs 7;" f
|
updateTempLightSource src/Dodge/LightSource/Update.hs 7;" f
|
||||||
|
updateTeslaArc src/Dodge/Tesla.hs 23;" f
|
||||||
updateTeslaArc src/Dodge/Tesla/Arc.hs 23;" f
|
updateTeslaArc src/Dodge/Tesla/Arc.hs 23;" f
|
||||||
updateTeslaArcs src/Dodge/Update.hs 546;" f
|
updateTeslaArcs src/Dodge/Update.hs 546;" f
|
||||||
updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f
|
updateTractorBeam src/Dodge/TractorBeam/Update.hs 9;" f
|
||||||
@@ -6290,6 +6300,7 @@ zConnect src/Dodge/Render/Connectors.hs 17;" f
|
|||||||
zConnectCol src/Dodge/Render/Connectors.hs 28;" f
|
zConnectCol src/Dodge/Render/Connectors.hs 28;" f
|
||||||
zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f
|
zConnectColMidX src/Dodge/Render/Connectors.hs 31;" f
|
||||||
zeroZ src/Geometry/Vector.hs 8;" f
|
zeroZ src/Geometry/Vector.hs 8;" f
|
||||||
|
zipArcs src/Dodge/Tesla.hs 103;" f
|
||||||
zipArcs src/Dodge/Tesla/Arc.hs 110;" f
|
zipArcs src/Dodge/Tesla/Arc.hs 110;" f
|
||||||
zipCount src/Dodge/Tree/Shift.hs 129;" f
|
zipCount src/Dodge/Tree/Shift.hs 129;" f
|
||||||
zipCountDown src/Dodge/Room/Procedural.hs 118;" f
|
zipCountDown src/Dodge/Room/Procedural.hs 118;" f
|
||||||
|
|||||||
Reference in New Issue
Block a user