summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2017-12-07 16:51:46 +0100 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2017-12-07 16:51:46 +0100 |
commit | 335b70e16d383298c5c06a97ecab51282395afab (patch) | |
tree | ef59524b0aedb71b3c989857b2c8eaf731b406c7 | |
parent | 77f0cce032f79c53db70fc2aae0c34b80371dcff (diff) |
...
-rw-r--r-- | src/battlemap/src/Struct/CharacterTurn.elm | 54 | ||||
-rw-r--r-- | src/battlemap/src/Update/EndTurn.elm | 9 | ||||
-rw-r--r-- | src/battlemap/src/Update/SelectCharacter.elm | 19 | ||||
-rw-r--r-- | src/battlemap/src/Update/SelectTile.elm | 8 | ||||
-rw-r--r-- | src/battlemap/src/View/Battlemap.elm | 6 | ||||
-rw-r--r-- | src/battlemap/src/View/SideBar.elm | 1 |
6 files changed, 73 insertions, 24 deletions
diff --git a/src/battlemap/src/Struct/CharacterTurn.elm b/src/battlemap/src/Struct/CharacterTurn.elm index 0d049e6..ce50eb3 100644 --- a/src/battlemap/src/Struct/CharacterTurn.elm +++ b/src/battlemap/src/Struct/CharacterTurn.elm @@ -21,6 +21,7 @@ import Struct.Battlemap import Struct.Character import Struct.Direction import Struct.Error +import Struct.Navigator -------------------------------------------------------------------------------- -- TYPES ----------------------------------------------------------------------- @@ -36,7 +37,8 @@ type alias Type = state : State, controlled_character : (Maybe Struct.Character.Ref), path : (List Struct.Direction.Type), - targets : (List Struct.Character.Ref) + targets : (List Struct.Character.Ref), + navigator : (Maybe Struct.Navigator.Type) } -------------------------------------------------------------------------------- @@ -52,19 +54,34 @@ new = state = Default, controlled_character = Nothing, path = [], - targets = [] + targets = [], + navigator = Nothing } try_getting_controlled_character : Type -> (Maybe Struct.Character.Ref) try_getting_controlled_character ct = ct.controlled_character -set_controlled_character : Type -> Struct.Character.Ref -> Type -set_controlled_character ct char_ref = +set_controlled_character : ( + Type -> + Struct.Character.Type -> + (Struct.Location.Type -> Int) -> + Type +) +set_controlled_character ct char mov_cost_fun = { state = SelectedCharacter, - controlled_character = (Just char_ref), + controlled_character = (Just (Struct.Character.get_ref char)), path = [], - targets = [] + targets = [], + navigator = + (Just + (Struct.Navigator.new + (Struct.Character.get_location char) + (Struct.Character.get_movement_points char) + (Struct.Character.get_attack_range char) + mov_cost_fun + ) + ) } get_state : Type -> State @@ -73,13 +90,24 @@ get_state ct = ct.state get_path : Type -> (List Struct.Direction.Type) get_path ct = ct.path -set_path : Type -> (List Struct.Direction.Type) -> Type -set_path ct path = - {ct | - state = MovedCharacter, - path = path, - targets = [] - } +try_locking_path : Type -> (Just Type) +try_locking_path ct = + case ct.navigator of + (Just old_nav) -> + {ct | + state = MovedCharacter, + path = (Struct.Navigator.get_path old_nav), + targets = [], + navigator = + (Just + (Struct.Navigator.new + (Struct.Navigator.get_current_location old_nav) + 0 + (Struct.Character.get_attack_range char) + mov_cost_fun + ) + ) + } add_target : Type -> Struct.Character.Ref -> Type add_target ct target_ref = diff --git a/src/battlemap/src/Update/EndTurn.elm b/src/battlemap/src/Update/EndTurn.elm index 9a8a92f..150188a 100644 --- a/src/battlemap/src/Update/EndTurn.elm +++ b/src/battlemap/src/Update/EndTurn.elm @@ -8,6 +8,7 @@ import Send.CharacterTurn import Struct.Battlemap import Struct.Character +import Struct.CharacterTurn import Struct.Error import Struct.Event import Struct.Model @@ -27,7 +28,7 @@ make_it_so model = (Struct.Model.reset model (Dict.update - char_ref + "0" --char_ref (\maybe_char -> case maybe_char of (Just char) -> @@ -68,9 +69,9 @@ make_it_so model = -------------------------------------------------------------------------------- apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type)) apply_to model = - case (Query.CharacterTurn.get_state model.char_turn) of - Query.CharacterTurn.MovedCharacter -> (make_it_so model) - Query.CharacterTurn.ChoseTarget -> (make_it_so model) + case (Struct.CharacterTurn.get_state model.char_turn) of + Struct.CharacterTurn.MovedCharacter -> (make_it_so model) + Struct.CharacterTurn.ChoseTarget -> (make_it_so model) _ -> ( diff --git a/src/battlemap/src/Update/SelectCharacter.elm b/src/battlemap/src/Update/SelectCharacter.elm index 4d90840..5347dec 100644 --- a/src/battlemap/src/Update/SelectCharacter.elm +++ b/src/battlemap/src/Update/SelectCharacter.elm @@ -6,6 +6,7 @@ import Dict -- Battlemap ------------------------------------------------------------------- import Struct.Battlemap import Struct.Character +import Struct.CharacterTurn import Struct.Direction import Struct.Error import Struct.Event @@ -17,7 +18,11 @@ import Update.RequestDirection -------------------------------------------------------------------------------- -- LOCAL ----------------------------------------------------------------------- -------------------------------------------------------------------------------- -autopilot : Struct.Direction.Type -> Struct.Model.Type -> Struct.Model.Type +autopilot : ( + Struct.Direction.Type -> + Struct.Model.Type -> + (Struct.Model.Type, (Cmd Struct.Event.Type)) + ) autopilot dir model = (Update.RequestDirection.apply_to model dir) @@ -45,7 +50,11 @@ select_character model target_char_id target_char = then {model | state = Struct.Model.Default, - controlled_character = (Just target_char_id), + char_turn = + (Struct.CharacterTurn.set_controlled_character + model.char_turn + target_char_id + ), ui = (Struct.UI.set_previous_action model.ui Nothing), battlemap = -- (Struct.Battlemap.set_navigator @@ -83,7 +92,11 @@ apply_to model target_char_id = then case (Dict.get target_char_id model.characters) of (Just target_char) -> - case model.controlled_character of + case + (Struct.CharacterTurn.try_getting_controlled_character + model.char_turn + ) + of (Just main_char_id) -> ( (attack_character diff --git a/src/battlemap/src/Update/SelectTile.elm b/src/battlemap/src/Update/SelectTile.elm index 417aeb7..46f212f 100644 --- a/src/battlemap/src/Update/SelectTile.elm +++ b/src/battlemap/src/Update/SelectTile.elm @@ -28,7 +28,9 @@ go_to_tile : ( (Struct.Model.Type, (Cmd Struct.Event.Type)) ) go_to_tile model char_ref loc_ref = - case (Struct.Battlemap.try_getting_navigator_location model.battlemap) of + case -- (Struct.Battlemap.try_getting_navigator_location model.battlemap) + (Just {x = 0, y = 0}) + of (Just nav_loc) -> if (loc_ref == (Struct.Location.get_ref nav_loc)) then @@ -102,7 +104,9 @@ apply_to : ( (Struct.Model.Type, (Cmd Struct.Event.Type)) ) apply_to model loc_ref = - case model.controlled_character of + case + (Struct.CharacterTurn model.char_turn) + of (Just char_ref) -> (go_to_tile model char_ref loc_ref) diff --git a/src/battlemap/src/View/Battlemap.elm b/src/battlemap/src/View/Battlemap.elm index 5487115..f1643d6 100644 --- a/src/battlemap/src/View/Battlemap.elm +++ b/src/battlemap/src/View/Battlemap.elm @@ -3,6 +3,8 @@ module View.Battlemap exposing (get_html) -- Elm ------------------------------------------------------------------------- import Array +import Dict + import Html import Html.Attributes import Html.Lazy @@ -107,7 +109,7 @@ get_html model = ( "scale(" ++ - (toString (Struct.UI.get_zoom_level model)) + (toString (Struct.UI.get_zoom_level model.ui)) ++ ")" ) ) @@ -119,7 +121,7 @@ get_html model = :: (List.map (View.Battlemap.Character.get_html) - model.characters + (Dict.values model.characters) ) ) ) diff --git a/src/battlemap/src/View/SideBar.elm b/src/battlemap/src/View/SideBar.elm index 4dc2365..d5a8737 100644 --- a/src/battlemap/src/View/SideBar.elm +++ b/src/battlemap/src/View/SideBar.elm @@ -5,6 +5,7 @@ import Html import Html.Attributes -- Battlemap ------------------------------------------------------------------- +import Struct.CharacterTurn import Struct.Event import Struct.Model import Struct.UI |