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
parentdbad54ad228df4b70f56bf6be1380b6ae3064ac3 (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.elm19
-rw-r--r--client/elm/battlemap/src/Battlemap/RangeIndicator.elm66
-rw-r--r--client/elm/battlemap/src/Battlemap/Tile.elm24
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
+ }