Refactor, try to limit dependencies

This commit is contained in:
2022-07-28 00:59:56 +01:00
parent 8aa5c17ab9
commit 160560af5f
418 changed files with 15104 additions and 13342 deletions
+32 -24
View File
@@ -1,36 +1,44 @@
module Dodge.Tesla.Arc.Default where
import Dodge.Data
import RandomHelp
import Geometry
import Dodge.Data.CrWlID
import Data.List (sortOn)
import Data.Maybe
import Dodge.Base.Collide
import Dodge.Data.ArcStep
import Dodge.Data.World
import Geometry
import qualified IntMapHelp as IM
import LensHelp
import RandomHelp
import Shape
import Data.Maybe
import Data.List (sortOn)
import qualified IntMapHelp as IM
defaultArcStep :: RandomGen g => ItemParams -> World -> ArcStep
-> State g (Maybe ArcStep)
defaultArcStep _ _ (ArcStep _ _ (CrID _)) = return Nothing
defaultArcStep _ _ (ArcStep _ _ (WlID _)) = 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
$ _creatures (_cWorld w)
mwl = listToMaybe
. sortOn (dist p . fst)
. mapMaybe (\ q -> sequence $ collidePointWallsFilterStream (const True) p (center +.+ q) w)
let mcr =
listToMaybe
. sortOn (dist center . _crPos)
. filter (\cr -> dist center (_crPos cr) < csize)
. IM.elems
$ _creatures (_cWorld w)
mwl =
listToMaybe
. sortOn (dist p . fst)
. mapMaybe (\q -> sequence $ collidePointWallsFilterStream (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]
$ 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]
+8 -5
View File
@@ -1,12 +1,15 @@
module Dodge.Tesla.Arc.Draw where
import Dodge.Data.TeslaArc
import Geometry
import Picture
drawTeslaArc :: TeslaArc -> Picture
drawTeslaArc pt = setLayer BloomNoZWrite $ pictures
[ setDepth 20.5 $ color (brightX 2 1 $ _taColor pt) $ thickLine 3 ps
, setDepth 20 $ color (V4 0 0 0 0.5) $ thickLine 10 ps
]
drawTeslaArc pt =
setLayer BloomNoZWrite $
pictures
[ 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