summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2017-12-01 16:36:18 +0100
committernsensfel <SpamShield0@noot-noot.org>2017-12-01 16:36:18 +0100
commitc5578c282d0737c4616adcc87132b7f099e1ac0c (patch)
tree30c3f66f0da6750765919a7bdb053919464c80c9 /src
parent7d71e3aa31aa569f2332166cb2d4ff9b774169e9 (diff)
Starting a new reorganization...
Diffstat (limited to 'src')
-rw-r--r--src/battlemap/src/Model.elm11
-rw-r--r--src/battlemap/src/Model/EndTurn.elm10
-rw-r--r--src/battlemap/src/Query/CharacterTurn.elm115
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