From b5dc8453a1bb8d1440f2d5530141179b0d905678 Mon Sep 17 00:00:00 2001 From: nsensfel Date: Mon, 19 Feb 2018 15:06:38 +0100 Subject: Found a way for temp. weapon switching. --- src/battlemap/src/Send/CharacterTurn.elm | 10 +++++--- src/battlemap/src/Struct/CharacterTurn.elm | 18 +++++++------- src/battlemap/src/Update/EndTurn.elm | 16 ++++++------- src/battlemap/src/Update/SelectCharacter.elm | 13 ++++------ src/battlemap/src/View/Footer.elm | 36 +++++++++++++++------------- 5 files changed, 47 insertions(+), 46 deletions(-) (limited to 'src/battlemap') diff --git a/src/battlemap/src/Send/CharacterTurn.elm b/src/battlemap/src/Send/CharacterTurn.elm index 79e90a3..06b7665 100644 --- a/src/battlemap/src/Send/CharacterTurn.elm +++ b/src/battlemap/src/Send/CharacterTurn.elm @@ -9,6 +9,7 @@ import Constants.IO import Send.Send import Struct.Battlemap +import Struct.Character import Struct.CharacterTurn import Struct.Direction import Struct.Event @@ -25,9 +26,9 @@ import Struct.UI try_encoding : Struct.Model.Type -> (Maybe Json.Encode.Value) try_encoding model = case - (Struct.CharacterTurn.try_getting_controlled_character model.char_turn) + (Struct.CharacterTurn.try_getting_active_character model.char_turn) of - (Just char_ref) -> + (Just char) -> (Just (Json.Encode.object [ @@ -35,7 +36,10 @@ try_encoding model = ("player_id", (Json.Encode.string model.player_id)), ("battlemap_id", (Json.Encode.string "0")), ("instance_id", (Json.Encode.string "0")), - ("char_id", (Json.Encode.string char_ref)), + ( + "char_id", + (Json.Encode.string (Struct.Character.get_ref char)) + ), ( "path", (Json.Encode.list diff --git a/src/battlemap/src/Struct/CharacterTurn.elm b/src/battlemap/src/Struct/CharacterTurn.elm index 48703fe..ea651c5 100644 --- a/src/battlemap/src/Struct/CharacterTurn.elm +++ b/src/battlemap/src/Struct/CharacterTurn.elm @@ -10,9 +10,9 @@ module Struct.CharacterTurn exposing lock_path, new, remove_target, - set_controlled_character, + set_active_character, set_navigator, - try_getting_controlled_character, + try_getting_active_character, try_getting_navigator ) @@ -38,7 +38,7 @@ type State = type alias Type = { state : State, - controlled_character : (Maybe Struct.Character.Ref), + active_character : (Maybe Struct.Character.Type), path : (List Struct.Direction.Type), targets : (List Struct.Character.Ref), navigator : (Maybe Struct.Navigator.Type) @@ -55,29 +55,29 @@ new : Type new = { state = Default, - controlled_character = Nothing, + active_character = Nothing, path = [], targets = [], navigator = Nothing } -try_getting_controlled_character : Type -> (Maybe Struct.Character.Ref) -try_getting_controlled_character ct = ct.controlled_character +try_getting_active_character : Type -> (Maybe Struct.Character.Type) +try_getting_active_character ct = ct.active_character can_select_targets : Type -> Bool can_select_targets ct = ((ct.state == MovedCharacter) || ((ct.state == ChoseTarget))) -set_controlled_character : ( +set_active_character : ( Type -> Struct.Character.Type -> Type ) -set_controlled_character ct char = +set_active_character ct char = {ct | state = SelectedCharacter, - controlled_character = (Just (Struct.Character.get_ref char)), + active_character = (Just char), path = [], targets = [], navigator = Nothing diff --git a/src/battlemap/src/Update/EndTurn.elm b/src/battlemap/src/Update/EndTurn.elm index f3e275c..1a909d9 100644 --- a/src/battlemap/src/Update/EndTurn.elm +++ b/src/battlemap/src/Update/EndTurn.elm @@ -19,18 +19,18 @@ import Struct.Navigator -------------------------------------------------------------------------------- make_it_so : ( Struct.Model.Type -> - Struct.Character.Ref -> + Struct.Character.Type -> Struct.Navigator.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) ) -make_it_so model char_id nav = +make_it_so model char nav = case (Send.CharacterTurn.try model) of (Just cmd) -> ( (Struct.Model.reset model (Dict.update - char_id + (Struct.Character.get_ref char) (\maybe_char -> case maybe_char of (Just char) -> @@ -62,7 +62,7 @@ apply_to model = case ( (Struct.CharacterTurn.get_state model.char_turn), - (Struct.CharacterTurn.try_getting_controlled_character + (Struct.CharacterTurn.try_getting_active_character model.char_turn ), (Struct.CharacterTurn.try_getting_navigator model.char_turn) @@ -70,17 +70,17 @@ apply_to model = of ( Struct.CharacterTurn.MovedCharacter, - (Just char_id), + (Just char), (Just nav) ) -> - (make_it_so model char_id nav) + (make_it_so model char nav) ( Struct.CharacterTurn.ChoseTarget, - (Just char_id), + (Just char), (Just nav) ) -> - (make_it_so model char_id nav) + (make_it_so model char nav) (_, _, _) -> ( diff --git a/src/battlemap/src/Update/SelectCharacter.elm b/src/battlemap/src/Update/SelectCharacter.elm index a1062c0..0dbe923 100644 --- a/src/battlemap/src/Update/SelectCharacter.elm +++ b/src/battlemap/src/Update/SelectCharacter.elm @@ -7,7 +7,6 @@ import Dict import Struct.Battlemap import Struct.Character import Struct.CharacterTurn -import Struct.Direction import Struct.Error import Struct.Event import Struct.Location @@ -16,19 +15,16 @@ import Struct.Navigator import Struct.Statistics import Struct.UI -import Update.RequestDirection - -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- -------------------------------------------------------------------------------- attack_character : ( Struct.Model.Type -> Struct.Character.Ref -> - Struct.Character.Ref -> Struct.Character.Type -> Struct.Model.Type ) -attack_character model main_char_id target_char_id target_char = +attack_character model target_char_id target_char = {model | char_turn = (Struct.CharacterTurn.add_target model.char_turn target_char_id), @@ -48,7 +44,7 @@ ctrl_or_focus_character model target_char_id target_char = {model | char_turn = (Struct.CharacterTurn.set_navigator - (Struct.CharacterTurn.set_controlled_character + (Struct.CharacterTurn.set_active_character model.char_turn target_char ) @@ -117,17 +113,16 @@ double_clicked_character model target_char_id = case (Dict.get target_char_id model.characters) of (Just target_char) -> case - (Struct.CharacterTurn.try_getting_controlled_character + (Struct.CharacterTurn.try_getting_active_character model.char_turn ) of - (Just main_char_id) -> + (Just _) -> if (can_target_character model target_char) then ( (attack_character model - main_char_id target_char_id target_char ), diff --git a/src/battlemap/src/View/Footer.elm b/src/battlemap/src/View/Footer.elm index 8fa5bd9..47443ed 100644 --- a/src/battlemap/src/View/Footer.elm +++ b/src/battlemap/src/View/Footer.elm @@ -39,12 +39,11 @@ inventory_button = get_navigator_info : ( Struct.Model.Type -> - Struct.Character.Type-> String ) get_navigator_info model char = case - (Struct.CharacterTurn.try_getting_navigator model.char_turn) + (Struct.CharacterTurn.try_getting_active_character model.char_turn) of (Just nav) -> ( @@ -60,21 +59,18 @@ get_navigator_info model char = ) _ -> - "[Error: Unknown character selected.]" + "[Error: Character selected yet navigator undefined.]" get_curr_char_info_htmls : ( Struct.Model.Type -> - Struct.Character.Ref -> + Struct.Character.Type -> (List (Html.Html Struct.Event.Type)) ) -get_curr_char_info_htmls model char_ref = +get_curr_char_info_htmls model char = case - ( - (Struct.CharacterTurn.get_state model.char_turn), - (Dict.get char_ref model.characters) - ) + (Struct.CharacterTurn.get_state model.char_turn) of - (Struct.CharacterTurn.SelectedCharacter, (Just char)) -> + Struct.CharacterTurn.SelectedCharacter -> [ (Html.text ( @@ -88,7 +84,7 @@ get_curr_char_info_htmls model char_ref = (inventory_button) ] - (Struct.CharacterTurn.MovedCharacter, (Just char)) -> + Struct.CharacterTurn.MovedCharacter -> [ (Html.text ( @@ -100,7 +96,7 @@ get_curr_char_info_htmls model char_ref = (end_turn_button) ] - (Struct.CharacterTurn.ChoseTarget, (Just char)) -> + Struct.CharacterTurn.ChoseTarget -> [ (Html.text ( @@ -112,8 +108,14 @@ get_curr_char_info_htmls model char_ref = (end_turn_button) ] - (_, _) -> - [(Html.text "Error: Unknown character selected.")] + _ -> + [ + (Html.text + "Error: CharacterTurn structure in an inconsistent state:" + ++ " Has an active character yet the 'state' is not any of those" + ++ " expected in such cases." + ) + ] -------------------------------------------------------------------------------- -- EXPORTED -------------------------------------------------------------------- @@ -121,12 +123,12 @@ get_curr_char_info_htmls model char_ref = get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type) get_html model = case - (Struct.CharacterTurn.try_getting_controlled_character model.char_turn) + (Struct.CharacterTurn.try_getting_active_character model.char_turn) of - (Just char_id) -> + (Just char) -> (Html.div [(Html.Attributes.class "battlemap-footer")] - (get_curr_char_info_htmls model char_id) + (get_curr_char_info_htmls model char) ) Nothing -> (Util.Html.nothing) -- cgit v1.2.3-70-g09d2