summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-09-23 20:26:52 +0200 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-09-23 20:26:52 +0200 |
commit | 568309d0cfb5114accbc21962d5d23c3b9bf7036 (patch) | |
tree | 3db7174f104eba060dd1e6b545c74f984e209139 /client/elm/battlemap/src/Battlemap | |
parent | dbad54ad228df4b70f56bf6be1380b6ae3064ac3 (diff) |
Fixes "Too much recursion" and some similar issues
Diffstat (limited to 'client/elm/battlemap/src/Battlemap')
-rw-r--r-- | client/elm/battlemap/src/Battlemap/Html.elm | 19 | ||||
-rw-r--r-- | client/elm/battlemap/src/Battlemap/RangeIndicator.elm | 66 | ||||
-rw-r--r-- | client/elm/battlemap/src/Battlemap/Tile.elm | 24 |
3 files changed, 70 insertions, 39 deletions
diff --git a/client/elm/battlemap/src/Battlemap/Html.elm b/client/elm/battlemap/src/Battlemap/Html.elm index e474901..f67bdf0 100644 --- a/client/elm/battlemap/src/Battlemap/Html.elm +++ b/client/elm/battlemap/src/Battlemap/Html.elm @@ -35,7 +35,13 @@ view_battlemap_cell t = (Html.td [] [ - (Html.text "[_]"), + (Html.text + (case t.mod_level of + Nothing -> "[_]" + (Just Battlemap.Tile.CanBeReached) -> "[M]" + (Just Battlemap.Tile.CanBeAttacked) -> "[A]" + ) + ), (Html.text (nav_level_to_text t)) ] ) @@ -73,16 +79,7 @@ grid_builder_to_html gb = then gb.columns else - (grid_builder_to_html - {gb | - row = [], - row_size = 0, - columns = - ( - (Html.tr [] gb.row) :: gb.columns - ) - } - ) + ((Html.tr [] gb.row) :: gb.columns) view : Battlemap.Type -> (Html.Html Update.Type) view battlemap = 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 diff --git a/client/elm/battlemap/src/Battlemap/Tile.elm b/client/elm/battlemap/src/Battlemap/Tile.elm index 068ee30..6d2a65b 100644 --- a/client/elm/battlemap/src/Battlemap/Tile.elm +++ b/client/elm/battlemap/src/Battlemap/Tile.elm @@ -1,14 +1,25 @@ -module Battlemap.Tile exposing (Type, set_direction, set_navigation) +module Battlemap.Tile exposing + ( + Type, + TileModifier(..), + set_direction, + set_navigation, + reset_tile + ) import Battlemap.Direction import Character +type TileModifier = + CanBeReached + | CanBeAttacked + type alias Type = { floor_level : Int, nav_level : Battlemap.Direction.Type, - char_level : (Maybe Character.Ref) --- mod_level : (Set TileModifier) + char_level : (Maybe Character.Ref), + mod_level : (Maybe TileModifier) } set_direction : Battlemap.Direction.Type -> Type -> Type @@ -22,3 +33,10 @@ set_navigation dir t = {t | nav_level = dir } + +reset_tile : Type -> Type +reset_tile t = + {t | + nav_level = Battlemap.Direction.None, + mod_level = Nothing + } |