Increase zone searching size for initial/end node in pathing

This commit is contained in:
2025-10-16 12:26:43 +01:00
parent 3bfe6f5dfd
commit 0f43e1ad8f
2 changed files with 13 additions and 3 deletions
+11 -1
View File
@@ -12,6 +12,8 @@ module Dodge.Path (
snapToGrid,
) where
import Linear
import Data.List (sortOn)
import Data.Set (Set)
import qualified Data.Set as Set
import Control.Lens
@@ -49,7 +51,15 @@ 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) $ zonesAroundPoint pnZoneSize p
nodesNear = zonesExtract (w ^. pnZoning) . snailAround $ zoneOfPoint pnZoneSize p
snailAround :: Int2 -> [Int2]
snailAround x = fmap (x+) $ smallSnailInt2
smallSnailInt2 :: [Int2]
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