| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2017-12-01 16:36:18 +0100 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2017-12-01 16:36:18 +0100 | 
| commit | c5578c282d0737c4616adcc87132b7f099e1ac0c (patch) | |
| tree | 30c3f66f0da6750765919a7bdb053919464c80c9 /src/battlemap | |
| parent | 7d71e3aa31aa569f2332166cb2d4ff9b774169e9 (diff) | |
Starting a new reorganization...
Diffstat (limited to 'src/battlemap')
| -rw-r--r-- | src/battlemap/src/Model.elm | 11 | ||||
| -rw-r--r-- | src/battlemap/src/Model/EndTurn.elm | 10 | ||||
| -rw-r--r-- | src/battlemap/src/Query/CharacterTurn.elm | 115 | 
3 files changed, 125 insertions, 11 deletions
| diff --git a/src/battlemap/src/Model.elm b/src/battlemap/src/Model.elm index 4eb170a..9798149 100644 --- a/src/battlemap/src/Model.elm +++ b/src/battlemap/src/Model.elm @@ -22,6 +22,7 @@ import Error  import Character +import Query.CharacterTurn  --------------------------------------------------------------------------------  -- TYPES -----------------------------------------------------------------------  -------------------------------------------------------------------------------- @@ -37,10 +38,9 @@ type alias Type =        characters: (Dict.Dict Character.Ref Character.Type),        error: (Maybe Error.Type),        controlled_team: Int, -      controlled_character: (Maybe Character.Ref), -      targets: (List Character.Ref),        player_id: String, -      ui: UI.Type +      ui: UI.Type, +      char_turn: Query.CharacterTurn     }  -------------------------------------------------------------------------------- @@ -71,9 +71,8 @@ reset model characters =        battlemap = (Battlemap.reset model.battlemap),        characters = characters,        error = Nothing, -      controlled_character = Nothing, -      targets = [], -      ui = (UI.set_previous_action model.ui Nothing) +      ui = (UI.set_previous_action model.ui Nothing), +      char_turn = (Query.CharacterTurn.new)     }  invalidate : Type -> Error.Type -> Type diff --git a/src/battlemap/src/Model/EndTurn.elm b/src/battlemap/src/Model/EndTurn.elm index f26beba..fd0ec83 100644 --- a/src/battlemap/src/Model/EndTurn.elm +++ b/src/battlemap/src/Model/EndTurn.elm @@ -17,8 +17,8 @@ import Send.CharacterTurn  --------------------------------------------------------------------------------  -- LOCAL -----------------------------------------------------------------------  -------------------------------------------------------------------------------- -make_it_so : Model.Type -> Character.Ref -> (Model.Type, (Cmd Event.Type)) -make_it_so model char_ref = +make_it_so : Model.Type -> (Model.Type, (Cmd Event.Type)) +make_it_so model =     case (Battlemap.try_getting_navigator_location model.battlemap) of        (Just location) ->           case (Send.CharacterTurn.try model) of @@ -65,9 +65,9 @@ make_it_so model char_ref =  --------------------------------------------------------------------------------  apply_to : Model.Type -> (Model.Type, (Cmd Event.Type))  apply_to model = -   case model.controlled_character of -      (Just char_ref) -> -         (make_it_so model char_ref) +   case (Query.CharacterTurn.get_state model.char_turn) of +      Query.CharacterTurn.MovedCharacter -> (make_it_so model) +      Query.CharacterTurn.ChoseTarget -> (make_it_so model)        _ ->           ( diff --git a/src/battlemap/src/Query/CharacterTurn.elm b/src/battlemap/src/Query/CharacterTurn.elm new file mode 100644 index 0000000..ec7efa0 --- /dev/null +++ b/src/battlemap/src/Query/CharacterTurn.elm @@ -0,0 +1,115 @@ +module Query.CharacterTurn exposing +   ( +      Type, +      State(..), +      new, +      try_getting_controlled_character, +      set_controlled_character, +      get_state, +      get_path, +      set_path, +      add_target, +      remove_target, +      get_targets +   ) + +-- Elm ------------------------------------------------------------------------- +import List + +-- Battlemap ------------------------------------------------------------------- +import Battlemap +import Battlemap.Direction + +import UI + +import Error + +import Character + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +type State = +   Default +   | SelectedCharacter +   | MovedCharacter +   | ChoseTarget + +type alias Type = +   { +      state : State, +      controlled_character : (Maybe Character.Ref), +      path : (List Battlemap.Direction.Type), +      targets : (List Character.Ref) +   } + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +new : Type +new = +   { +      state = Default, +      controlled_character = Nothing, +      path = [], +      targets = [] +   } + +try_getting_controlled_character : Type -> (Maybe Character.Ref) +try_getting_controlled_character ct = ct.controlled_character + +set_controlled_character : Type -> Character.Ref -> Type +set_controlled_character ct char_ref = +   { +      state = SelectedCharacter, +      controlled_character = (Just char_ref), +      path = [], +      targets = [] +   } + +get_state : Type -> State +get_state ct = ct.state + +get_path : Type -> (List Battlemap.Direction.Type) +get_path ct = ct.path + +set_path : Type -> (List Battlemap.Direction.Type) -> Type +set_path ct path = +   {ct | +      state = MovedCharacter, +      path = path, +      targets = [] +   } + +add_target : Type -> Character.Ref -> Type +add_target ct target_ref = +   {ct | +      state = ChoseTarget, +      targets = (List.append ct.targets [target_ref]) +   } + +remove_target : Type -> Int -> Type +remove_target ct i = +   let +      new_targets = (List.drop i ct.list) +   in +      case new_targets of +         [] -> +            {ct | +               state = MovedCharacter, +               path = path, +               targets = [] +            } + +         _ -> +            {ct | +               state = ChoseTarget, +               targets = new_targets +            } + +get_targets : Type -> (List Character.Ref) +get_targets ct = ct.targets | 


