summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-09-27 11:31:17 +0200 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-09-27 11:31:17 +0200 |
commit | 2d54254e59289c452777fccb1f4d00b56eb7e451 (patch) | |
tree | ab0835ea7a5917a4363539022cbc730e582aed8a /elm/battlemap/src/Update | |
parent | d2b5c94b717e2d1b7b73a74a1f1ec6af70890a96 (diff) |
Improves error msgs & UI controls.
Diffstat (limited to 'elm/battlemap/src/Update')
-rw-r--r-- | elm/battlemap/src/Update/DirectionRequest.elm | 20 | ||||
-rw-r--r-- | elm/battlemap/src/Update/EndTurn.elm | 30 | ||||
-rw-r--r-- | elm/battlemap/src/Update/SelectCharacter.elm | 11 | ||||
-rw-r--r-- | elm/battlemap/src/Update/SelectTile.elm | 25 |
4 files changed, 71 insertions, 15 deletions
diff --git a/elm/battlemap/src/Update/DirectionRequest.elm b/elm/battlemap/src/Update/DirectionRequest.elm index da32240..e069439 100644 --- a/elm/battlemap/src/Update/DirectionRequest.elm +++ b/elm/battlemap/src/Update/DirectionRequest.elm @@ -11,7 +11,14 @@ import Error make_it_so : Model.Type -> Battlemap.Direction.Type -> Model.Type make_it_so model dir = case model.selection of - Nothing -> {model | state = (Model.Error Error.Programming)} + Nothing -> + (Model.invalidate + model + (Error.new + Error.Programming + "DirectionRequest: model moving char, no selection." + ) + ) (Just selection) -> let (new_bmap, new_nav) = @@ -31,7 +38,14 @@ make_it_so model dir = apply_to : Model.Type -> Battlemap.Direction.Type -> Model.Type apply_to model dir = - case model.state of + case (Model.get_state model) of Model.MovingCharacterWithButtons -> (make_it_so model dir) Model.MovingCharacterWithClick -> (make_it_so model dir) - _ -> {model | state = (Model.Error Error.IllegalAction)} + _ -> + (Model.invalidate + model + (Error.new + Error.IllegalAction + "This can only be done while moving a character." + ) + ) diff --git a/elm/battlemap/src/Update/EndTurn.elm b/elm/battlemap/src/Update/EndTurn.elm index b8b4ee5..ce9da28 100644 --- a/elm/battlemap/src/Update/EndTurn.elm +++ b/elm/battlemap/src/Update/EndTurn.elm @@ -14,10 +14,24 @@ import Error make_it_so : Model.Type -> Model.Type make_it_so model = case model.selection of - Nothing -> {model | state = (Model.Error Error.Programming)} + Nothing -> + (Model.invalidate + model + (Error.new + Error.Programming + "EndTurn: model moving char, no selection." + ) + ) (Just selection) -> case (Dict.get selection.character model.characters) of - Nothing -> {model | state = (Model.Error Error.Programming)} + Nothing -> + (Model.invalidate + model + (Error.new + Error.Programming + "EndTurn: model moving char, unknown char selected." + ) + ) (Just char) -> {model | state = Model.Default, @@ -54,8 +68,14 @@ make_it_so model = apply_to : Model.Type -> Model.Type apply_to model = - case model.state of + case (Model.get_state model) of Model.MovingCharacterWithButtons -> (make_it_so model) Model.MovingCharacterWithClick -> (make_it_so model) - _ -> {model | state = (Model.Error Error.IllegalAction)} - + _ -> + (Model.invalidate + model + (Error.new + Error.IllegalAction + "This can only be done while moving a character." + ) + ) diff --git a/elm/battlemap/src/Update/SelectCharacter.elm b/elm/battlemap/src/Update/SelectCharacter.elm index d42c7fc..570f82c 100644 --- a/elm/battlemap/src/Update/SelectCharacter.elm +++ b/elm/battlemap/src/Update/SelectCharacter.elm @@ -44,7 +44,14 @@ display_range dist loc_ref indicator bmap = make_it_so : Model.Type -> Character.Ref -> Model.Type make_it_so model char_id = case (Dict.get char_id model.characters) of - Nothing -> {model | state = (Model.Error Error.Programming)} + Nothing -> + (Model.invalidate + model + (Error.new + Error.Programming + "SelectCharacter: Unknown char selected." + ) + ) (Just char) -> let new_range_indicator = @@ -84,5 +91,5 @@ make_it_so model char_id = apply_to : Model.Type -> Character.Ref -> Model.Type apply_to model char_id = - case model.state of + case (Model.get_state model) of _ -> (make_it_so model char_id) diff --git a/elm/battlemap/src/Update/SelectTile.elm b/elm/battlemap/src/Update/SelectTile.elm index aa89c30..cc2af35 100644 --- a/elm/battlemap/src/Update/SelectTile.elm +++ b/elm/battlemap/src/Update/SelectTile.elm @@ -24,10 +24,18 @@ autopilot dir model = go_to_tile : Model.Type -> Battlemap.Location.Ref -> Model.Type go_to_tile model loc_ref = case model.selection of - Nothing -> {model | state = (Model.Error Error.Programming)} + Nothing -> + (Model.invalidate + model + (Error.new + Error.Programming + "SelectTile: model moving char, no selection." + ) + ) (Just selection) -> case (Dict.get loc_ref selection.range_indicator) of - Nothing -> {model | state = Model.Default, selection = Nothing} + Nothing -> -- Clicked outside of the range indicator + (Model.reset model) (Just indicator) -> let new_model = @@ -69,12 +77,19 @@ go_to_tile model loc_ref = then (Update.EndTurn.apply_to new_model) else - {new_model | state = model.state} + {new_model | state = Model.MovingCharacterWithClick} apply_to : Model.Type -> Battlemap.Location.Ref -> Model.Type apply_to model loc_ref = - case model.state of + case (Model.get_state model) of Model.MovingCharacterWithButtons -> (go_to_tile model loc_ref) Model.MovingCharacterWithClick -> (go_to_tile model loc_ref) - _ -> {model | state = (Model.Error Error.IllegalAction)} + _ -> + (Model.invalidate + model + (Error.new + Error.IllegalAction + "This can only be done while moving a character." + ) + ) |