summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-09-23 20:26:52 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-09-23 20:26:52 +0200
commit568309d0cfb5114accbc21962d5d23c3b9bf7036 (patch)
tree3db7174f104eba060dd1e6b545c74f984e209139 /client/elm/battlemap/src/Battlemap/RangeIndicator.elm
parentdbad54ad228df4b70f56bf6be1380b6ae3064ac3 (diff)
Fixes "Too much recursion" and some similar issues
Diffstat (limited to 'client/elm/battlemap/src/Battlemap/RangeIndicator.elm')
-rw-r--r--client/elm/battlemap/src/Battlemap/RangeIndicator.elm66
1 files changed, 41 insertions, 25 deletions
diff --git a/client/elm/battlemap/src/Battlemap/RangeIndicator.elm b/client/elm/battlemap/src/Battlemap/RangeIndicator.elm
index 3311f42..d6c00cc 100644
--- a/client/elm/battlemap/src/Battlemap/RangeIndicator.elm
+++ b/client/elm/battlemap/src/Battlemap/RangeIndicator.elm
@@ -2,6 +2,7 @@ module Battlemap.RangeIndicator exposing (Type, generate)
import Dict
import List
+import Debug
import Battlemap
import Battlemap.Direction
@@ -16,41 +17,56 @@ type alias Type =
node_cost: Int
}
-generate_grid : (
+generate_row : (
Battlemap.Location.Type ->
Int ->
Int ->
Int ->
+ (List Battlemap.Location.Type) ->
+ (List Battlemap.Location.Type)
+ )
+generate_row src max_x_mod curr_y curr_x_mod curr_row =
+ if (curr_x_mod > max_x_mod)
+ then
+ curr_row
+ else
+ (generate_row
+ src
+ max_x_mod
+ curr_y
+ (curr_x_mod + 1)
+ ({x = (src.x + curr_x_mod), y = curr_y} :: curr_row)
+ )
+
+generate_grid : (
+ Battlemap.Location.Type ->
+ Int ->
Int ->
(List Battlemap.Location.Type) ->
(List Battlemap.Location.Type)
)
-generate_grid src max_dist curr_dist curr_y_mod curr_x_mod curr_list =
- if (curr_x_mod > curr_dist)
+generate_grid src dist curr_y_mod curr_list =
+ if (curr_y_mod > dist)
then
- if (curr_y_mod > max_dist)
- then
- curr_list
- else
- let
- new_limit = (max_dist - (abs curr_y_mod))
- in
- (generate_grid
- src
- max_dist
- new_limit
- (curr_y_mod + 1)
- (-new_limit)
- curr_list
- )
+ curr_list
else
+ let
+ new_limit = (dist - (abs curr_y_mod))
+ in
(generate_grid
src
- max_dist
- curr_dist
- curr_y_mod
- (curr_x_mod + 1)
- ({x = (src.x + curr_x_mod), y = (src.y + curr_y_mod)} :: curr_list)
+ dist
+ (curr_y_mod + 1)
+ (
+ (generate_row
+ src
+ new_limit
+ (src.y + curr_y_mod)
+ (-new_limit)
+ []
+ )
+ ++ curr_list
+ )
)
get_closest : (
@@ -118,7 +134,7 @@ search : (
(Dict.Dict Battlemap.Location.Ref Type)
)
search result remaining dist =
- if (Dict.isEmpty remaining)
+ if (Dict.isEmpty (Debug.log "Search call" remaining))
then
result
else
@@ -207,7 +223,7 @@ generate battlemap location dist =
battlemap
location
dist
- (generate_grid location dist 0 (-dist) (-dist) [])
+ (generate_grid location dist (-dist) [])
Dict.empty
)
dist