summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2017-12-07 16:51:46 +0100
committernsensfel <SpamShield0@noot-noot.org>2017-12-07 16:51:46 +0100
commit335b70e16d383298c5c06a97ecab51282395afab (patch)
treeef59524b0aedb71b3c989857b2c8eaf731b406c7
parent77f0cce032f79c53db70fc2aae0c34b80371dcff (diff)
...
-rw-r--r--src/battlemap/src/Struct/CharacterTurn.elm54
-rw-r--r--src/battlemap/src/Update/EndTurn.elm9
-rw-r--r--src/battlemap/src/Update/SelectCharacter.elm19
-rw-r--r--src/battlemap/src/Update/SelectTile.elm8
-rw-r--r--src/battlemap/src/View/Battlemap.elm6
-rw-r--r--src/battlemap/src/View/SideBar.elm1
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