module PathFindingCore.PathingMap.Coordinate where

import Data.Ix(Ix)
import Data.List(reverse)

data Coordinate
  = Coord { x :: Int, y :: Int } deriving (Eq, Ix, Ord, Show)

data Breadcrumb
  = Crumb { to :: Coordinate, from :: Breadcrumb }
  | Source { source :: Coordinate } deriving (Eq, Show)

breadcrumbsToList :: Breadcrumb -> [Coordinate]
breadcrumbsToList (Source s) = [s]
breadcrumbsToList x          = reverse $ helper x
  where
    helper src@(Source _)  = breadcrumbsToList src
    helper (Crumb to from) = to : (helper from)