summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'client/elm/battlemap/src/Update')
-rw-r--r--client/elm/battlemap/src/Update/DirectionRequest.elm28
-rw-r--r--client/elm/battlemap/src/Update/EndTurn.elm48
-rw-r--r--client/elm/battlemap/src/Update/SelectCharacter.elm32
3 files changed, 108 insertions, 0 deletions
diff --git a/client/elm/battlemap/src/Update/DirectionRequest.elm b/client/elm/battlemap/src/Update/DirectionRequest.elm
new file mode 100644
index 0000000..6f30866
--- /dev/null
+++ b/client/elm/battlemap/src/Update/DirectionRequest.elm
@@ -0,0 +1,28 @@
+module Update.DirectionRequest exposing (apply_to)
+
+import Dict
+
+import Battlemap.Direction
+import Battlemap.Navigator
+
+import Model
+
+apply_to : Model.Type -> Battlemap.Direction.Type -> Model.Type
+apply_to model dir =
+ case (model.selection, model.navigator) of
+ (Nothing, _) -> model
+ (_ , Nothing) -> model
+ ((Just char_id), (Just nav)) ->
+ let
+ (new_bmap, new_nav) =
+ (Battlemap.Navigator.go
+ model.battlemap
+ nav
+ dir
+ (Dict.values model.characters)
+ )
+ in
+ {model |
+ battlemap = new_bmap,
+ navigator = (Just new_nav)
+ }
diff --git a/client/elm/battlemap/src/Update/EndTurn.elm b/client/elm/battlemap/src/Update/EndTurn.elm
new file mode 100644
index 0000000..3fb479b
--- /dev/null
+++ b/client/elm/battlemap/src/Update/EndTurn.elm
@@ -0,0 +1,48 @@
+module Update.EndTurn exposing (apply_to)
+
+import Dict
+
+import Battlemap
+import Battlemap.Navigator
+
+import Model
+
+update_model : Model.Type -> Battlemap.Navigator.Type -> String -> Model.Type
+update_model model nav char_id =
+ case (Dict.get char_id model.characters) of
+ Nothing -> model
+ (Just char) ->
+ {model |
+ navigator = Nothing,
+ battlemap =
+ (Battlemap.apply_to_all_tiles
+ (Battlemap.apply_to_tile_unsafe
+ (Battlemap.apply_to_tile_unsafe
+ model.battlemap
+ char.location
+ (\t -> {t | char_level = Nothing})
+ )
+ nav.current_location
+ (\t -> {t | char_level = (Just char_id)})
+ )
+ (Battlemap.Navigator.reset_navigation)
+ ),
+ characters =
+ (Dict.update
+ char_id
+ (\mc ->
+ case mc of
+ Nothing -> Nothing
+ (Just c) ->
+ (Just {c | location = nav.current_location})
+ )
+ model.characters
+ )
+ }
+
+apply_to : Model.Type -> Model.Type
+apply_to model =
+ case (model.navigator, model.selection) of
+ (_, Nothing) -> model
+ (Nothing, _) -> model
+ ((Just nav), (Just char_id)) -> (update_model model nav char_id)
diff --git a/client/elm/battlemap/src/Update/SelectCharacter.elm b/client/elm/battlemap/src/Update/SelectCharacter.elm
new file mode 100644
index 0000000..c9c1c94
--- /dev/null
+++ b/client/elm/battlemap/src/Update/SelectCharacter.elm
@@ -0,0 +1,32 @@
+module Update.SelectCharacter exposing (apply_to)
+
+import Dict
+
+import Character
+
+import Battlemap
+import Battlemap.Navigator
+
+import Model
+
+apply_to : Model.Type -> Character.Ref -> Model.Type
+apply_to model char_id =
+ {model |
+ selection = (Just char_id),
+ battlemap =
+ (Battlemap.apply_to_all_tiles
+ model.battlemap
+ (Battlemap.Navigator.reset_navigation)
+ ),
+ navigator =
+ (case (Dict.get char_id model.characters) of
+ Nothing -> Nothing
+ (Just char) ->
+ (Just
+ (Battlemap.Navigator.new_navigator
+ char.location
+ char.movement_points
+ )
+ )
+ )
+ }