| 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 /src/battlemap | |
| parent | 77f0cce032f79c53db70fc2aae0c34b80371dcff (diff) | |
...
Diffstat (limited to 'src/battlemap')
| -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 | 


