From 2056d8ba0ece57beb86aaa25fd18ae92c5fd667e Mon Sep 17 00:00:00 2001 From: justin Date: Sun, 19 Oct 2025 21:50:43 +0100 Subject: [PATCH] Comment out DeriveAnyClass extensions --- src/Color/Data.hs | 2 +- src/Dodge/Creature/Action.hs | 105 +++---- src/Dodge/Creature/Impulse.hs | 2 +- src/Dodge/Data/ActionPlan.hs | 39 +-- src/Dodge/Data/AimStance.hs | 2 +- src/Dodge/Data/ArcStep.hs | 2 +- src/Dodge/Data/Beam.hs | 2 +- src/Dodge/Data/BlBl.hs | 2 +- src/Dodge/Data/Block.hs | 2 +- src/Dodge/Data/Bounds.hs | 2 +- src/Dodge/Data/Bullet.hs | 2 +- src/Dodge/Data/Button.hs | 2 +- src/Dodge/Data/CWorld.hs | 6 +- src/Dodge/Data/Camera.hs | 2 +- src/Dodge/Data/Cloud.hs | 2 +- src/Dodge/Data/CombAmount.hs | 2 +- src/Dodge/Data/CrGroupParams.hs | 2 +- src/Dodge/Data/CrWlID.hs | 2 +- src/Dodge/Data/Creature.hs | 2 +- src/Dodge/Data/Creature/Memory.hs | 2 +- src/Dodge/Data/Creature/Misc.hs | 2 +- src/Dodge/Data/Creature/Perception.hs | 2 +- src/Dodge/Data/Creature/Stance.hs | 2 +- src/Dodge/Data/Creature/State.hs | 2 +- src/Dodge/Data/CreatureEffect.hs | 2 +- src/Dodge/Data/Damage.hs | 2 +- src/Dodge/Data/Distortion.hs | 2 +- src/Dodge/Data/Door.hs | 2 +- src/Dodge/Data/DoubleTree.hs | 2 +- src/Dodge/Data/EnergyBall.hs | 2 +- src/Dodge/Data/EnergyBall/Type.hs | 2 +- src/Dodge/Data/Flame.hs | 2 +- src/Dodge/Data/FloatFunction.hs | 2 +- src/Dodge/Data/FloorItem.hs | 2 +- src/Dodge/Data/ForegroundShape.hs | 2 +- src/Dodge/Data/GenFloat.hs | 2 +- src/Dodge/Data/GenParams.hs | 2 +- src/Dodge/Data/Gust.hs | 2 +- src/Dodge/Data/HUD.hs | 2 +- src/Dodge/Data/Input.hs | 2 +- src/Dodge/Data/Item/Combine.hs | 2 +- src/Dodge/Data/Item/Location.hs | 2 +- src/Dodge/Data/Item/Misc.hs | 2 +- src/Dodge/Data/Item/Params.hs | 2 +- src/Dodge/Data/Item/Scope.hs | 2 +- src/Dodge/Data/Item/Targeting.hs | 2 +- src/Dodge/Data/Item/Use.hs | 2 +- .../Data/Item/Use/Consumption/LoadAction.hs | 2 +- src/Dodge/Data/LWorld.hs | 2 +- src/Dodge/Data/Laser.hs | 2 +- src/Dodge/Data/LightSource.hs | 2 +- src/Dodge/Data/LinearShockwave.hs | 2 +- src/Dodge/Data/Machine.hs | 2 +- src/Dodge/Data/Machine/Sensor.hs | 2 +- src/Dodge/Data/Magnet.hs | 2 +- src/Dodge/Data/Material.hs | 2 +- src/Dodge/Data/Modification.hs | 2 +- src/Dodge/Data/MountedObject.hs | 2 +- src/Dodge/Data/ObjectType.hs | 2 +- src/Dodge/Data/PathGraph.hs | 8 + src/Dodge/Data/Payload.hs | 2 +- src/Dodge/Data/Projectile.hs | 2 +- src/Dodge/Data/Prop.hs | 2 +- src/Dodge/Data/RadarBlip.hs | 2 +- src/Dodge/Data/RadarSweep.hs | 2 +- src/Dodge/Data/RightButtonOptions.hs | 2 +- src/Dodge/Data/SaveSlot.hs | 2 +- src/Dodge/Data/Shockwave.hs | 2 +- src/Dodge/Data/SoundOrigin.hs | 2 +- src/Dodge/Data/Spark.hs | 2 +- src/Dodge/Data/Terminal.hs | 2 +- src/Dodge/Data/TeslaArc.hs | 2 +- src/Dodge/Data/TractorBeam.hs | 2 +- src/Dodge/Data/Universe.hs | 2 +- src/Dodge/Data/Wall.hs | 2 +- src/Dodge/Data/Wall/Structure.hs | 2 +- src/Dodge/Data/World.hs | 3 +- src/Dodge/Data/WorldEffect.hs | 2 +- src/Dodge/Default/World.hs | 3 + src/Dodge/GameRoom.hs | 2 +- src/Dodge/Graph.hs | 2 + src/Dodge/Layout.hs | 5 + src/Dodge/Path.hs | 82 ++--- src/Dodge/Zoning/Pathing.hs | 14 +- src/Geometry/ConvexPoly.hs | 2 +- src/MaybeHelp.hs | 2 +- src/NewInt.hs | 2 +- src/Picture/Data.hs | 2 +- src/Shape/Data.hs | 2 +- src/Sound/Data.hs | 2 +- tags | 288 +++++++++--------- 91 files changed, 356 insertions(+), 359 deletions(-) diff --git a/src/Color/Data.hs b/src/Color/Data.hs index 422dc4892..08e11796c 100644 --- a/src/Color/Data.hs +++ b/src/Color/Data.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} --{-# LANGUAGE DeriveGeneric #-} diff --git a/src/Dodge/Creature/Action.hs b/src/Dodge/Creature/Action.hs index 06857c2b2..8e8ac5657 100644 --- a/src/Dodge/Creature/Action.hs +++ b/src/Dodge/Creature/Action.hs @@ -3,7 +3,6 @@ -- | Actions performed by creatures within the world module Dodge.Creature.Action ( performActions, - dropExcept, dropItem, blinkActionMousePos, blinkActionFail, @@ -13,7 +12,6 @@ module Dodge.Creature.Action ( import Control.Applicative import Control.Monad -import Data.Bifunctor import Data.Foldable import Data.Maybe import Dodge.Base @@ -35,6 +33,8 @@ import LensHelp import Linear import NewInt +-- it is desirable to be able to determine when an action is finished, +-- so that DoActionThen and the like are easy to define performActions :: Int -> World -> World performActions cid w = foldl' @@ -45,59 +45,13 @@ performActions cid w = cr = w ^?! cWorld . lWorld . creatures . ix cid (iss, mayas) = foldMap (performAction cr w) $ cr ^. crActionPlan . apAction -type OutAction = ([Impulse], [Action]) +type ActionUpdate = ([Impulse], [Action]) -performAimAt :: Creature -> World -> Int -> Point2 -> OutAction -performAimAt cr w tcid p = ([TurnToward tpos aimSp], [AimAt tcid tpos]) - where - cdir = _crDir cr - cpos = cr ^. crPos . _xy - canSee' = canSee (_crID cr) tcid w - aimSp = case crMvType cr ^? mvAimSpeed of - Just f -> doFloatFloat f $ safeAngleVV (unitVectorAtAngle cdir) (tpos - cpos) - Nothing -> error "creature without aiming type" - tpos - | canSee' = w ^?! cWorld . lWorld . creatures . ix tcid . crPos . _xy - | otherwise = p - -performPathTo :: Creature -> World -> Point2 -> OutAction -performPathTo cr w p - | dist cpos p <= crRad (cr ^. crType) = ([], []) - | isWalkable cpos p w = - ( [MvTurnToward 0 cpos p p, MvForward, RandomTurn jit] - , [PathTo p] - ) - | otherwise = case pointTowardsImpulse cpos p w of - Just q -> - ( - [ MvTurnToward 1 cpos p q - , MvForward - , RandomTurn jit - ] - , [PathTo p] - ) - _ -> ([ChangeStrategy Flee], []) - where - cpos = cr ^. crPos . _xy - jit = _mvTurnJit $ crMvType cr - -performTurnToA :: Creature -> Point2 -> OutAction -performTurnToA cr p - | angleVV cdirv dirv < 0.1 = ([], []) - | otherwise = ([MvTurnToward 2 p p p, RandomTurn jit], [TurnToPoint p]) - where - cpos = cr ^. crPos . _xy - cdirv = unitVectorAtAngle (_crDir cr) - dirv = p -.- cpos - jit = _mvTurnJit $ crMvType cr - -{- | Performing an action on a frame creates an OutAction: - adds impulses and updates or deletes the action itself. +{- | Performing an action on a frame creates an ActionUpdate: + gives impulses and updates/deletes the action itself. -} -performAction :: Creature -> World -> Action -> OutAction +performAction :: Creature -> World -> Action -> ActionUpdate performAction cr w ac = case ac of - ActionNothing -> ([], mempty) - LabelAction str subAc -> second (fmap (LabelAction str)) $ performAction cr w subAc AimAt tcid p -> performAimAt cr w tcid p WaitThen 0 newAc -> ([], [newAc]) WaitThen t newAc -> ([], [WaitThen (t -1) newAc]) @@ -145,15 +99,44 @@ performAction cr w ac = case ac of (imps, _) -> (imps, [DoReplicatePartial startac (t -1) startac]) NoAction -> ([], mempty) +performAimAt :: Creature -> World -> Int -> Point2 -> ActionUpdate +performAimAt cr w tcid p = ([TurnToward tpos aimSp], [AimAt tcid tpos]) + where + cdir = _crDir cr + cpos = cr ^. crPos . _xy + canSee' = canSee (_crID cr) tcid w + aimSp = case crMvType cr ^? mvAimSpeed of + Just f -> doFloatFloat f $ safeAngleVV (unitVectorAtAngle cdir) (tpos - cpos) + Nothing -> error "creature without aiming type" + tpos + | canSee' = w ^?! cWorld . lWorld . creatures . ix tcid . crPos . _xy + | otherwise = p + +performPathTo :: Creature -> World -> Point2 -> ActionUpdate +performPathTo cr w p + | dist cpos p <= crRad (cr ^. crType) = mempty + | isWalkable cpos p w = gotowards p + | otherwise = case pointTowardsImpulse cpos p w of + Just q -> gotowards q + _ -> ([ChangeStrategy Flee], []) + where + gotowards q = ( [MvTurnToward q, MvForward, RandomTurn jit] , [PathTo p]) + cpos = cr ^. crPos . _xy + jit = _mvTurnJit $ crMvType cr + +performTurnToA :: Creature -> Point2 -> ActionUpdate +performTurnToA cr p + | angleVV cdirv dirv < 0.1 = mempty + | otherwise = ([MvTurnToward p, RandomTurn jit], [TurnToPoint p]) + where + cpos = cr ^. crPos . _xy + cdirv = unitVectorAtAngle (_crDir cr) + dirv = p -.- cpos + jit = _mvTurnJit $ crMvType cr + --setMinInvSize :: Int -> Creature -> World -> World --setMinInvSize n cr = cWorld . lWorld . creatures . ix (_crID cr) . crInvCapacity .~ n ----- maybe this should be removed... ---stripNoItems :: Creature -> World -> World ---stripNoItems cr = --- organiseInvKeys (_crID cr) --- . (cWorld . lWorld . creatures . ix (_crID cr) . crInv %~ IM.mapMaybe Just) --- --organiseInvKeys :: Int -> World -> World --organiseInvKeys cid w = -- w & cWorld . lWorld . creatures . ix cid @@ -167,12 +150,6 @@ performAction cr w ac = case ac of -- newSelKey = fromMaybe 0 $ findIndex ((== crSel cr) . fst) pairs -- newInv = IM.fromAscList $ zip [0 ..] $ map snd pairs -dropExcept :: Creature -> Int -> World -> World -dropExcept cr invid w = - foldr (dropItem cr) w . IM.keys $ - -- invid `IM.delete` _crInv cr - invid `IM.delete` _unNIntMap (_crInv cr) - -- why not a cid (Int)? dropItem :: Creature -> Int -> World -> World dropItem cr invid w' = diff --git a/src/Dodge/Creature/Impulse.hs b/src/Dodge/Creature/Impulse.hs index 8e2665d8e..c87095174 100644 --- a/src/Dodge/Creature/Impulse.hs +++ b/src/Dodge/Creature/Impulse.hs @@ -56,7 +56,7 @@ followImpulse cid w = \case tcr <- w ^? cWorld . lWorld . creatures . ix i return $ followImpulse cid w (doCrImp f tcr) MvForward -> crup $ crMvForward speed (w ^. cWorld . lWorld) - MvTurnToward _ _ _ p -> + MvTurnToward p -> crup $ creatureTurnToward p (turnRad $ safeAngleVV (p -.- cpos) (unitVectorAtAngle cdir)) where diff --git a/src/Dodge/Data/ActionPlan.hs b/src/Dodge/Data/ActionPlan.hs index 177d0b44e..df1e79cf3 100644 --- a/src/Dodge/Data/ActionPlan.hs +++ b/src/Dodge/Data/ActionPlan.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} @@ -32,7 +32,7 @@ data Impulse | RandomTurn Float | RandomImpulse RandImpulse -- (State StdGen Impulse) | TurnToward Point2 Float - | MvTurnToward Int Point2 Point2 Point2 -- the Int is just a label + | MvTurnToward Point2 | MvForward | TurnTo Point2 | UseItem @@ -65,28 +65,14 @@ infixr 9 `DoReplicate` infixr 9 `DoImpulsesAlongside` data Action - = LabelAction - { _actLabel :: String - , _actAction :: Action - } - | ActionNothing - | AimAt + = AimAt { _targetID :: Int , _targetSeenAt :: Point2 } | PathTo { _pathToPoint :: Point2 } - | TurnToPoint - { _turnToPoint :: Point2 - } - | -- | PickupItem - -- {_pickupItemID :: Int - -- } - ImpulsesList - { _impulsesListList :: [[Impulse]] - } - | DoImpulses - { _doImpulsesList :: [Impulse] - } + | TurnToPoint { _turnToPoint :: Point2 } + | ImpulsesList { _impulsesListList :: [[Impulse]] } + | DoImpulses { _doImpulsesList :: [Impulse] } | WaitThen { _waitThenTimer :: Int , _waitThenAction :: Action @@ -114,17 +100,12 @@ data Action , _doActionWhileThenCondition :: WdCrBl , _doActionWhileThenThen :: Action } - | DoActions - { _doActionsList :: [Action] - } + | DoActions { _doActionsList :: [Action] } | DoActionThen { _doActionThenFirst :: Action , _doActionThenSecond :: Action } - | -- | DoGuardActions - -- {_doGuardActionsList :: [( (World, Creature) -> Bool, Action, Maybe Action)] - -- } - DoReplicate + | DoReplicate { _doReplicateTimes :: Int , _doReplicateAction :: Action } @@ -133,9 +114,7 @@ data Action , _doReplicateTimes :: Int , _doReplicateAction :: Action } - | LeadTarget - { _leadTargetBy :: Point2 - } + | LeadTarget { _leadTargetBy :: Point2 } | NoAction | StartSentinelPost | UseSelf { _useSelf :: CrAc } diff --git a/src/Dodge/Data/AimStance.hs b/src/Dodge/Data/AimStance.hs index 11f440227..a43fcb723 100644 --- a/src/Dodge/Data/AimStance.hs +++ b/src/Dodge/Data/AimStance.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/ArcStep.hs b/src/Dodge/Data/ArcStep.hs index 759243913..71245233e 100644 --- a/src/Dodge/Data/ArcStep.hs +++ b/src/Dodge/Data/ArcStep.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Beam.hs b/src/Dodge/Data/Beam.hs index 5dc876379..e840a0561 100644 --- a/src/Dodge/Data/Beam.hs +++ b/src/Dodge/Data/Beam.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/BlBl.hs b/src/Dodge/Data/BlBl.hs index 459b48b84..5bbad0184 100644 --- a/src/Dodge/Data/BlBl.hs +++ b/src/Dodge/Data/BlBl.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Block.hs b/src/Dodge/Data/Block.hs index 7cca56c48..eef202a32 100644 --- a/src/Dodge/Data/Block.hs +++ b/src/Dodge/Data/Block.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Bounds.hs b/src/Dodge/Data/Bounds.hs index d0b4bcc27..90dd5bc8d 100644 --- a/src/Dodge/Data/Bounds.hs +++ b/src/Dodge/Data/Bounds.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Bullet.hs b/src/Dodge/Data/Bullet.hs index f314ac5b7..cb04660ab 100644 --- a/src/Dodge/Data/Bullet.hs +++ b/src/Dodge/Data/Bullet.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Button.hs b/src/Dodge/Data/Button.hs index 5268dcf82..bb62cc09a 100644 --- a/src/Dodge/Data/Button.hs +++ b/src/Dodge/Data/Button.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/CWorld.hs b/src/Dodge/Data/CWorld.hs index 9cb20fd09..eba07cf47 100644 --- a/src/Dodge/Data/CWorld.hs +++ b/src/Dodge/Data/CWorld.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} @@ -19,6 +19,8 @@ import Dodge.Data.LWorld import Dodge.GameRoom import Geometry.ConvexPoly import Geometry.Data +import qualified Data.Vector as V +import qualified Data.Vector.Unboxed as UV data CWorld = CWorld { _lWorld :: LWorld @@ -26,6 +28,8 @@ data CWorld = CWorld , _cClock :: Int , _cwTiles :: [Tile] , _pathGraph :: Gr Point2 PathEdge + , _incGraph :: V.Vector [(Int,SimpleEdge)] + , _incNode :: UV.Vector Point2 , _numberFloorVerxs :: Int , _chasms :: [[Point2]] , _numberChasmVerxs :: Int diff --git a/src/Dodge/Data/Camera.hs b/src/Dodge/Data/Camera.hs index 8daf1fc51..4521b7183 100644 --- a/src/Dodge/Data/Camera.hs +++ b/src/Dodge/Data/Camera.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Cloud.hs b/src/Dodge/Data/Cloud.hs index 0cdf981cf..54b93378a 100644 --- a/src/Dodge/Data/Cloud.hs +++ b/src/Dodge/Data/Cloud.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/CombAmount.hs b/src/Dodge/Data/CombAmount.hs index 308040e25..a5fef5079 100644 --- a/src/Dodge/Data/CombAmount.hs +++ b/src/Dodge/Data/CombAmount.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} diff --git a/src/Dodge/Data/CrGroupParams.hs b/src/Dodge/Data/CrGroupParams.hs index 0028a34d1..cd9ec127a 100644 --- a/src/Dodge/Data/CrGroupParams.hs +++ b/src/Dodge/Data/CrGroupParams.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/CrWlID.hs b/src/Dodge/Data/CrWlID.hs index effeb976b..baed78b31 100644 --- a/src/Dodge/Data/CrWlID.hs +++ b/src/Dodge/Data/CrWlID.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Creature.hs b/src/Dodge/Data/Creature.hs index 0128cfbe5..f61b5dde8 100644 --- a/src/Dodge/Data/Creature.hs +++ b/src/Dodge/Data/Creature.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StrictData #-} diff --git a/src/Dodge/Data/Creature/Memory.hs b/src/Dodge/Data/Creature/Memory.hs index b8388f5db..a7089d4e9 100644 --- a/src/Dodge/Data/Creature/Memory.hs +++ b/src/Dodge/Data/Creature/Memory.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Creature/Misc.hs b/src/Dodge/Data/Creature/Misc.hs index 681b4cc15..cbcafbd4d 100644 --- a/src/Dodge/Data/Creature/Misc.hs +++ b/src/Dodge/Data/Creature/Misc.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Creature/Perception.hs b/src/Dodge/Data/Creature/Perception.hs index 89b251bc1..8174b10cf 100644 --- a/src/Dodge/Data/Creature/Perception.hs +++ b/src/Dodge/Data/Creature/Perception.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Creature/Stance.hs b/src/Dodge/Data/Creature/Stance.hs index 7510a4d65..8e02be9d9 100644 --- a/src/Dodge/Data/Creature/Stance.hs +++ b/src/Dodge/Data/Creature/Stance.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Creature/State.hs b/src/Dodge/Data/Creature/State.hs index ed40d3ba1..2def2d076 100644 --- a/src/Dodge/Data/Creature/State.hs +++ b/src/Dodge/Data/Creature/State.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/CreatureEffect.hs b/src/Dodge/Data/CreatureEffect.hs index 24297e171..a118734be 100644 --- a/src/Dodge/Data/CreatureEffect.hs +++ b/src/Dodge/Data/CreatureEffect.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Damage.hs b/src/Dodge/Data/Damage.hs index b66a3b556..87d16d0a1 100644 --- a/src/Dodge/Data/Damage.hs +++ b/src/Dodge/Data/Damage.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Distortion.hs b/src/Dodge/Data/Distortion.hs index b6f38c027..be5b20338 100644 --- a/src/Dodge/Data/Distortion.hs +++ b/src/Dodge/Data/Distortion.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Door.hs b/src/Dodge/Data/Door.hs index f0864b279..7a8850a3f 100644 --- a/src/Dodge/Data/Door.hs +++ b/src/Dodge/Data/Door.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/DoubleTree.hs b/src/Dodge/Data/DoubleTree.hs index 7063c9110..edaad4e81 100644 --- a/src/Dodge/Data/DoubleTree.hs +++ b/src/Dodge/Data/DoubleTree.hs @@ -1,5 +1,5 @@ {-# LANGUAGE LambdaCase #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} --{-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/EnergyBall.hs b/src/Dodge/Data/EnergyBall.hs index a95012758..05db02dd5 100644 --- a/src/Dodge/Data/EnergyBall.hs +++ b/src/Dodge/Data/EnergyBall.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/EnergyBall/Type.hs b/src/Dodge/Data/EnergyBall/Type.hs index 63ec25e86..ed0599522 100644 --- a/src/Dodge/Data/EnergyBall/Type.hs +++ b/src/Dodge/Data/EnergyBall/Type.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Flame.hs b/src/Dodge/Data/Flame.hs index 9be0dbe3a..ab7fbf8d8 100644 --- a/src/Dodge/Data/Flame.hs +++ b/src/Dodge/Data/Flame.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/FloatFunction.hs b/src/Dodge/Data/FloatFunction.hs index 4918f3a44..32810dce4 100644 --- a/src/Dodge/Data/FloatFunction.hs +++ b/src/Dodge/Data/FloatFunction.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/FloorItem.hs b/src/Dodge/Data/FloorItem.hs index 49414d831..c56258976 100644 --- a/src/Dodge/Data/FloorItem.hs +++ b/src/Dodge/Data/FloorItem.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/ForegroundShape.hs b/src/Dodge/Data/ForegroundShape.hs index 5e0b4dec1..4dd376985 100644 --- a/src/Dodge/Data/ForegroundShape.hs +++ b/src/Dodge/Data/ForegroundShape.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/GenFloat.hs b/src/Dodge/Data/GenFloat.hs index 0250e5eaa..d7d49a571 100644 --- a/src/Dodge/Data/GenFloat.hs +++ b/src/Dodge/Data/GenFloat.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} module Dodge.Data.GenFloat diff --git a/src/Dodge/Data/GenParams.hs b/src/Dodge/Data/GenParams.hs index 483317026..8f44ecb47 100644 --- a/src/Dodge/Data/GenParams.hs +++ b/src/Dodge/Data/GenParams.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Gust.hs b/src/Dodge/Data/Gust.hs index 1b49b4093..958152ed0 100644 --- a/src/Dodge/Data/Gust.hs +++ b/src/Dodge/Data/Gust.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/HUD.hs b/src/Dodge/Data/HUD.hs index 7b85e2e66..0023ba921 100644 --- a/src/Dodge/Data/HUD.hs +++ b/src/Dodge/Data/HUD.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Input.hs b/src/Dodge/Data/Input.hs index 4ac70eaee..98c6a726f 100644 --- a/src/Dodge/Data/Input.hs +++ b/src/Dodge/Data/Input.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Item/Combine.hs b/src/Dodge/Data/Item/Combine.hs index 03fc52dc8..4afb9752d 100644 --- a/src/Dodge/Data/Item/Combine.hs +++ b/src/Dodge/Data/Item/Combine.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Item/Location.hs b/src/Dodge/Data/Item/Location.hs index f163a684f..48d94bb51 100644 --- a/src/Dodge/Data/Item/Location.hs +++ b/src/Dodge/Data/Item/Location.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE EmptyDataDeriving #-} diff --git a/src/Dodge/Data/Item/Misc.hs b/src/Dodge/Data/Item/Misc.hs index 42204b909..1fd290b0f 100644 --- a/src/Dodge/Data/Item/Misc.hs +++ b/src/Dodge/Data/Item/Misc.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Item/Params.hs b/src/Dodge/Data/Item/Params.hs index f73a97d39..5522c6758 100644 --- a/src/Dodge/Data/Item/Params.hs +++ b/src/Dodge/Data/Item/Params.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Item/Scope.hs b/src/Dodge/Data/Item/Scope.hs index e8328fc3a..54b964e47 100644 --- a/src/Dodge/Data/Item/Scope.hs +++ b/src/Dodge/Data/Item/Scope.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Item/Targeting.hs b/src/Dodge/Data/Item/Targeting.hs index b3c7fa777..81587e2e4 100644 --- a/src/Dodge/Data/Item/Targeting.hs +++ b/src/Dodge/Data/Item/Targeting.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Item/Use.hs b/src/Dodge/Data/Item/Use.hs index ccaffc608..8285d9602 100644 --- a/src/Dodge/Data/Item/Use.hs +++ b/src/Dodge/Data/Item/Use.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs b/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs index 3fd740ba6..7f0262cd7 100644 --- a/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs +++ b/src/Dodge/Data/Item/Use/Consumption/LoadAction.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/LWorld.hs b/src/Dodge/Data/LWorld.hs index a15e9a88f..1e26964d0 100644 --- a/src/Dodge/Data/LWorld.hs +++ b/src/Dodge/Data/LWorld.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Laser.hs b/src/Dodge/Data/Laser.hs index 0683e25ff..a13305a91 100644 --- a/src/Dodge/Data/Laser.hs +++ b/src/Dodge/Data/Laser.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/LightSource.hs b/src/Dodge/Data/LightSource.hs index c6b838d54..a39db79fc 100644 --- a/src/Dodge/Data/LightSource.hs +++ b/src/Dodge/Data/LightSource.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/LinearShockwave.hs b/src/Dodge/Data/LinearShockwave.hs index 957852c0b..81469be7d 100644 --- a/src/Dodge/Data/LinearShockwave.hs +++ b/src/Dodge/Data/LinearShockwave.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Machine.hs b/src/Dodge/Data/Machine.hs index 397b6e977..5db59a911 100644 --- a/src/Dodge/Data/Machine.hs +++ b/src/Dodge/Data/Machine.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Machine/Sensor.hs b/src/Dodge/Data/Machine/Sensor.hs index 80d30afdb..c33724acb 100644 --- a/src/Dodge/Data/Machine/Sensor.hs +++ b/src/Dodge/Data/Machine/Sensor.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Magnet.hs b/src/Dodge/Data/Magnet.hs index ddbf099d5..7041fec04 100644 --- a/src/Dodge/Data/Magnet.hs +++ b/src/Dodge/Data/Magnet.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Material.hs b/src/Dodge/Data/Material.hs index 3b2a2bf39..a2a8b0f77 100644 --- a/src/Dodge/Data/Material.hs +++ b/src/Dodge/Data/Material.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Modification.hs b/src/Dodge/Data/Modification.hs index e992e4744..2b6f578dc 100644 --- a/src/Dodge/Data/Modification.hs +++ b/src/Dodge/Data/Modification.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/MountedObject.hs b/src/Dodge/Data/MountedObject.hs index 1072c2690..0ddb37869 100644 --- a/src/Dodge/Data/MountedObject.hs +++ b/src/Dodge/Data/MountedObject.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/ObjectType.hs b/src/Dodge/Data/ObjectType.hs index 6bc5b781a..56ab9d94d 100644 --- a/src/Dodge/Data/ObjectType.hs +++ b/src/Dodge/Data/ObjectType.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/PathGraph.hs b/src/Dodge/Data/PathGraph.hs index 591eeb1cf..54f5635a1 100644 --- a/src/Dodge/Data/PathGraph.hs +++ b/src/Dodge/Data/PathGraph.hs @@ -45,6 +45,12 @@ data PathEdge = PathEdge } deriving (Eq, Ord, Show, Read) --Generic, Flat) +data SimpleEdge = SimpleEdge + { _seDist :: Float + , _seObstacles :: Set.Set EdgeObstacle + } + deriving (Eq, Ord, Show, Read) --Generic, Flat) + data EdgeObstacle = BlockObstacle | DoorObstacle @@ -63,8 +69,10 @@ data EdgeObstacle --makeLenses ''PathGraph makeLenses ''PathEdge makeLenses ''PathEdgeNodes +makeLenses ''SimpleEdge deriveJSON defaultOptions ''EdgeObstacle deriveJSON defaultOptions ''PathEdge deriveJSON defaultOptions ''PathEdgeNodes deriveJSON defaultOptions ''Gr +deriveJSON defaultOptions ''SimpleEdge --deriveJSON defaultOptions ''PathGraph diff --git a/src/Dodge/Data/Payload.hs b/src/Dodge/Data/Payload.hs index 88e024aa3..6e30ccc67 100644 --- a/src/Dodge/Data/Payload.hs +++ b/src/Dodge/Data/Payload.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Projectile.hs b/src/Dodge/Data/Projectile.hs index 6147495c5..1c3d1ccc0 100644 --- a/src/Dodge/Data/Projectile.hs +++ b/src/Dodge/Data/Projectile.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Prop.hs b/src/Dodge/Data/Prop.hs index d761017d0..b03b47d10 100644 --- a/src/Dodge/Data/Prop.hs +++ b/src/Dodge/Data/Prop.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/RadarBlip.hs b/src/Dodge/Data/RadarBlip.hs index 06d2d0b73..ee863ed8c 100644 --- a/src/Dodge/Data/RadarBlip.hs +++ b/src/Dodge/Data/RadarBlip.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/RadarSweep.hs b/src/Dodge/Data/RadarSweep.hs index f92c20f51..bff0d1c1d 100644 --- a/src/Dodge/Data/RadarSweep.hs +++ b/src/Dodge/Data/RadarSweep.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/RightButtonOptions.hs b/src/Dodge/Data/RightButtonOptions.hs index d1a30fea4..a1d0c0361 100644 --- a/src/Dodge/Data/RightButtonOptions.hs +++ b/src/Dodge/Data/RightButtonOptions.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/SaveSlot.hs b/src/Dodge/Data/SaveSlot.hs index 48a401311..274eed862 100644 --- a/src/Dodge/Data/SaveSlot.hs +++ b/src/Dodge/Data/SaveSlot.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Shockwave.hs b/src/Dodge/Data/Shockwave.hs index e003cd713..471c02913 100644 --- a/src/Dodge/Data/Shockwave.hs +++ b/src/Dodge/Data/Shockwave.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/SoundOrigin.hs b/src/Dodge/Data/SoundOrigin.hs index 7c7ecf99d..928fb76e2 100644 --- a/src/Dodge/Data/SoundOrigin.hs +++ b/src/Dodge/Data/SoundOrigin.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Spark.hs b/src/Dodge/Data/Spark.hs index 87763b774..962d24bbc 100644 --- a/src/Dodge/Data/Spark.hs +++ b/src/Dodge/Data/Spark.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Terminal.hs b/src/Dodge/Data/Terminal.hs index 576fadc3d..a07aee4bb 100644 --- a/src/Dodge/Data/Terminal.hs +++ b/src/Dodge/Data/Terminal.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/TeslaArc.hs b/src/Dodge/Data/TeslaArc.hs index 3dab6d780..b94c75c35 100644 --- a/src/Dodge/Data/TeslaArc.hs +++ b/src/Dodge/Data/TeslaArc.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/TractorBeam.hs b/src/Dodge/Data/TractorBeam.hs index 6daf32314..2cba72440 100644 --- a/src/Dodge/Data/TractorBeam.hs +++ b/src/Dodge/Data/TractorBeam.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Universe.hs b/src/Dodge/Data/Universe.hs index 86c737e6a..3fc7d1131 100644 --- a/src/Dodge/Data/Universe.hs +++ b/src/Dodge/Data/Universe.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Wall.hs b/src/Dodge/Data/Wall.hs index 265a9720b..6b05062c9 100644 --- a/src/Dodge/Data/Wall.hs +++ b/src/Dodge/Data/Wall.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/Wall/Structure.hs b/src/Dodge/Data/Wall/Structure.hs index 56de8e4eb..873c94f1a 100644 --- a/src/Dodge/Data/Wall/Structure.hs +++ b/src/Dodge/Data/Wall/Structure.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Data/World.hs b/src/Dodge/Data/World.hs index 63454812e..dc6a44654 100644 --- a/src/Dodge/Data/World.hs +++ b/src/Dodge/Data/World.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} @@ -51,6 +51,7 @@ data World = World , _wlZoning :: IntMap (IntMap IntSet) -- Zoning IM.IntMap Wall , _pnZoning :: IntMap (IntMap [(Int, Point2)]) --Zoning IM.IntMap Creature , _peZoning :: IntMap (IntMap (Set PathEdgeNodes)) + , _incNodeZoning :: IntMap (IntMap [(Int, Point2)]) --Zoning IM.IntMap Creature , _gsZoning :: IntMap (IntMap IntSet) , _wCam :: Camera , _unpauseClock :: Int diff --git a/src/Dodge/Data/WorldEffect.hs b/src/Dodge/Data/WorldEffect.hs index 0e5ff0484..df81a267a 100644 --- a/src/Dodge/Data/WorldEffect.hs +++ b/src/Dodge/Data/WorldEffect.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Default/World.hs b/src/Dodge/Default/World.hs index 0a2e853bd..381b6aae3 100644 --- a/src/Dodge/Default/World.hs +++ b/src/Dodge/Default/World.hs @@ -49,6 +49,7 @@ defaultWorld = , _wlZoning = mempty , _pnZoning = mempty , _peZoning = mempty + , _incNodeZoning = mempty , _gsZoning = mempty --Zoning IM.empty clZoneSize (zonePos _guPos) , _unpauseClock = 0 , _coordinates = mempty @@ -90,6 +91,8 @@ defaultCWorld = , _numberFloorVerxs = 0 , _chasms = mempty , _numberChasmVerxs = 0 + , _incGraph = mempty + , _incNode = mempty } defaultLWorld :: LWorld diff --git a/src/Dodge/GameRoom.hs b/src/Dodge/GameRoom.hs index 5f7d5276e..3093680b8 100644 --- a/src/Dodge/GameRoom.hs +++ b/src/Dodge/GameRoom.hs @@ -1,5 +1,5 @@ --{-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Dodge/Graph.hs b/src/Dodge/Graph.hs index 161457898..bd44d45bd 100644 --- a/src/Dodge/Graph.hs +++ b/src/Dodge/Graph.hs @@ -41,3 +41,5 @@ graphToIncidence :: forall a b . F.Gr a b -> [(a,Int)] graphToIncidence g = map f $ F.labNodes g where f (n,p) = (p,length $ F.neighbors g n) + + diff --git a/src/Dodge/Layout.hs b/src/Dodge/Layout.hs index 296a5da70..6b5a94438 100644 --- a/src/Dodge/Layout.hs +++ b/src/Dodge/Layout.hs @@ -5,6 +5,7 @@ module Dodge.Layout ( shuffleRoomPos, ) where +import qualified Data.Vector.Unboxed as UV import Dodge.Path.Translate import qualified Control.Foldl as L import Control.Lens @@ -45,10 +46,14 @@ generateLevelFromRoomList gr' w = $ w & cWorld . lWorld . walls .~ wallsFromRooms rs & cWorld . cwGen . cwgGameRooms .~ gameRoomsFromRooms (IM.elems rs') & cWorld . pathGraph .~ path + & cWorld . incNode .~ inodes + & cWorld . incGraph .~ igraph & pnZoning .~ foldl' (flip zonePn) mempty (labNodes path) & peZoning .~ foldl' (flip zonePe) mempty (map fromEdgeTuple $ labEdges path) + & incNodeZoning .~ UV.ifoldl' (\m i p -> zonePn (i,p) m) mempty inodes where (_, path) = pairsToGraph . snapToGrid $ foldMap _rmPath rs + (inodes,igraph) = pairsToIncGraph . snapToGrid $ foldMap _rmPath rs rs = map doRoomShift $ IM.elems rs' rs' = mapM shuffleRoomPos gr' & evalState $ _randGen w diff --git a/src/Dodge/Path.hs b/src/Dodge/Path.hs index cd21c7dd7..6ca245179 100644 --- a/src/Dodge/Path.hs +++ b/src/Dodge/Path.hs @@ -5,30 +5,33 @@ module Dodge.Path ( makePathBetweenPs, -- , removePathsCrossing obstructPathsCrossing, - obstructPathsCrossing', pairsToGraph, getNodePos, walkableNodeNear, bfsNodePoints, snapToGrid, + pairsToIncGraph, ) where -import Linear -import Data.List (sortOn) -import Data.Set (Set) -import qualified Data.Set as Set +import qualified Data.Vector as V +import qualified Data.Vector.Unboxed as UV import Control.Lens +import Data.Bifunctor import Data.Foldable import Data.Graph.Inductive hiding ((&)) +import Data.List (sortOn) import Data.Map.Strict (Map) import qualified Data.Map.Strict as M import Data.Maybe +import Data.Set (Set) +import qualified Data.Set as Set import Dodge.Base.Collide import Dodge.Data.World import Dodge.Zoning.Base import Dodge.Zoning.Pathing import Geometry -import Data.Bifunctor +import Linear +import qualified IntMapHelp as IM getNodePos :: Int -> World -> Maybe Point2 getNodePos i w = (w ^. cWorld . pathGraph) `lab` i @@ -37,31 +40,31 @@ makePathUsing :: (PathEdge -> Bool) -> Point2 -> Point2 -> World -> Maybe [Int] makePathUsing t s e w = do na <- walkableNodeNear w s nb <- walkableNodeNear w e - sp na nb . second _peDist - . efilter (t . (^. _3)) $ w ^. cWorld . pathGraph + sp na nb . second _peDist . efilter (^. _3 . to t) $ w ^. cWorld . pathGraph makePathBetween :: Point2 -> Point2 -> World -> Maybe [Int] makePathBetween = makePathUsing $ not . pathEdgeObstructed pathEdgeObstructed :: PathEdge -> Bool -pathEdgeObstructed pe = DoorObstacle `Set.member` obs || BlockObstacle `Set.member` obs - || ChasmObstacle `Set.member` obs - where - obs = _peObstacles pe +pathEdgeObstructed pe = + any + (`Set.member` _peObstacles pe) + [DoorObstacle, BlockObstacle, ChasmObstacle] walkableNodeNear :: World -> Point2 -> Maybe Int {-# INLINE walkableNodeNear #-} walkableNodeNear w p = fmap fst . find (flip (isWalkable p) w . snd) $ nodesNear where - --nodesNear = zonesExtract (w ^. pnZoning) $ zonesAroundPoint pnZoneSize p nodesNear = zonesExtract (w ^. pnZoning) . snailAround $ zoneOfPoint pnZoneSize p snailAround :: Int2 -> [Int2] -snailAround x = (x+) <$> smallSnailInt2 +snailAround x = (x +) <$> smallSnailInt2 smallSnailInt2 :: [Int2] -smallSnailInt2 = sortOn (distance (V2 0 (0::Float)) . fmap fromIntegral) - [V2 x y | x <-[-2..2], y <-[-2..2]] +smallSnailInt2 = + sortOn + (distance (V2 0 (0 :: Float)) . fmap fromIntegral) + [V2 x y | x <- [-2 .. 2], y <- [-2 .. 2]] makePathBetweenPs :: Point2 -> Point2 -> World -> Maybe [Point2] makePathBetweenPs a b w = mapMaybe (lab $ w ^. cWorld . pathGraph) <$> makePathBetween a b w @@ -72,8 +75,11 @@ bfsNodePoints n w = mapMaybe (lab g) $ bfs n g g = w ^. cWorld . pathGraph pointTowardsImpulse :: Point2 -> Point2 -> World -> Maybe Point2 -pointTowardsImpulse a b w = (find (flip (isWalkable a) w) . reverse) =<< - (makePathBetweenPs a b w <&> (<>[b])) +pointTowardsImpulse a b w = +-- (find (flip (isWalkable a) w) . reverse) +-- =<< (makePathBetweenPs a b w <&> (<> [b])) + (find (flip (isWalkable a) w) . reverse) + =<< makePathBetweenPs a b w -- <&> (<> [b])) ------ continues a walk from a list of points, without repetitions ------ supposes that the list is non-empty @@ -119,7 +125,21 @@ pointTowardsImpulse a b w = (find (flip (isWalkable a) w) . reverse) =<< -- _ -> return $ Just $ ns !! i -- -pairsToGraph :: Set.Set (Point2, Point2) -> (Map (V2 Point2) PathEdgeNodes, Gr Point2 PathEdge) +pairsToIncGraph :: Set.Set (Point2,Point2) + -> (UV.Vector Point2, V.Vector [(Int,SimpleEdge)]) +pairsToIncGraph pairs = (inodes,incgraph) + where + incgraph = V.generate (length im) (\i -> im ^?! ix i) + im = IM.fromListWith (<>) . fmap toedge $ Set.toList pairs + toedge (x,y) = (pstons ^?! ix x . _head + , [(pstons ^?! ix y . _head, SimpleEdge (distance x y) mempty)]) + pstons = IM.invertIntMap . IM.fromList $ zip [0..] ps + inodes = UV.generate (length ps) (ps !!) + ps = Set.toList $ Set.map fst pairs <> Set.map snd pairs + +pairsToGraph :: + Set.Set (Point2, Point2) -> + (Map (V2 Point2) PathEdgeNodes, Gr Point2 PathEdge) pairsToGraph pairs = addEdges nodemap gr pairs where (nodemap, _, gr) = addNodes $ Set.toList $ Set.map fst pairs <> Set.map snd pairs @@ -147,31 +167,25 @@ addEdges nodemap gr = foldl' f (mempty, gr) theedgedata = PathEdgeNodes (g a) (g b) (PathEdge a b (dist a b) mempty) g a = nodemap M.! a -obstructPathsCrossing :: EdgeObstacle -> Point2 -> Point2 -> World - -> (World, Set PathEdgeNodes) +obstructPathsCrossing :: + EdgeObstacle -> + Point2 -> + Point2 -> + World -> + (World, Set PathEdgeNodes) obstructPathsCrossing obstacletype sp' ep w = ( w & cWorld . pathGraph %~ updateedges , es ) where es = Set.filter edgecrosses $ pesNearSeg sp' ep w - edgecrosses (PathEdgeNodes _ _ pe) = isJust $ intersectSegSeg sp' ep (_peStart pe) (_peEnd pe) + edgecrosses (PathEdgeNodes _ _ pe) = + isJust $ intersectSegSeg sp' ep (_peStart pe) (_peEnd pe) updateedges gr = foldl' updateedge gr es updateedge gr (PathEdgeNodes x y pe) = insEdge (x, y, pe & peObstacles . at obstacletype ?~ ()) $ delEdge (x, y) gr -obstructPathsCrossing' :: EdgeObstacle -> Point2 -> Point2 -> World - -> World -obstructPathsCrossing' obstacletype sp' ep w = - w & cWorld . pathGraph %~ updateedges - where - es = Set.filter edgecrosses $ pesNearSeg sp' ep w - edgecrosses (PathEdgeNodes _ _ pe) = isJust $ intersectSegSeg sp' ep (_peStart pe) (_peEnd pe) - updateedges gr = foldl' updateedge gr es - updateedge gr (PathEdgeNodes x y pe) = - insEdge (x, y, pe & peObstacles . at obstacletype ?~ ()) $ delEdge (x, y) gr - -snapToGrid :: Set (Point2,Point2) -> Set (Point2, Point2) +snapToGrid :: Set (Point2, Point2) -> Set (Point2, Point2) snapToGrid = Set.map (over each (fmap (fromIntegral . f))) where f :: Float -> Int diff --git a/src/Dodge/Zoning/Pathing.hs b/src/Dodge/Zoning/Pathing.hs index c7b79d179..af4ed13a0 100644 --- a/src/Dodge/Zoning/Pathing.hs +++ b/src/Dodge/Zoning/Pathing.hs @@ -1,13 +1,13 @@ module Dodge.Zoning.Pathing where import Data.Foldable -import Dodge.Data.World -import Dodge.Zoning.Base -import Geometry -import qualified IntMapHelp as IM import Data.Set (Set) import qualified Data.Set as Set +import Dodge.Data.World +import Dodge.Zoning.Base import Dodge.Zoning.Common +import Geometry +import qualified IntMapHelp as IM pnsNearPoint :: Point2 -> World -> [(Int, Point2)] pnsNearPoint = nearPoint pnZoneSize _pnZoning @@ -32,6 +32,7 @@ zonePn pn = zoneMonoid (zoneOfPn pn) [pn] pesNearPoint :: Point2 -> World -> Set PathEdgeNodes pesNearPoint = nearPoint peZoneSize _peZoning + --pesNearPoint p w = zoneExtract (zoneOfPoint peZoneSize p) (w ^. cWorld . lWorld . peZoning) pesNearSeg :: Point2 -> Point2 -> World -> Set PathEdgeNodes @@ -49,7 +50,10 @@ peZoneSize = 50 zoneOfPe :: PathEdgeNodes -> [Int2] zoneOfPe (PathEdgeNodes _ _ pe) = zoneOfSeg peZoneSize (_peStart pe) (_peEnd pe) -zonePe :: PathEdgeNodes -> IM.IntMap (IM.IntMap (Set PathEdgeNodes)) -> IM.IntMap (IM.IntMap (Set PathEdgeNodes)) +zonePe :: + PathEdgeNodes -> + IM.IntMap (IM.IntMap (Set PathEdgeNodes)) -> + IM.IntMap (IM.IntMap (Set PathEdgeNodes)) zonePe pe im = foldl' f im (zoneOfPe pe) where f im' i2 = zoneMonoid i2 (Set.singleton pe) im' diff --git a/src/Geometry/ConvexPoly.hs b/src/Geometry/ConvexPoly.hs index bcfe16ca5..fbbb7dd32 100644 --- a/src/Geometry/ConvexPoly.hs +++ b/src/Geometry/ConvexPoly.hs @@ -1,5 +1,5 @@ {-# LANGUAGE BangPatterns #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/MaybeHelp.hs b/src/MaybeHelp.hs index 4fac0dbf5..d704c3bd9 100644 --- a/src/MaybeHelp.hs +++ b/src/MaybeHelp.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StrictData #-} diff --git a/src/NewInt.hs b/src/NewInt.hs index 004139bca..04853b80b 100644 --- a/src/NewInt.hs +++ b/src/NewInt.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} diff --git a/src/Picture/Data.hs b/src/Picture/Data.hs index 10c718f64..80caf90d6 100644 --- a/src/Picture/Data.hs +++ b/src/Picture/Data.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/src/Shape/Data.hs b/src/Shape/Data.hs index 6790a1b1b..dca1bc403 100644 --- a/src/Shape/Data.hs +++ b/src/Shape/Data.hs @@ -1,4 +1,4 @@ -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingStrategies #-} {-# LANGUAGE GeneralisedNewtypeDeriving #-} diff --git a/src/Sound/Data.hs b/src/Sound/Data.hs index 83100d98e..0fbc55d1f 100644 --- a/src/Sound/Data.hs +++ b/src/Sound/Data.hs @@ -1,5 +1,5 @@ {-# LANGUAGE DeriveGeneric #-} -{-# LANGUAGE DeriveAnyClass #-} +--{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} diff --git a/tags b/tags index 4db380408..3476ae0ba 100644 --- a/tags +++ b/tags @@ -12,8 +12,8 @@ .++~ src/LensHelp.hs 33;" o .+.+~ src/LensHelp.hs 23;" o .:~ src/LensHelp.hs 14;" o -<$> src/Dodge/Data/ActionPlan.hs 181;" o -<$> src/Dodge/Data/CWorld.hs 47;" o +<$> src/Dodge/Data/ActionPlan.hs 158;" o +<$> src/Dodge/Data/CWorld.hs 51;" o <$> src/Dodge/Data/Camera.hs 39;" o <$> src/Dodge/Data/Creature.hs 90;" o <$> src/Dodge/Data/LWorld.hs 177;" o @@ -37,17 +37,17 @@ AUTORIFLE src/Dodge/Data/Item/Combine.hs 155;" C AZURE src/Color/Data.hs 23;" C AccessTerminal src/Dodge/Data/WorldEffect.hs 27;" C Action src/Dodge/Data/ActionPlan.hs 67;" t -ActionNothing src/Dodge/Data/ActionPlan.hs 72;" C ActionPlan src/Dodge/Data/ActionPlan.hs 16;" t +ActionUpdate src/Dodge/Creature/Action.hs 48;" t AddGoal src/Dodge/Data/ActionPlan.hs 46;" C -AimAt src/Dodge/Data/ActionPlan.hs 73;" C +AimAt src/Dodge/Data/ActionPlan.hs 68;" C AimStance src/Dodge/Data/AimStance.hs 11;" t Aiming src/Dodge/Data/Creature/Stance.hs 36;" C AirFiltrationSS src/Dodge/Data/Scenario.hs 95;" C AlienContact src/Dodge/Data/Scenario.hs 30;" C AllRoomClipBoundaries src/Dodge/Data/Config.hs 108;" C AlteRifleSwitch src/Dodge/Data/Item/Params.hs 20;" C -Ambush src/Dodge/Data/ActionPlan.hs 155;" C +Ambush src/Dodge/Data/ActionPlan.hs 132;" C AmmoEffectSF src/Dodge/Data/ComposedItem.hs 33;" C AmmoExtractPosition src/Dodge/Data/Muzzle.hs 21;" t AmmoMagSF src/Dodge/Data/ComposedItem.hs 24;" C @@ -58,7 +58,7 @@ AmmoPayloadSF src/Dodge/Data/ComposedItem.hs 32;" C AmmoPerShot src/Dodge/Data/Muzzle.hs 61;" t AmmoTargetingSF src/Dodge/Data/ComposedItem.hs 31;" C AmmoType src/Dodge/Data/AmmoType.hs 5;" t -ArbitraryAction src/Dodge/Data/ActionPlan.hs 144;" C +ArbitraryAction src/Dodge/Data/ActionPlan.hs 121;" C ArcNodeType src/Dodge/Data/LWorld.hs 157;" t ArcShad src/Picture/Data.hs 38;" C ArcStep src/Dodge/Data/ArcStep.hs 14;" t @@ -75,7 +75,7 @@ AttentiveTo src/Dodge/Data/Creature/Perception.hs 61;" C Audition src/Dodge/Data/Creature/Perception.hs 47;" t AutoAI src/Dodge/Data/Creature/Misc.hs 47;" C AutoCrit src/Dodge/Data/Creature/Misc.hs 72;" C -AutoDoorObstacle src/Dodge/Data/PathGraph.hs 51;" C +AutoDoorObstacle src/Dodge/Data/PathGraph.hs 57;" C AutoTrigger src/Dodge/Data/TriggerType.hs 8;" C Avatar src/Dodge/Data/Creature/Misc.hs 61;" C AvatarDead src/Dodge/Data/Creature/Misc.hs 69;" C @@ -138,7 +138,7 @@ BlockDrawBlSh src/Dodge/Data/Block.hs 40;" C BlockDrawColHeightPoss src/Dodge/Data/Block.hs 42;" C BlockDrawMempty src/Dodge/Data/Block.hs 39;" C BlockDraws src/Dodge/Data/Block.hs 41;" C -BlockObstacle src/Dodge/Data/PathGraph.hs 49;" C +BlockObstacle src/Dodge/Data/PathGraph.hs 55;" C BlockPart src/Dodge/Data/Wall/Structure.hs 16;" C BlockedLink src/Dodge/Data/Room.hs 50;" C BloomLayer src/Picture/Data.hs 25;" C @@ -186,8 +186,8 @@ COPIER src/Dodge/Data/Item/Combine.hs 29;" C CRAFT src/Dodge/Data/Item/Combine.hs 19;" C CREATUREDETECTOR src/Dodge/Data/Item/Combine.hs 184;" C CREATURESENSOR src/Dodge/Data/Item/Combine.hs 85;" C -CWGen src/Dodge/Data/CWorld.hs 34;" t -CWorld src/Dodge/Data/CWorld.hs 23;" t +CWGen src/Dodge/Data/CWorld.hs 38;" t +CWorld src/Dodge/Data/CWorld.hs 25;" t CYAN src/Color/Data.hs 19;" C CamControl src/Dodge/Data/Camera.hs 18;" t CamFloat src/Dodge/Data/Camera.hs 20;" C @@ -212,13 +212,13 @@ ChangeStrategy src/Dodge/Data/ActionPlan.hs 45;" C ChaseAI src/Dodge/Data/Creature/Misc.hs 40;" C ChaseCrit src/Dodge/Data/Creature/Misc.hs 70;" C ChaseCritters src/Dodge/Data/Creature/State.hs 18;" C -ChasmObstacle src/Dodge/Data/PathGraph.hs 53;" C +ChasmObstacle src/Dodge/Data/PathGraph.hs 59;" C ChemFuel src/Dodge/Data/Item/Use/Consumption/Ammo.hs 14;" C ChooseMovementLtAuto src/Dodge/Data/CreatureEffect.hs 31;" C ChooseMovementSpreadGun src/Dodge/Data/CreatureEffect.hs 30;" C Circ_collision_test src/Dodge/Data/Config.hs 85;" C Climate src/Dodge/Data/Scenario.hs 32;" C -CloseToMelee src/Dodge/Data/ActionPlan.hs 164;" C +CloseToMelee src/Dodge/Data/ActionPlan.hs 141;" C Close_shape_culling src/Dodge/Data/Config.hs 79;" C Cloud src/Dodge/Data/Cloud.hs 14;" t CloudType src/Dodge/Data/Cloud.hs 22;" t @@ -337,25 +337,25 @@ DisplayTerminal src/Dodge/Data/HUD.hs 29;" C Display_debug src/Dodge/Data/Config.hs 68;" C Distortion src/Dodge/Data/Distortion.hs 12;" t DivineRetribution src/Dodge/Data/Scenario.hs 35;" C -DoActionIf src/Dodge/Data/ActionPlan.hs 103;" C -DoActionIfElse src/Dodge/Data/ActionPlan.hs 107;" C -DoActionThen src/Dodge/Data/ActionPlan.hs 120;" C -DoActionWhile src/Dodge/Data/ActionPlan.hs 94;" C -DoActionWhileInterrupt src/Dodge/Data/ActionPlan.hs 112;" C -DoActionWhilePartial src/Dodge/Data/ActionPlan.hs 98;" C -DoActions src/Dodge/Data/ActionPlan.hs 117;" C -DoImpulses src/Dodge/Data/ActionPlan.hs 87;" C -DoImpulsesAlongside src/Dodge/Data/ActionPlan.hs 146;" C +DoActionIf src/Dodge/Data/ActionPlan.hs 89;" C +DoActionIfElse src/Dodge/Data/ActionPlan.hs 93;" C +DoActionThen src/Dodge/Data/ActionPlan.hs 104;" C +DoActionWhile src/Dodge/Data/ActionPlan.hs 80;" C +DoActionWhileInterrupt src/Dodge/Data/ActionPlan.hs 98;" C +DoActionWhilePartial src/Dodge/Data/ActionPlan.hs 84;" C +DoActions src/Dodge/Data/ActionPlan.hs 103;" C +DoImpulses src/Dodge/Data/ActionPlan.hs 75;" C +DoImpulsesAlongside src/Dodge/Data/ActionPlan.hs 123;" C DoNotMoveEquipment src/Dodge/Data/RightButtonOptions.hs 20;" C -DoReplicate src/Dodge/Data/ActionPlan.hs 127;" C -DoReplicatePartial src/Dodge/Data/ActionPlan.hs 131;" C +DoReplicate src/Dodge/Data/ActionPlan.hs 108;" C +DoReplicatePartial src/Dodge/Data/ActionPlan.hs 112;" C DockingBaySS src/Dodge/Data/Scenario.hs 92;" C Door src/Dodge/Data/Door.hs 34;" t DoorClosed src/Dodge/Data/Door.hs 23;" C DoorHalfway src/Dodge/Data/Door.hs 23;" C DoorInt src/Dodge/Data/Door.hs 23;" C DoorMechanism src/Dodge/Data/WorldEffect.hs 71;" C -DoorObstacle src/Dodge/Data/PathGraph.hs 50;" C +DoorObstacle src/Dodge/Data/PathGraph.hs 56;" C DoorOpen src/Dodge/Data/Door.hs 23;" C DoorPart src/Dodge/Data/Wall/Structure.hs 14;" C DoorStatus src/Dodge/Data/Door.hs 23;" t @@ -381,7 +381,7 @@ EXPLOSIVES src/Dodge/Data/Item/Combine.hs 117;" C Ears src/Dodge/Data/Creature/Perception.hs 47;" C East src/Dodge/Data/CardinalPoint.hs 7;" C East8 src/Dodge/Data/CardinalPoint.hs 22;" C -EdgeObstacle src/Dodge/Data/PathGraph.hs 48;" t +EdgeObstacle src/Dodge/Data/PathGraph.hs 54;" t EighthRes src/Dodge/Data/Config.hs 98;" C Eldritch src/Dodge/Data/Scenario.hs 34;" C ElectricSensor src/Dodge/Data/Machine/Sensor.hs 16;" C @@ -441,7 +441,7 @@ FlameSound src/Dodge/Data/SoundOrigin.hs 29;" C FlameletBall src/Dodge/Data/EnergyBall/Type.hs 14;" C Flamer src/Dodge/Data/SoundOrigin.hs 27;" C Flaming src/Dodge/Data/Damage.hs 25;" C -Flank src/Dodge/Data/ActionPlan.hs 154;" C +Flank src/Dodge/Data/ActionPlan.hs 131;" C FlareType src/Dodge/Data/Muzzle.hs 28;" t FlashBall src/Dodge/Data/EnergyBall/Type.hs 17;" C Flashing src/Dodge/Data/Damage.hs 27;" C @@ -449,7 +449,7 @@ FlatFaces src/Shape/Data.hs 17;" C FlatShieldParams src/Dodge/Data/Item/Params.hs 16;" C FlechetteTrajectory src/Dodge/Data/Bullet.hs 45;" C FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 52;" C -Flee src/Dodge/Data/ActionPlan.hs 168;" C +Flee src/Dodge/Data/ActionPlan.hs 145;" C Flesh src/Dodge/Data/Material.hs 11;" C FloatAbsCheckGreaterLess src/Dodge/Data/FloatFunction.hs 16;" C FloatConst src/Dodge/Data/FloatFunction.hs 17;" C @@ -463,7 +463,7 @@ FlockArmourChaseAI src/Dodge/Data/Creature/Misc.hs 48;" C Floor src/Data/Tile.hs 11;" t FloorItem src/Dodge/Data/FloorItem.hs 15;" t Flying src/Dodge/Data/Creature/Stance.hs 28;" C -FollowImpulses src/Dodge/Data/ActionPlan.hs 159;" C +FollowImpulses src/Dodge/Data/ActionPlan.hs 136;" C FootForward src/Dodge/Data/Creature/Stance.hs 32;" t FootstepSound src/Dodge/Data/SoundOrigin.hs 31;" C ForceFieldType src/Dodge/Data/Item/Use/Consumption/Ammo.hs 11;" t @@ -498,12 +498,12 @@ GenParams src/Dodge/Data/GenParams.hs 15;" t GenWorld src/Dodge/Data/GenWorld.hs 24;" t GenericFaction src/Dodge/Data/Creature/State.hs 15;" C GeoObjShads src/Dodge/Data/Config.hs 102;" C -GetTo src/Dodge/Data/ActionPlan.hs 166;" C +GetTo src/Dodge/Data/ActionPlan.hs 143;" C GetToPoint src/Dodge/Data/Scenario.hs 12;" C Gib src/Dodge/Data/Prop.hs 43;" C Glass src/Dodge/Data/Material.hs 11;" C GlassBreakSound src/Dodge/Data/SoundOrigin.hs 35;" C -Goal src/Dodge/Data/ActionPlan.hs 174;" t +Goal src/Dodge/Data/ActionPlan.hs 151;" t GoesOnBack src/Dodge/Data/Equipment/Misc.hs 14;" C GoesOnChest src/Dodge/Data/Equipment/Misc.hs 13;" C GoesOnHead src/Dodge/Data/Equipment/Misc.hs 12;" C @@ -570,7 +570,7 @@ Important src/Shape/Data.hs 35;" C Impulse src/Dodge/Data/ActionPlan.hs 27;" t ImpulseNothing src/Dodge/Data/ActionPlan.hs 48;" C ImpulseUseTarget src/Dodge/Data/ActionPlan.hs 47;" C -ImpulsesList src/Dodge/Data/ActionPlan.hs 84;" C +ImpulsesList src/Dodge/Data/ActionPlan.hs 74;" C InDivineZone src/Dodge/Data/Scenario.hs 22;" C InDream src/Dodge/Data/Scenario.hs 19;" C InInv src/Dodge/Data/Item/Location.hs 27;" C @@ -598,7 +598,7 @@ InventoryChange src/Dodge/Data/World.hs 32;" C InventoryConnectSound src/Dodge/Data/SoundOrigin.hs 14;" C InventoryPathing src/Dodge/Data/Item/Combine.hs 39;" t InventorySound src/Dodge/Data/SoundOrigin.hs 13;" C -Investigate src/Dodge/Data/ActionPlan.hs 161;" C +Investigate src/Dodge/Data/ActionPlan.hs 138;" C Invisible src/Dodge/Data/CamouflageStatus.hs 7;" C InwardShockwave src/Dodge/Data/Shockwave.hs 14;" C IsolationUnitSS src/Dodge/Data/Scenario.hs 101;" C @@ -629,7 +629,7 @@ JoystickSF src/Dodge/Data/ComposedItem.hs 26;" C Just' src/MaybeHelp.hs 13;" C JustStartedPlaying src/Sound/Data.hs 24;" C KEYCARD src/Dodge/Data/Item/Combine.hs 177;" C -Kill src/Dodge/Data/ActionPlan.hs 176;" C +Kill src/Dodge/Data/ActionPlan.hs 153;" C LASER src/Dodge/Data/Item/Combine.hs 36;" C LDT src/Dodge/Data/DoubleTree.hs 34;" C LDTBottomNode src/Dodge/Data/DoubleTree.hs 29;" C @@ -646,7 +646,6 @@ LSParam src/Dodge/Data/LightSource.hs 16;" t LWorld src/Dodge/Data/LWorld.hs 95;" t LabLink src/Dodge/Data/Room.hs 46;" C LabSS src/Dodge/Data/Scenario.hs 97;" C -LabelAction src/Dodge/Data/ActionPlan.hs 68;" C LabelCluster src/Dodge/Data/RoomCluster.hs 13;" C LabelDoubleTreeNodeType src/Dodge/Data/DoubleTree.hs 24;" t Laboratory src/Dodge/Data/Scenario.hs 61;" C @@ -666,7 +665,7 @@ LaundrySS src/Dodge/Data/Scenario.hs 115;" C LayVars src/Dodge/Data/MetaTree.hs 29;" C Layer src/Picture/Data.hs 22;" t LayoutVars src/Dodge/Data/MetaTree.hs 29;" t -LeadTarget src/Dodge/Data/ActionPlan.hs 136;" C +LeadTarget src/Dodge/Data/ActionPlan.hs 117;" C LeftForward src/Dodge/Data/Creature/Stance.hs 32;" C LeftwardDT src/Dodge/Data/DoubleTree.hs 86;" C LeftwardLDT src/Dodge/Data/DoubleTree.hs 44;" C @@ -681,7 +680,7 @@ LimitedFood src/Dodge/Data/Scenario.hs 39;" C LimitedWater src/Dodge/Data/Scenario.hs 40;" C LinearShockwave src/Dodge/Data/LinearShockwave.hs 13;" t ListDisplayParams src/Dodge/Data/SelectionList.hs 13;" t -LiveLongAndProsper src/Dodge/Data/ActionPlan.hs 175;" C +LiveLongAndProsper src/Dodge/Data/ActionPlan.hs 152;" C LivingComplex src/Dodge/Data/Scenario.hs 68;" C LoadingBaySS src/Dodge/Data/Scenario.hs 93;" C LoadingScreen src/Dodge/Data/Universe.hs 73;" C @@ -691,9 +690,9 @@ LocationDT src/Dodge/Data/DoubleTree.hs 101;" t LocationLDT src/Dodge/Data/DoubleTree.hs 61;" t LoneWolf src/Dodge/Data/Creature/State.hs 26;" C LongAI src/Dodge/Data/Creature/Misc.hs 50;" C -LookAround src/Dodge/Data/ActionPlan.hs 163;" C +LookAround src/Dodge/Data/ActionPlan.hs 140;" C LtAutoAI src/Dodge/Data/Creature/Misc.hs 44;" C -Lure src/Dodge/Data/ActionPlan.hs 156;" C +Lure src/Dodge/Data/ActionPlan.hs 133;" C MACHINEPISTOL src/Dodge/Data/Item/Combine.hs 145;" C MAGENTA src/Color/Data.hs 20;" C MAGNET src/Dodge/Data/Item/Combine.hs 68;" C @@ -754,7 +753,7 @@ MdWdWd src/Dodge/Data/WorldEffect.hs 45;" t MedBaySS src/Dodge/Data/Scenario.hs 100;" C Medium src/Shape/Data.hs 30;" C Melee src/Dodge/Data/ActionPlan.hs 42;" C -MeleeStrike src/Dodge/Data/ActionPlan.hs 169;" C +MeleeStrike src/Dodge/Data/ActionPlan.hs 146;" C Memory src/Dodge/Data/Creature/Memory.hs 13;" t MenuOption src/Dodge/Data/Universe.hs 99;" t MenuOptionDisplay src/Dodge/Data/Universe.hs 94;" t @@ -826,7 +825,7 @@ NewInt src/NewInt.hs 17;" t NewIntMap src/NewInt.hs 23;" t NewIntSet src/NewInt.hs 20;" t NewSideEffect src/Dodge/Data/Universe.hs 65;" C -NoAction src/Dodge/Data/ActionPlan.hs 139;" C +NoAction src/Dodge/Data/ActionPlan.hs 118;" C NoAmmoRequired src/Dodge/Data/Muzzle.hs 25;" C NoBeamCombine src/Dodge/Data/Beam.hs 43;" C NoConcurrentEffect src/Loop/Data.hs 7;" C @@ -932,7 +931,6 @@ Opaque src/Dodge/Data/Wall.hs 44;" C OpticScope src/Dodge/Data/Item/Scope.hs 14;" C OptionScreen src/Dodge/Data/Universe.hs 82;" C OptionScreenFlag src/Dodge/Data/Universe.hs 72;" t -OutAction src/Dodge/Creature/Action.hs 46;" t OutLink src/Dodge/Data/Room.hs 44;" C OutsideTerminal src/Dodge/Data/Input.hs 30;" C OutwardShockwave src/Dodge/Data/Shockwave.hs 14;" C @@ -972,9 +970,9 @@ PathEdge src/Dodge/Data/PathGraph.hs 40;" t PathEdgeNodes src/Dodge/Data/PathGraph.hs 33;" t PathFromEdge src/Dodge/Data/Room.hs 77;" t PathShowType src/Dodge/Data/Universe.hs 54;" t -PathTo src/Dodge/Data/ActionPlan.hs 77;" C +PathTo src/Dodge/Data/ActionPlan.hs 72;" C Pathing src/Dodge/Data/Config.hs 76;" C -Patrol src/Dodge/Data/ActionPlan.hs 157;" C +Patrol src/Dodge/Data/ActionPlan.hs 134;" C PausedTimeFlow src/Dodge/Data/World.hs 79;" C Payload src/Dodge/Data/Payload.hs 11;" t PenetrateBullet src/Dodge/Data/Bullet.hs 31;" C @@ -1105,7 +1103,7 @@ RectRoomType src/Dodge/Data/Room.hs 33;" C ReducedRocketSmoke src/Dodge/Data/Projectile.hs 55;" C ReigonalGovernment src/Dodge/Data/Scenario.hs 50;" C Religion src/Dodge/Data/Scenario.hs 47;" C -Reload src/Dodge/Data/ActionPlan.hs 167;" C +Reload src/Dodge/Data/ActionPlan.hs 144;" C RemoteDetonatorSF src/Dodge/Data/ComposedItem.hs 27;" C RemoteScreenSF src/Dodge/Data/ComposedItem.hs 25;" C RemoveEquipment src/Dodge/Data/RightButtonOptions.hs 35;" C @@ -1168,7 +1166,7 @@ SaveSlotNum src/Dodge/Data/SaveSlot.hs 12;" C Scope src/Dodge/Data/Item/Scope.hs 13;" t ScreenLayer src/Dodge/Data/Universe.hs 81;" t ScreenPos src/Dodge/Data/ScreenPos.hs 12;" t -Search src/Dodge/Data/ActionPlan.hs 170;" C +Search src/Dodge/Data/ActionPlan.hs 147;" C SecretCabal src/Dodge/Data/Scenario.hs 44;" C SectionCursor src/Dodge/Data/SelectionList.hs 23;" t SeeAbove src/Dodge/Data/Wall.hs 42;" C @@ -1187,7 +1185,7 @@ SelfTree src/Dodge/Data/MetaTree.hs 20;" t SemiAutoTrigger src/Dodge/Data/TriggerType.hs 9;" C SensorType src/Dodge/Data/Machine/Sensor.hs 14;" t SensorWithRequirement src/Dodge/Data/Machine/Sensor.hs 33;" C -SentinelAt src/Dodge/Data/ActionPlan.hs 177;" C +SentinelAt src/Dodge/Data/ActionPlan.hs 154;" C SetLSCol src/Dodge/Data/WorldEffect.hs 26;" C SetTrigger src/Dodge/Data/WorldEffect.hs 24;" C ShadNum src/Picture/Data.hs 35;" t @@ -1204,7 +1202,7 @@ ShellSound src/Dodge/Data/SoundOrigin.hs 28;" C ShieldGroup src/Dodge/Data/Creature/State.hs 32;" C Shockwave src/Dodge/Data/Shockwave.hs 17;" t ShockwaveDirection src/Dodge/Data/Shockwave.hs 14;" t -ShootAt src/Dodge/Data/ActionPlan.hs 158;" C +ShootAt src/Dodge/Data/ActionPlan.hs 135;" C ShortShow src/ShortShow.hs 6;" c ShortString src/ShortShow.hs 16;" t Show_bound_box src/Dodge/Data/Config.hs 80;" C @@ -1226,6 +1224,7 @@ ShrinkGunStatus src/Dodge/Data/Item/Params.hs 28;" t Shrunk src/Dodge/Data/Item/Params.hs 28;" C SideCluster src/Dodge/Data/RoomCluster.hs 13;" C SideEffect src/Dodge/Data/Universe.hs 64;" t +SimpleEdge src/Dodge/Data/PathGraph.hs 48;" t SixteenthRes src/Dodge/Data/Config.hs 98;" C Size src/Shape/Data.hs 28;" t SkiffBaySS src/Dodge/Data/Scenario.hs 108;" C @@ -1268,12 +1267,12 @@ StabSpinIncrease src/Dodge/Projectile/Create.hs 18;" C Stance src/Dodge/Data/Creature/Stance.hs 17;" t StandaloneWall src/Dodge/Data/Wall/Structure.hs 13;" C Standing src/Dodge/Data/Creature/Stance.hs 26;" C -StartSentinelPost src/Dodge/Data/ActionPlan.hs 140;" C +StartSentinelPost src/Dodge/Data/ActionPlan.hs 119;" C StayInArea src/Dodge/Data/Scenario.hs 13;" C Stone src/Dodge/Data/Material.hs 11;" C StorageSS src/Dodge/Data/Scenario.hs 94;" C -Strategy src/Dodge/Data/ActionPlan.hs 153;" t -StrategyActions src/Dodge/Data/ActionPlan.hs 165;" C +Strategy src/Dodge/Data/ActionPlan.hs 130;" t +StrategyActions src/Dodge/Data/ActionPlan.hs 142;" C SubInventory src/Dodge/Data/HUD.hs 16;" t Superfluous src/Shape/Data.hs 38;" C Surface src/Shape/Data.hs 41;" t @@ -1377,7 +1376,7 @@ TriggerType src/Dodge/Data/TriggerType.hs 7;" t TurbineBaySS src/Dodge/Data/Scenario.hs 110;" C Turn src/Dodge/Data/ActionPlan.hs 31;" C TurnTo src/Dodge/Data/ActionPlan.hs 37;" C -TurnToPoint src/Dodge/Data/ActionPlan.hs 78;" C +TurnToPoint src/Dodge/Data/ActionPlan.hs 73;" C TurnToward src/Dodge/Data/ActionPlan.hs 34;" C TurnTowardCr src/Dodge/Data/CreatureEffect.hs 11;" C Turret src/Dodge/Data/Machine.hs 51;" t @@ -1415,7 +1414,7 @@ UseItemWidth src/Dodge/Data/SelectionList.hs 39;" C UseMapper src/Dodge/Data/Item/Use.hs 39;" C UseNothing src/Dodge/Data/Item/Use.hs 34;" C UseScope src/Dodge/Data/Item/Use.hs 36;" C -UseSelf src/Dodge/Data/ActionPlan.hs 141;" C +UseSelf src/Dodge/Data/ActionPlan.hs 120;" C UseToggle src/Dodge/Data/Item/Use.hs 38;" C UseUpTo src/Dodge/Data/Muzzle.hs 63;" C UseValue src/Dodge/Data/Item/Use.hs 35;" C @@ -1450,12 +1449,12 @@ WHITE src/Color/Data.hs 27;" C WIRE src/Dodge/Data/Item/Combine.hs 86;" C WRISTARMOUR src/Dodge/Data/Item/Combine.hs 124;" C WRIST_ECG src/Dodge/Data/Item/Combine.hs 136;" C -WaitThen src/Dodge/Data/ActionPlan.hs 90;" C +WaitThen src/Dodge/Data/ActionPlan.hs 76;" C Walking src/Dodge/Data/Creature/Stance.hs 25;" C Wall src/Dodge/Data/Wall.hs 20;" t WallArcNode src/Dodge/Data/LWorld.hs 158;" C WallDraw src/Dodge/Data/Wall.hs 47;" t -WallObstacle src/Dodge/Data/PathGraph.hs 52;" C +WallObstacle src/Dodge/Data/PathGraph.hs 58;" C WallP src/Dodge/LevelGen/StaticWalls.hs 23;" t WallP src/Dodge/LevelGen/StaticWalls/Deprecated.hs 11;" t WallSound src/Dodge/Data/SoundOrigin.hs 26;" C @@ -1466,8 +1465,8 @@ War src/Dodge/Data/Scenario.hs 28;" C WarmTime src/Dodge/Data/Item/Params.hs 21;" C WarmUpCoolDown src/Dodge/Data/TriggerType.hs 14;" C WarmUpNoDelay src/Dodge/Data/TriggerType.hs 19;" C -WarningCry src/Dodge/Data/ActionPlan.hs 162;" C -WatchAndWait src/Dodge/Data/ActionPlan.hs 160;" C +WarningCry src/Dodge/Data/ActionPlan.hs 139;" C +WatchAndWait src/Dodge/Data/ActionPlan.hs 137;" C WdBl src/Dodge/Data/WorldEffect.hs 52;" t WdBlBtOn src/Dodge/Data/WorldEffect.hs 58;" C WdBlConst src/Dodge/Data/WorldEffect.hs 55;" C @@ -1505,8 +1504,6 @@ YELLOW src/Color/Data.hs 18;" C ZOOMSCOPE src/Dodge/Data/Item/Combine.hs 92;" C ZombieFaction src/Dodge/Data/Creature/State.hs 16;" C __Just' src/MaybeHelp.hs 13;" f -_actAction src/Dodge/Data/ActionPlan.hs 70;" f -_actLabel src/Dodge/Data/ActionPlan.hs 69;" f _aimStance src/Dodge/Data/Creature/Stance.hs 36;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 21;" f _allocNewPos src/Dodge/Data/RightButtonOptions.hs 27;" f @@ -1518,7 +1515,7 @@ _allocRemoveID src/Dodge/Data/RightButtonOptions.hs 33;" f _allocSwapID src/Dodge/Data/RightButtonOptions.hs 29;" f _alphaDivideShader src/Data/Preload/Render.hs 18;" f _alteRifleSwitch src/Dodge/Data/Item/Params.hs 20;" f -_ambushTarget src/Dodge/Data/ActionPlan.hs 155;" f +_ambushTarget src/Dodge/Data/ActionPlan.hs 132;" f _ampBullet src/Dodge/Data/Item/Use.hs 52;" f _ampCreateGas src/Dodge/Data/Item/Use.hs 54;" f _ampPayload src/Dodge/Data/Item/Use.hs 53;" f @@ -1530,7 +1527,7 @@ _apInt src/Dodge/Data/Item/Use.hs 47;" f _apProjectiles src/Dodge/Data/Item/Use.hs 46;" f _apStrategy src/Dodge/Data/ActionPlan.hs 21;" f _aps src/Dodge/Data/Muzzle.hs 22;" f -_arbitraryAction src/Dodge/Data/ActionPlan.hs 144;" f +_arbitraryAction src/Dodge/Data/ActionPlan.hs 121;" f _arcNode src/Dodge/Data/LWorld.hs 113;" f _asDir src/Dodge/Data/ArcStep.hs 16;" f _asObject src/Dodge/Data/ArcStep.hs 17;" f @@ -1601,7 +1598,7 @@ _bullets src/Dodge/Data/LWorld.hs 105;" f _burstFrames src/Dodge/Data/TriggerType.hs 12;" f _burstRate src/Dodge/Data/TriggerType.hs 12;" f _buttons src/Dodge/Data/LWorld.hs 133;" f -_cClock src/Dodge/Data/CWorld.hs 26;" f +_cClock src/Dodge/Data/CWorld.hs 28;" f _cWorld src/Dodge/Data/World.hs 37;" f _camBoundBox src/Dodge/Data/Camera.hs 31;" f _camBoundDist src/Dodge/Data/Camera.hs 32;" f @@ -1629,7 +1626,7 @@ _ceSideEffect src/Dodge/Data/Universe.hs 66;" f _ceString src/Dodge/Data/Universe.hs 67;" f _chasmShader src/Data/Preload/Render.hs 46;" f _chasmVBO src/Data/Preload/Render.hs 45;" f -_chasms src/Dodge/Data/CWorld.hs 30;" f +_chasms src/Dodge/Data/CWorld.hs 34;" f _ciFilter src/Dodge/Data/HUD.hs 27;" f _ciInvIDs src/Dodge/Data/Combine.hs 9;" f _ciItem src/Dodge/Data/Combine.hs 10;" f @@ -1709,13 +1706,13 @@ _creatures src/Dodge/Data/LWorld.hs 96;" f _csLinks src/Dodge/Data/RoomCluster.hs 10;" f _currentArc src/Dodge/Data/Item/Params.hs 17;" f _currentFoot src/Dodge/Data/Creature/Stance.hs 25;" f -_cwGen src/Dodge/Data/CWorld.hs 25;" f -_cwTiles src/Dodge/Data/CWorld.hs 27;" f -_cwgGameRooms src/Dodge/Data/CWorld.hs 37;" f -_cwgParams src/Dodge/Data/CWorld.hs 35;" f -_cwgRoomClipping src/Dodge/Data/CWorld.hs 38;" f -_cwgSeed src/Dodge/Data/CWorld.hs 39;" f -_cwgWorldBounds src/Dodge/Data/CWorld.hs 36;" f +_cwGen src/Dodge/Data/CWorld.hs 27;" f +_cwTiles src/Dodge/Data/CWorld.hs 29;" f +_cwgGameRooms src/Dodge/Data/CWorld.hs 41;" f +_cwgParams src/Dodge/Data/CWorld.hs 39;" f +_cwgRoomClipping src/Dodge/Data/CWorld.hs 42;" f +_cwgSeed src/Dodge/Data/CWorld.hs 43;" f +_cwgWorldBounds src/Dodge/Data/CWorld.hs 40;" f _cylinderSize src/Shape/Data.hs 19;" f _dbPos src/Dodge/Data/Prop.hs 49;" f _dbRot src/Dodge/Data/Prop.hs 52;" f @@ -1747,27 +1744,27 @@ _dmPos src/Dodge/Data/Damage.hs 27;" f _dmVector src/Dodge/Data/Damage.hs 20;" f _dmVector src/Dodge/Data/Damage.hs 23;" f _dmVector src/Dodge/Data/Damage.hs 26;" f -_doActionIfAction src/Dodge/Data/ActionPlan.hs 105;" f -_doActionIfCondition src/Dodge/Data/ActionPlan.hs 104;" f -_doActionIfElseCondition src/Dodge/Data/ActionPlan.hs 109;" f -_doActionIfElseElseAction src/Dodge/Data/ActionPlan.hs 110;" f -_doActionIfElseIfAction src/Dodge/Data/ActionPlan.hs 108;" f -_doActionThenFirst src/Dodge/Data/ActionPlan.hs 121;" f -_doActionThenSecond src/Dodge/Data/ActionPlan.hs 122;" f -_doActionWhileAction src/Dodge/Data/ActionPlan.hs 96;" f -_doActionWhileAction src/Dodge/Data/ActionPlan.hs 101;" f -_doActionWhileCondition src/Dodge/Data/ActionPlan.hs 95;" f -_doActionWhileCondition src/Dodge/Data/ActionPlan.hs 100;" f -_doActionWhilePartial src/Dodge/Data/ActionPlan.hs 99;" f -_doActionWhileThenCondition src/Dodge/Data/ActionPlan.hs 114;" f -_doActionWhileThenDo src/Dodge/Data/ActionPlan.hs 113;" f -_doActionWhileThenThen src/Dodge/Data/ActionPlan.hs 115;" f -_doActionsList src/Dodge/Data/ActionPlan.hs 118;" f -_doImpulsesList src/Dodge/Data/ActionPlan.hs 88;" f -_doReplicateAction src/Dodge/Data/ActionPlan.hs 129;" f -_doReplicateAction src/Dodge/Data/ActionPlan.hs 134;" f -_doReplicateTimes src/Dodge/Data/ActionPlan.hs 128;" f -_doReplicateTimes src/Dodge/Data/ActionPlan.hs 133;" f +_doActionIfAction src/Dodge/Data/ActionPlan.hs 91;" f +_doActionIfCondition src/Dodge/Data/ActionPlan.hs 90;" f +_doActionIfElseCondition src/Dodge/Data/ActionPlan.hs 95;" f +_doActionIfElseElseAction src/Dodge/Data/ActionPlan.hs 96;" f +_doActionIfElseIfAction src/Dodge/Data/ActionPlan.hs 94;" f +_doActionThenFirst src/Dodge/Data/ActionPlan.hs 105;" f +_doActionThenSecond src/Dodge/Data/ActionPlan.hs 106;" f +_doActionWhileAction src/Dodge/Data/ActionPlan.hs 82;" f +_doActionWhileAction src/Dodge/Data/ActionPlan.hs 87;" f +_doActionWhileCondition src/Dodge/Data/ActionPlan.hs 81;" f +_doActionWhileCondition src/Dodge/Data/ActionPlan.hs 86;" f +_doActionWhilePartial src/Dodge/Data/ActionPlan.hs 85;" f +_doActionWhileThenCondition src/Dodge/Data/ActionPlan.hs 100;" f +_doActionWhileThenDo src/Dodge/Data/ActionPlan.hs 99;" f +_doActionWhileThenThen src/Dodge/Data/ActionPlan.hs 101;" f +_doActionsList src/Dodge/Data/ActionPlan.hs 103;" f +_doImpulsesList src/Dodge/Data/ActionPlan.hs 75;" f +_doReplicateAction src/Dodge/Data/ActionPlan.hs 110;" f +_doReplicateAction src/Dodge/Data/ActionPlan.hs 115;" f +_doReplicateTimes src/Dodge/Data/ActionPlan.hs 109;" f +_doReplicateTimes src/Dodge/Data/ActionPlan.hs 114;" f _doors src/Dodge/Data/LWorld.hs 122;" f _drClosePos src/Dodge/Data/Door.hs 42;" f _drDeath src/Dodge/Data/Door.hs 44;" f @@ -1819,7 +1816,7 @@ _flPos src/Dodge/Data/Flame.hs 15;" f _flTimer src/Dodge/Data/Flame.hs 14;" f _flVel src/Dodge/Data/Flame.hs 16;" f _flames src/Dodge/Data/LWorld.hs 108;" f -_flankTarget src/Dodge/Data/ActionPlan.hs 154;" f +_flankTarget src/Dodge/Data/ActionPlan.hs 131;" f _flares src/Dodge/Data/LWorld.hs 111;" f _flatShieldWlMIX src/Dodge/Data/Item/Params.hs 16;" f _floorItems src/Dodge/Data/LWorld.hs 129;" f @@ -1900,7 +1897,9 @@ _imSelectedItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 25;" f _immediateEffect src/Loop/Data.hs 9;" f _immediateUpdate src/Loop/Data.hs 12;" f _impulseUseTarget src/Dodge/Data/ActionPlan.hs 47;" f -_impulsesListList src/Dodge/Data/ActionPlan.hs 85;" f +_impulsesListList src/Dodge/Data/ActionPlan.hs 74;" f +_incGraph src/Dodge/Data/CWorld.hs 31;" f +_incNode src/Dodge/Data/CWorld.hs 32;" f _input src/Dodge/Data/World.hs 43;" f _isWarming src/Dodge/Data/Item/Params.hs 23;" f _ispCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 33;" f @@ -1922,13 +1921,13 @@ _items src/Dodge/Data/LWorld.hs 98;" f _itsInt src/Dodge/Data/Item.hs 40;" f _itsMax src/Dodge/Data/Item.hs 41;" f _itsRangeInt src/Dodge/Data/Item.hs 41;" f -_killTarget src/Dodge/Data/ActionPlan.hs 176;" f +_killTarget src/Dodge/Data/ActionPlan.hs 153;" f _lAimPos src/Dodge/Data/LWorld.hs 145;" f _lClock src/Dodge/Data/LWorld.hs 140;" f _lInvLock src/Dodge/Data/LWorld.hs 146;" f _lTestInt src/Dodge/Data/LWorld.hs 142;" f _lTestString src/Dodge/Data/LWorld.hs 141;" f -_lWorld src/Dodge/Data/CWorld.hs 24;" f +_lWorld src/Dodge/Data/CWorld.hs 26;" f _lampColor src/Dodge/Data/Creature/Misc.hs 74;" f _lampHeight src/Dodge/Data/Creature/Misc.hs 74;" f _lampLSID src/Dodge/Data/Creature/Misc.hs 74;" f @@ -1941,7 +1940,7 @@ _ldpVerticalGap src/Dodge/Data/SelectionList.hs 16;" f _ldtLeft src/Dodge/Data/DoubleTree.hs 36;" f _ldtRight src/Dodge/Data/DoubleTree.hs 37;" f _ldtValue src/Dodge/Data/DoubleTree.hs 35;" f -_leadTargetBy src/Dodge/Data/ActionPlan.hs 137;" f +_leadTargetBy src/Dodge/Data/ActionPlan.hs 117;" f _lightSources src/Dodge/Data/LWorld.hs 135;" f _lightingCapShader src/Data/Preload/Render.hs 16;" f _lightingLineShadowShader src/Data/Preload/Render.hs 15;" f @@ -1975,7 +1974,7 @@ _lyGen src/Dodge/Data/MetaTree.hs 30;" f _machines src/Dodge/Data/LWorld.hs 123;" f _magBelowID src/Dodge/Data/Muzzle.hs 22;" f _magnets src/Dodge/Data/LWorld.hs 126;" f -_mainAction src/Dodge/Data/ActionPlan.hs 148;" f +_mainAction src/Dodge/Data/ActionPlan.hs 125;" f _manObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 17;" f _mapInvItmID src/Dodge/Data/HUD.hs 22;" f _mapInvOffset src/Dodge/Data/HUD.hs 20;" f @@ -2019,7 +2018,7 @@ _mdTimer src/Dodge/Data/Modification.hs 19;" f _mdUpdate src/Dodge/Data/Modification.hs 18;" f _mdUpdate src/Dodge/Data/Modification.hs 27;" f _meleeCooldown src/Dodge/Data/Creature/Misc.hs 70;" f -_meleeTarget src/Dodge/Data/ActionPlan.hs 164;" f +_meleeTarget src/Dodge/Data/ActionPlan.hs 141;" f _mgField src/Dodge/Data/Magnet.hs 25;" f _mgPos src/Dodge/Data/Magnet.hs 24;" f _moEff src/Dodge/Data/Universe.hs 101;" f @@ -2057,8 +2056,8 @@ _nodesSearched src/Dodge/Data/Creature/Memory.hs 15;" f _nonInf src/Dodge/Data/CardinalPoint.hs 36;" f _numLinkEW src/Dodge/Data/Room.hs 34;" f _numLinkNS src/Dodge/Data/Room.hs 35;" f -_numberChasmVerxs src/Dodge/Data/CWorld.hs 31;" f -_numberFloorVerxs src/Dodge/Data/CWorld.hs 29;" f +_numberChasmVerxs src/Dodge/Data/CWorld.hs 35;" f +_numberFloorVerxs src/Dodge/Data/CWorld.hs 33;" f _nzAngle src/Dodge/Data/Item/Params.hs 18;" f _nzMaxWalkAngle src/Dodge/Data/Muzzle.hs 49;" f _nzPressure src/Dodge/Data/Muzzle.hs 48;" f @@ -2072,10 +2071,10 @@ _opTexture src/Dodge/Data/Wall.hs 44;" f _opticDefaultZoom src/Dodge/Data/Item/Scope.hs 20;" f _opticPos src/Dodge/Data/Item/Scope.hs 16;" f _opticZoom src/Dodge/Data/Item/Scope.hs 19;" f -_partialAction src/Dodge/Data/ActionPlan.hs 132;" f +_partialAction src/Dodge/Data/ActionPlan.hs 113;" f _pastWorlds src/Dodge/Data/World.hs 38;" f -_pathGraph src/Dodge/Data/CWorld.hs 28;" f -_pathToPoint src/Dodge/Data/ActionPlan.hs 77;" f +_pathGraph src/Dodge/Data/CWorld.hs 30;" f +_pathToPoint src/Dodge/Data/ActionPlan.hs 72;" f _pbID src/Dodge/Data/PulseLaser.hs 24;" f _pbPos src/Dodge/Data/PulseLaser.hs 22;" f _pbTimer src/Dodge/Data/PulseLaser.hs 23;" f @@ -2261,14 +2260,16 @@ _scrollTestInt src/Dodge/Data/Input.hs 50;" f _scurColor src/Dodge/Data/SelectionList.hs 26;" f _scurPos src/Dodge/Data/SelectionList.hs 24;" f _scurSize src/Dodge/Data/SelectionList.hs 25;" f +_seDist src/Dodge/Data/PathGraph.hs 49;" f +_seObstacles src/Dodge/Data/PathGraph.hs 50;" f _seenLocations src/Dodge/Data/LWorld.hs 137;" f _selLocation src/Dodge/Data/LWorld.hs 138;" f _sensAmount src/Dodge/Data/Machine/Sensor.hs 22;" f _sensThreshold src/Dodge/Data/Machine/Sensor.hs 24;" f _sensType src/Dodge/Data/Machine/Sensor.hs 23;" f _sensorCoding src/Dodge/Data/GenParams.hs 16;" f -_sentinelDir src/Dodge/Data/ActionPlan.hs 177;" f -_sentinelPos src/Dodge/Data/ActionPlan.hs 177;" f +_sentinelDir src/Dodge/Data/ActionPlan.hs 154;" f +_sentinelPos src/Dodge/Data/ActionPlan.hs 154;" f _sfColor src/Shape/Data.hs 44;" f _sfShadowImportance src/Shape/Data.hs 45;" f _sfSize src/Shape/Data.hs 46;" f @@ -2290,7 +2291,7 @@ _siPayload src/Dodge/Data/SelectionList.hs 49;" f _siPictures src/Dodge/Data/SelectionList.hs 43;" f _siWidth src/Dodge/Data/SelectionList.hs 45;" f _sideEffect src/Loop/Data.hs 13;" f -_sideImpulses src/Dodge/Data/ActionPlan.hs 147;" f +_sideImpulses src/Dodge/Data/ActionPlan.hs 124;" f _silhouetteEBO src/Data/Preload/Render.hs 27;" f _skOldPos src/Dodge/Data/Spark.hs 17;" f _skPos src/Dodge/Data/Spark.hs 16;" f @@ -2344,8 +2345,8 @@ _taArcSteps src/Dodge/Data/TeslaArc.hs 19;" f _taColor src/Dodge/Data/TeslaArc.hs 20;" f _taTimer src/Dodge/Data/TeslaArc.hs 18;" f _targetCr src/Dodge/Data/Creature.hs 77;" f -_targetID src/Dodge/Data/ActionPlan.hs 74;" f -_targetSeenAt src/Dodge/Data/ActionPlan.hs 75;" f +_targetID src/Dodge/Data/ActionPlan.hs 69;" f +_targetSeenAt src/Dodge/Data/ActionPlan.hs 70;" f _tbPos src/Dodge/Data/TractorBeam.hs 14;" f _tbStartPos src/Dodge/Data/TractorBeam.hs 15;" f _tbTime src/Dodge/Data/TractorBeam.hs 17;" f @@ -2398,7 +2399,7 @@ _tuDir src/Dodge/Data/Machine.hs 55;" f _tuFireTime src/Dodge/Data/Machine.hs 54;" f _tuTurnSpeed src/Dodge/Data/Machine.hs 53;" f _tuWeapon src/Dodge/Data/Machine.hs 52;" f -_turnToPoint src/Dodge/Data/ActionPlan.hs 79;" f +_turnToPoint src/Dodge/Data/ActionPlan.hs 73;" f _uInt src/Dodge/Data/Item/Use.hs 33;" f _uScope src/Dodge/Data/Item/Use.hs 36;" f _uValue src/Dodge/Data/Item/Use.hs 35;" f @@ -2420,7 +2421,7 @@ _unputTerminal src/Dodge/Data/GenWorld.hs 43;" f _useExactly src/Dodge/Data/Muzzle.hs 62;" f _useMapperLines src/Dodge/Data/Item/Use.hs 40;" f _useMapperPoints src/Dodge/Data/Item/Use.hs 41;" f -_useSelf src/Dodge/Data/ActionPlan.hs 142;" f +_useSelf src/Dodge/Data/ActionPlan.hs 120;" f _useToggle src/Dodge/Data/Item/Use.hs 38;" f _useUpTo src/Dodge/Data/Muzzle.hs 63;" f _uvCanContinue src/Dodge/Data/Universe.hs 39;" f @@ -2470,8 +2471,8 @@ _vxPos src/Picture/Data.hs 14;" f _vxShadNum src/Picture/Data.hs 18;" f _wCam src/Dodge/Data/World.hs 55;" f _wTime src/Dodge/Data/Item/Params.hs 22;" f -_waitThenAction src/Dodge/Data/ActionPlan.hs 92;" f -_waitThenTimer src/Dodge/Data/ActionPlan.hs 91;" f +_waitThenAction src/Dodge/Data/ActionPlan.hs 78;" f +_waitThenTimer src/Dodge/Data/ActionPlan.hs 77;" f _wallDamages src/Dodge/Data/LWorld.hs 121;" f _wallShader src/Data/Preload/Render.hs 48;" f _wallVBO src/Data/Preload/Render.hs 47;" f @@ -2528,7 +2529,7 @@ addDepth src/Picture/Base.hs 133;" f addDoorAtNthLinkToggleTerminal src/Dodge/Room/Warning.hs 40;" f addDoorToggleTerminal src/Dodge/Room/Warning.hs 37;" f addDoorWall src/Dodge/Placement/PlaceSpot/TriggerDoor.hs 53;" f -addEdges src/Dodge/Path.hs 134;" f +addEdges src/Dodge/Path.hs 153;" f addGib4 src/Dodge/Prop/Gib.hs 52;" f addGibAt src/Dodge/Prop/Gib.hs 63;" f addGibAtDir src/Dodge/Prop/Gib.hs 69;" f @@ -2543,7 +2544,7 @@ addGirderNS' src/Dodge/Room/Modify/Girder.hs 55;" f addHighGirder src/Dodge/Room/Modify/Girder.hs 132;" f addHighGirder' src/Dodge/Room/Modify/Girder.hs 142;" f addIndefiniteArticle src/StringHelp.hs 17;" f -addNodes src/Dodge/Path.hs 127;" f +addNodes src/Dodge/Path.hs 146;" f addPane src/Dodge/Placement/PlaceSpot.hs 183;" f addPlmnt src/Dodge/LevelGen/PlacementHelper.hs 87;" f addPointPolygon src/Geometry/Polygon.hs 134;" f @@ -2699,7 +2700,7 @@ battery src/Dodge/Item/Ammo.hs 63;" f batteryPack src/Dodge/Item/Equipment.hs 46;" f belowNumX src/Dodge/Combine/Graph.hs 86;" f beltMag src/Dodge/Item/Ammo.hs 39;" f -bfsNodePoints src/Dodge/Path.hs 69;" f +bfsNodePoints src/Dodge/Path.hs 72;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 225;" f bgateCalc src/Dodge/Inventory/SelectionList.hs 118;" f bgunSound src/Dodge/HeldUse.hs 514;" f @@ -3129,13 +3130,13 @@ defaultDrawButton src/Dodge/Button/Draw.hs 29;" f defaultEquipment src/Dodge/Default.hs 24;" f defaultFlIt src/Dodge/Default.hs 27;" f defaultForeground src/Dodge/Default/ForegroundShape.hs 5;" f -defaultHUD src/Dodge/Default/World.hs 158;" f +defaultHUD src/Dodge/Default/World.hs 160;" f defaultHeldItem src/Dodge/Default/Item.hs 9;" f defaultInanimate src/Dodge/Default/Creature.hs 62;" f defaultInput src/Dodge/Default/World.hs 11;" f defaultIntention src/Dodge/Default/Creature.hs 98;" f defaultInvSize src/Dodge/Default/Creature.hs 72;" f -defaultLWorld src/Dodge/Default/World.hs 95;" f +defaultLWorld src/Dodge/Default/World.hs 97;" f defaultListDisplayParams src/Dodge/ListDisplayParams.hs 18;" f defaultMachine src/Dodge/Default.hs 30;" f defaultMachineWall src/Dodge/Default/Wall.hs 55;" f @@ -3419,9 +3420,8 @@ drawZoneCirc src/Dodge/Debug/Picture.hs 301;" f drawZoneCol src/Dodge/Debug/Picture.hs 149;" f drawZoneNearPointCursor src/Dodge/Debug/Picture.hs 294;" f dropAll src/Dodge/Creature/Update.hs 129;" f -dropExcept src/Dodge/Creature/Action.hs 166;" f dropInventoryPath src/Dodge/HeldUse.hs 1351;" f -dropItem src/Dodge/Creature/Action.hs 173;" f +dropItem src/Dodge/Creature/Action.hs 154;" f dropper src/Dodge/Item/Scope.hs 76;" f drumMag src/Dodge/Item/Ammo.hs 34;" f dsZoneSize src/Dodge/Zoning/Cloud.hs 42;" f @@ -3562,7 +3562,7 @@ foamSprayLoopS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 554;" f foldMTRS src/Dodge/Room/Tutorial.hs 58;" f foldPairs src/ListHelp.hs 37;" f foldrWhileArb src/ListHelp.hs 110;" f -followImpulse src/Dodge/Creature/Impulse.hs 23;" f +followImpulse src/Dodge/Creature/Impulse.hs 24;" f foot1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 486;" f foot2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 510;" f foot3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 622;" f @@ -3634,7 +3634,7 @@ getLaserPhaseV src/Dodge/HeldUse.hs 701;" f getLinksOfType src/Dodge/RoomLink.hs 41;" f getMaxLinesTM src/Dodge/Terminal/Type.hs 6;" f getMenuMouseContext src/Dodge/Update.hs 388;" f -getNodePos src/Dodge/Path.hs 33;" f +getNodePos src/Dodge/Path.hs 36;" f getPJStabiliser src/Dodge/HeldUse.hs 1251;" f getPretty src/AesonHelp.hs 8;" f getPromptTM src/Dodge/Terminal/Type.hs 3;" f @@ -4114,9 +4114,9 @@ makeIntInterval src/Dodge/Zoning/Base.hs 35;" f makeMovingEB src/Dodge/EnergyBall.hs 60;" f makeMuzzleFlare src/Dodge/HeldUse.hs 656;" f makeParagraph src/Justify.hs 6;" f -makePathBetween src/Dodge/Path.hs 43;" f -makePathBetweenPs src/Dodge/Path.hs 66;" f -makePathUsing src/Dodge/Path.hs 36;" f +makePathBetween src/Dodge/Path.hs 45;" f +makePathBetweenPs src/Dodge/Path.hs 69;" f +makePathUsing src/Dodge/Path.hs 39;" f makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 25;" f makeRect src/Grid.hs 82;" f makeSelectionListPictures src/Dodge/Render/List.hs 66;" f @@ -4320,8 +4320,7 @@ numShads src/Picture/Data.hs 42;" f numSubElements src/Shader/Parameters.hs 39;" f numTraversable src/TreeHelp.hs 184;" f obstacleColor src/Dodge/Debug/Picture.hs 271;" f -obstructPathsCrossing src/Dodge/Path.hs 150;" f -obstructPathsCrossing' src/Dodge/Path.hs 163;" f +obstructPathsCrossing src/Dodge/Path.hs 169;" f oldMachineBootS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 698;" f onEquipWristShield src/Dodge/Equipment.hs 37;" f onRemoveWristShield src/Dodge/Equipment.hs 24;" f @@ -4369,7 +4368,8 @@ p src/ShortShow.hs 48;" f pContID src/Dodge/LevelGen/PlacementHelper.hs 15;" f pairInPolys src/Dodge/Room/Path.hs 45;" f pairPolyPointsIntersect src/Geometry/ConvexPoly.hs 70;" f -pairsToGraph src/Dodge/Path.hs 122;" f +pairsToGraph src/Dodge/Path.hs 139;" f +pairsToIncGraph src/Dodge/Path.hs 128;" f pairsToIncidence src/Dodge/Graph.hs 20;" f pairsToSCC src/Dodge/Graph.hs 32;" f paletteToColor src/Color.hs 58;" f @@ -4377,7 +4377,7 @@ parseItem src/Dodge/Debug/Terminal.hs 62;" f parseNum src/Dodge/Debug/Terminal.hs 77;" f passthroughLockKeyLists src/Dodge/Floor.hs 120;" f pathConnected src/Dodge/Room/CheckConsistency.hs 13;" f -pathEdgeObstructed src/Dodge/Path.hs 46;" f +pathEdgeObstructed src/Dodge/Path.hs 48;" f pauseAndFloatCam src/Dodge/Camera.hs 10;" f pauseGame src/Dodge/Update/Input/InGame.hs 525;" f pauseMenu src/Dodge/Menu.hs 59;" f @@ -4386,21 +4386,21 @@ pauseSound src/Dodge/SoundLogic.hs 42;" f pauseTime src/Dodge/Update.hs 182;" f pbFlicker src/Dodge/Update.hs 469;" f pbsHit src/Dodge/WorldEvent/ThingsHit.hs 89;" f -peZoneSize src/Dodge/Zoning/Pathing.hs 46;" f +peZoneSize src/Dodge/Zoning/Pathing.hs 47;" f pedestalRoom src/Dodge/Room/Containing.hs 50;" f penThing src/Dodge/Bullet.hs 210;" f perMat src/MatrixHelper.hs 49;" f perceptionUpdate src/Dodge/Creature/Perception.hs 24;" f -performAction src/Dodge/Creature/Action.hs 93;" f +performAction src/Dodge/Creature/Action.hs 53;" f performActions src/Dodge/Creature/Action.hs 38;" f -performAimAt src/Dodge/Creature/Action.hs 48;" f -performPathTo src/Dodge/Creature/Action.hs 61;" f -performTurnToA src/Dodge/Creature/Action.hs 80;" f +performAimAt src/Dodge/Creature/Action.hs 102;" f +performPathTo src/Dodge/Creature/Action.hs 115;" f +performTurnToA src/Dodge/Creature/Action.hs 127;" f perspectiveMatrixb src/MatrixHelper.hs 11;" f -pesNearCirc src/Dodge/Zoning/Pathing.hs 43;" f +pesNearCirc src/Dodge/Zoning/Pathing.hs 44;" f pesNearPoint src/Dodge/Zoning/Pathing.hs 33;" f -pesNearRect src/Dodge/Zoning/Pathing.hs 40;" f -pesNearSeg src/Dodge/Zoning/Pathing.hs 37;" f +pesNearRect src/Dodge/Zoning/Pathing.hs 41;" f +pesNearSeg src/Dodge/Zoning/Pathing.hs 38;" f picFormat src/Polyhedra.hs 23;" f picMap src/Picture/Base.hs 67;" f pickUpItem src/Dodge/Inventory/Add.hs 69;" f @@ -4463,7 +4463,7 @@ pointInOrOnPolygon src/Geometry/Polygon.hs 78;" f pointInPoly src/Geometry/Polygon.hs 86;" f pointIsInCone src/Geometry.hs 375;" f pointIsOnScreen src/Dodge/Base/Window.hs 59;" f -pointTowardsImpulse src/Dodge/Path.hs 74;" f +pointTowardsImpulse src/Dodge/Path.hs 77;" f pointerToItem src/Dodge/Item/Location.hs 39;" f pointerToItemID src/Dodge/Item/Location.hs 42;" f pointerYourRootItem src/Dodge/Item/Location.hs 33;" f @@ -5038,11 +5038,11 @@ smallGlass3S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 518;" f smallGlass4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 466;" f smallPillar src/Dodge/Room/Pillar.hs 37;" f smallRoom src/Dodge/Room/RunPast.hs 31;" f -smallSnailInt2 src/Dodge/Path.hs 62;" f +smallSnailInt2 src/Dodge/Path.hs 63;" f smg src/Dodge/Item/Held/Stick.hs 58;" f smokeReducer src/Dodge/Item/Scope.hs 162;" f -snailAround src/Dodge/Path.hs 59;" f -snapToGrid src/Dodge/Path.hs 174;" f +snailAround src/Dodge/Path.hs 60;" f +snapToGrid src/Dodge/Path.hs 187;" f sndV2 src/Geometry/Data.hs 73;" f sniperRifle src/Dodge/Item/Held/Rod.hs 44;" f someCrits src/Dodge/LockAndKey.hs 120;" f @@ -5232,7 +5232,7 @@ thingsHit src/Dodge/WorldEvent/ThingsHit.hs 36;" f thingsHitExceptCr src/Dodge/WorldEvent/ThingsHit.hs 119;" f thingsHitZ src/Dodge/WorldEvent/ThingsHit.hs 44;" f threeLineDecoration src/Dodge/Placement/TopDecoration.hs 61;" f -throwItem src/Dodge/Creature/Action.hs 209;" f +throwItem src/Dodge/Creature/Action.hs 190;" f tileTexCoords src/Tile.hs 11;" f tilesFromRooms src/Dodge/Layout.hs 192;" f tilesToLine src/Shader/AuxAddition.hs 66;" f @@ -5572,7 +5572,7 @@ vocalizationTest src/Dodge/Creature/Vocalization.hs 42;" f volleyGun src/Dodge/Item/Held/Cane.hs 15;" f volleyGunShape src/Dodge/Item/Draw/SPic.hs 357;" f walkNozzle src/Dodge/HeldUse.hs 809;" f -walkableNodeNear src/Dodge/Path.hs 52;" f +walkableNodeNear src/Dodge/Path.hs 54;" f wallBlips src/Dodge/RadarSweep.hs 99;" f wallBuffer src/Dodge/WallCreatureCollisions.hs 53;" f wallIsZeroLength src/Dodge/LevelGen/StaticWalls.hs 179;" f @@ -5658,7 +5658,7 @@ yIntercepts' src/Dodge/Zoning/Base.hs 76;" f yV2 src/Geometry/Vector.hs 205;" f yellow src/Color.hs 17;" f you src/Dodge/Base/You.hs 13;" f -youDropItem src/Dodge/Creature/Action.hs 195;" f +youDropItem src/Dodge/Creature/Action.hs 176;" f yourAugmentedItem src/Dodge/Render/HUD.hs 238;" f yourControl src/Dodge/Creature/YourControl.hs 28;" f yourDefaultStrideLength src/Dodge/Default/Creature.hs 110;" f @@ -5687,14 +5687,14 @@ zoneOfCirc src/Dodge/Zoning/Base.hs 24;" f zoneOfCl src/Dodge/Zoning/Cloud.hs 24;" f zoneOfCr src/Dodge/Zoning/Creature.hs 45;" f zoneOfDs src/Dodge/Zoning/Cloud.hs 45;" f -zoneOfPe src/Dodge/Zoning/Pathing.hs 49;" f +zoneOfPe src/Dodge/Zoning/Pathing.hs 50;" f zoneOfPn src/Dodge/Zoning/Pathing.hs 27;" f zoneOfPoint src/Dodge/Zoning/Base.hs 44;" f zoneOfRect src/Dodge/Zoning/Base.hs 28;" f zoneOfSeg src/Dodge/Zoning/Base.hs 47;" f zoneOfSight src/Dodge/Zoning/World.hs 9;" f zoneOfWl src/Dodge/Zoning/Wall.hs 55;" f -zonePe src/Dodge/Zoning/Pathing.hs 52;" f +zonePe src/Dodge/Zoning/Pathing.hs 53;" f zonePn src/Dodge/Zoning/Pathing.hs 30;" f zoneWall src/Dodge/Zoning/Wall.hs 65;" f zonesAroundPoint src/Dodge/Zoning/Base.hs 96;" f