| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2017-10-19 13:30:40 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2017-10-19 13:30:40 +0200 | 
| commit | e008855086d124f0de14eacc858ecb57d23e371c (patch) | |
| tree | e3fe94dcf2966d17ac970b4b9cbbf6998c1f34a6 /elm/battlemap/src/Battlemap/Navigator/Path.elm | |
| parent | ab299e08cee6ee9b2b122ce87b9bdab3b0dd637c (diff) | |
Starting a more modular approach for the website.
Diffstat (limited to 'elm/battlemap/src/Battlemap/Navigator/Path.elm')
| -rw-r--r-- | elm/battlemap/src/Battlemap/Navigator/Path.elm | 168 | 
1 files changed, 0 insertions, 168 deletions
diff --git a/elm/battlemap/src/Battlemap/Navigator/Path.elm b/elm/battlemap/src/Battlemap/Navigator/Path.elm deleted file mode 100644 index 53e12c0..0000000 --- a/elm/battlemap/src/Battlemap/Navigator/Path.elm +++ /dev/null @@ -1,168 +0,0 @@ -module Battlemap.Navigator.Path exposing -   ( -      Type, -      new, -      get_current_location, -      get_remaining_points, -      get_summary, -      try_following_direction -   ) - -import Set - -import Util.List - -import Battlemap.Direction -import Battlemap.Location - --------------------------------------------------------------------------------- --- TYPES ----------------------------------------------------------------------- --------------------------------------------------------------------------------- -type alias Type = -   { -      current_location : Battlemap.Location.Type, -      visited_locations : (Set.Set Battlemap.Location.Ref), -      previous_directions : (List Battlemap.Direction.Type), -      previous_points : (List Int), -      remaining_points : Int -   } - --------------------------------------------------------------------------------- --- LOCAL ----------------------------------------------------------------------- --------------------------------------------------------------------------------- -has_been_to : ( -      Type -> -      Battlemap.Location.Type -> -      Bool -   ) -has_been_to path location = -   ( -      (path.current_location == location) -      || -      (Set.member -         (Battlemap.Location.get_ref location) -         path.visited_locations -      ) -   ) - -try_moving_to : ( -      Type -> -      Battlemap.Direction.Type -> -      Battlemap.Location.Type -> -      Int -> -      (Maybe Type) -   ) -try_moving_to path dir next_loc cost = -   let -      remaining_points = (path.remaining_points - cost) -   in -      if (remaining_points >= 0) -      then -         (Just -            {path | -               current_location = next_loc, -               visited_locations = -                  (Set.insert -                     (Battlemap.Location.get_ref path.current_location) -                     path.visited_locations -                  ), -               previous_directions = (dir :: path.previous_directions), -               previous_points = -                  (path.remaining_points :: path.previous_points), -               remaining_points = remaining_points -            } -         ) -      else -         Nothing - -try_backtracking_to : ( -      Type -> -      Battlemap.Direction.Type -> -      Battlemap.Location.Type -> -      (Maybe Type) -   ) -try_backtracking_to path dir location = -   case -      ( -         (Util.List.pop path.previous_directions), -         (Util.List.pop path.previous_points) -      ) -   of -      ( -         (Just (prev_dir_head, prev_dir_tail)), -         (Just (prev_pts_head, prev_pts_tail)) -      ) -> -         if (prev_dir_head == (Battlemap.Direction.opposite_of dir)) -         then -            (Just -               {path | -                  current_location = location, -                  visited_locations = -                     (Set.remove -                        (Battlemap.Location.get_ref location) -                        path.visited_locations -                     ), -                  previous_directions = prev_dir_tail, -                  previous_points = prev_pts_tail, -                  remaining_points = prev_pts_head -               } -            ) -         else -            Nothing -      (_, _) -> -         Nothing - --------------------------------------------------------------------------------- --- EXPORTED -------------------------------------------------------------------- --------------------------------------------------------------------------------- - -new : Battlemap.Location.Type -> Int -> Type -new start points = -   { -      current_location = start, -      visited_locations = Set.empty, -      previous_directions = [], -      previous_points = [], -      remaining_points = points -   } - -get_current_location : Type -> Battlemap.Location.Type -get_current_location path = path.current_location - -get_remaining_points : Type -> Int -get_remaining_points path = path.remaining_points - -get_summary : Type -> (List Battlemap.Direction.Type) -get_summary path = path.previous_directions -try_following_direction : ( -      (Battlemap.Location.Type -> Bool) -> -      (Battlemap.Location.Type -> Int) -> -      (Maybe Type) -> -      Battlemap.Direction.Type -> -      (Maybe Type) -   ) -try_following_direction can_cross cost_fun maybe_path dir = -   case maybe_path of -      (Just path) -> -         let -            next_location = -               (Battlemap.Location.neighbor -                  path.current_location -                  dir -               ) -         in -            if (can_cross next_location) -            then -               if (has_been_to path next_location) -               then -                  (try_backtracking_to path dir next_location) -               else -                  (try_moving_to -                     path -                     dir -                     next_location -                     (cost_fun next_location) -                  ) -            else -               Nothing -      Nothing -> Nothing  | 


