aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-10-12 19:46:36 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-10-12 19:46:36 +0200
commit5a75000ec7b961ad5fe93814e5b7905cacbdba49 (patch)
treeaa0065ccb2251ecd7cf53dfd91e4ba1dd7ae8a52 /elm/battlemap/src/Battlemap/Navigator.elm
parent2d54254e59289c452777fccb1f4d00b56eb7e451 (diff)
downloadtacticians-client-5a75000ec7b961ad5fe93814e5b7905cacbdba49.zip
tacticians-client-5a75000ec7b961ad5fe93814e5b7905cacbdba49.tar.bz2
Started a rather large reorganization.messy-exchanges
Diffstat (limited to 'elm/battlemap/src/Battlemap/Navigator.elm')
-rw-r--r--elm/battlemap/src/Battlemap/Navigator.elm105
1 files changed, 78 insertions, 27 deletions
diff --git a/elm/battlemap/src/Battlemap/Navigator.elm b/elm/battlemap/src/Battlemap/Navigator.elm
index b040013..9cdfc1f 100644
--- a/elm/battlemap/src/Battlemap/Navigator.elm
+++ b/elm/battlemap/src/Battlemap/Navigator.elm
@@ -2,43 +2,94 @@ module Battlemap.Navigator exposing
(
Type,
new,
- reset
+ get_current_location,
+ get_remaining_points,
+ get_range_markers,
+ add_step
)
-import Set
+import Dict
-import Battlemap
-import Battlemap.Direction
import Battlemap.Location
-import Battlemap.Tile
+import Battlemap.Navigator.Path
+import Battlemap.Navigator.RangeIndicator
+--------------------------------------------------------------------------------
+-- TYPES -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
type alias Type =
{
- current_location : Battlemap.Location.Type,
- visited_locations : (Set.Set Battlemap.Location.Ref),
- previous_directions : (List Battlemap.Direction.Type),
- remaining_points : Int,
- starting_location : Battlemap.Location.Type,
- starting_points : Int
+ starting_location: Battlemap.Location.Type,
+ movement_dist: Int,
+ attack_dist: Int,
+ path: Battlemap.Navigator.Path.Type,
+ range_indicators:
+ (Dict.Dict
+ Battlemap.Location.Ref
+ Battlemap.Navigator.RangeIndicator.Type
+ )
}
-new : Battlemap.Location.Type -> Int -> Type
-new start points =
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+new : (
+ Battlemap.Location.Type ->
+ Int ->
+ Int ->
+ (Battlemap.Location.Type -> Bool) -> Type
+ )
+new start_loc mov_dist atk_dist can_cross_fun =
{
- current_location = start,
- visited_locations = Set.empty,
- previous_directions = [],
- remaining_points = points,
- starting_location = start,
- starting_points = points
+ starting_location = start_loc,
+ movement_dist = mov_dist,
+ attack_dist = atk_dist,
+ path = (Battlemap.Navigator.Path.new start_loc mov_dist),
+ range_indicators =
+ (Battlemap.Navigator.RangeIndicator.generate
+ start_loc
+ mov_dist
+ atk_dist
+ (can_cross_fun)
+ )
}
-reset : Type -> Type
-reset nav =
- {nav |
- current_location = nav.starting_location,
- visited_locations = Set.empty,
- previous_directions = [],
- remaining_points = nav.starting_points
- }
+get_current_location : Type -> Battlemap.Location.Type
+get_current_location navigator =
+ (Battlemap.Navigator.Path.get_current_location navigator.path)
+
+get_remaining_points : Type -> Int
+get_remaining_points navigator =
+ (Battlemap.Navigator.Path.get_remaining_points navigator.path)
+
+get_range_markers : (
+ Type ->
+ (List
+ (Battlemap.Location.Ref, Battlemap.Navigator.RangeIndicator.Type)
+ )
+ )
+get_range_markers navigator = (Dict.toList navigator.range_indicators)
+
+add_step : (
+ Type ->
+ Battlemap.Direction.Type ->
+ (Battlemap.Location.Type -> Bool) ->
+ (Maybe Type)
+ )
+add_step navigator dir can_cross =
+ case
+ (Battlemap.Navigator.Path.follow_direction
+ can_cross
+ (Just navigator.path)
+ dir
+ )
+ of
+ (Just path) -> (Just {navigator | path = path}
+ Nothing -> Nothing