summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-09-22 14:35:25 +0200 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-09-22 14:35:25 +0200 |
commit | 16abf2b1e598cb89a1d4251c2313e6f2e165f7da (patch) | |
tree | 403fcc9802772a54fe006f883addd4a8b3b49d16 /client/elm/battlemap/src/Update | |
parent | 2d20dc042a386bc9f66bc5f535403227f9acf1b1 (diff) |
Clears up Update.elm a bit.
Diffstat (limited to 'client/elm/battlemap/src/Update')
-rw-r--r-- | client/elm/battlemap/src/Update/DirectionRequest.elm | 28 | ||||
-rw-r--r-- | client/elm/battlemap/src/Update/EndTurn.elm | 48 | ||||
-rw-r--r-- | client/elm/battlemap/src/Update/SelectCharacter.elm | 32 |
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 + ) + ) + ) + } |