aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'elm/battlemap/src/Model/SelectCharacter.elm')
-rw-r--r--elm/battlemap/src/Model/SelectCharacter.elm42
1 files changed, 42 insertions, 0 deletions
diff --git a/elm/battlemap/src/Model/SelectCharacter.elm b/elm/battlemap/src/Model/SelectCharacter.elm
new file mode 100644
index 0000000..942e84d
--- /dev/null
+++ b/elm/battlemap/src/Model/SelectCharacter.elm
@@ -0,0 +1,42 @@
+module Model.SelectCharacter exposing (apply_to)
+
+import Dict
+
+import Character
+
+import Battlemap
+
+import Model
+import Event
+import Error
+
+make_it_so : Model.Type -> Character.Ref -> Model.Type
+make_it_so model char_id =
+ case (Dict.get char_id model.characters) of
+ (Just char) ->
+ {model |
+ state = Model.MovingCharacterWithClick,
+ selection = (Model.SelectedCharacter char_id),
+ battlemap =
+ (Battlemap.set_navigator
+ (Character.get_location char)
+ (Character.get_movement_points char)
+ (Character.get_attack_range char)
+ (\e -> True) -- TODO: check for characters.
+ model.battlemap
+ )
+ }
+
+ Nothing ->
+ (Model.invalidate
+ model
+ (Error.new
+ Error.Programming
+ "SelectCharacter: Unknown char selected."
+ )
+ )
+
+apply_to : Model.Type -> Character.Ref -> Model.Type
+apply_to model char_id =
+ case (Model.get_state model) of
+ _ -> (make_it_so model char_id)