summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mk/preprocessor.mk7
-rw-r--r--src/battlemap/src/ElmModule/Update.elm4
-rw-r--r--src/battlemap/src/Struct/Character.elm6
-rw-r--r--src/battlemap/src/Struct/Event.elm23
-rw-r--r--src/battlemap/src/Update/LookForCharacter.elm54
-rw-r--r--src/battlemap/src/View/Character.elm5
-rw-r--r--src/battlemap/www/style.css5
7 files changed, 85 insertions, 19 deletions
diff --git a/mk/preprocessor.mk b/mk/preprocessor.mk
index a279d12..285c9fa 100644
--- a/mk/preprocessor.mk
+++ b/mk/preprocessor.mk
@@ -24,5 +24,8 @@ PREPROCESSOR_RESULT = $(PREPROCESSED_FILES)
################################################################################
## INTERNAL RULES ##############################################################
################################################################################
-$(PREPROCESSED_FILES): %: $(CONFIG_FILE) %.m4
- m4 -P $^ > $@
+$(PREPROCESSED_FILES): %: %.m4 .PHONY
+ m4 -P $(CONFIG_FILE) $< > $@
+
+.PHONY:
+
diff --git a/src/battlemap/src/ElmModule/Update.elm b/src/battlemap/src/ElmModule/Update.elm
index 14fd7f3..da3b014 100644
--- a/src/battlemap/src/ElmModule/Update.elm
+++ b/src/battlemap/src/ElmModule/Update.elm
@@ -12,6 +12,7 @@ import Update.ChangeScale
import Update.DisplayCharacterInfo
import Update.EndTurn
import Update.HandleServerReply
+import Update.LookForCharacter
import Update.RequestDirection
import Update.SelectCharacter
import Update.SelectTab
@@ -61,6 +62,9 @@ update event model =
(Struct.Event.CharacterInfoRequested char_id) ->
(Update.DisplayCharacterInfo.apply_to new_model char_id)
+ (Struct.Event.LookingForCharacter char_id) ->
+ (Update.LookForCharacter.apply_to new_model char_id)
+
Struct.Event.TurnEnded ->
(Update.EndTurn.apply_to new_model)
diff --git a/src/battlemap/src/Struct/Character.elm b/src/battlemap/src/Struct/Character.elm
index 332c2fd..630befd 100644
--- a/src/battlemap/src/Struct/Character.elm
+++ b/src/battlemap/src/Struct/Character.elm
@@ -163,11 +163,7 @@ set_weapons : Struct.WeaponSet.Type -> Type -> Type
set_weapons weapons char =
{char |
weapons = weapons,
- statistics =
- (Struct.Statistics.new
- char.attributes
- weapons
- )
+ statistics = (Struct.Statistics.new char.attributes weapons)
}
decoder : (
diff --git a/src/battlemap/src/Struct/Event.elm b/src/battlemap/src/Struct/Event.elm
index 0aaa774..13d42fe 100644
--- a/src/battlemap/src/Struct/Event.elm
+++ b/src/battlemap/src/Struct/Event.elm
@@ -15,21 +15,22 @@ import Struct.UI
-- TYPES -----------------------------------------------------------------------
--------------------------------------------------------------------------------
type Type =
- DirectionRequested Struct.Direction.Type
- | TileSelected Struct.Location.Ref
- | CharacterSelected Struct.Character.Ref
+ AbortTurnRequest
+ | AttackWithoutMovingRequest
| CharacterInfoRequested Struct.Character.Ref
- | TurnEnded
+ | CharacterSelected Struct.Character.Ref
+ | DebugLoadBattlemapRequest
+ | DebugTeamSwitchRequest
+ | DirectionRequested Struct.Direction.Type
+ | Failed Struct.Error.Type
+ | LookingForCharacter Struct.Character.Ref
+ | None
| ScaleChangeRequested Float
- | TabSelected Struct.UI.Tab
| ServerReplied (Result Http.Error (List Struct.ServerReply.Type))
- | DebugTeamSwitchRequest
- | DebugLoadBattlemapRequest
+ | TabSelected Struct.UI.Tab
+ | TileSelected Struct.Location.Ref
+ | TurnEnded
| WeaponSwitchRequest
- | AttackWithoutMovingRequest
- | AbortTurnRequest
- | None
- | Failed Struct.Error.Type
attempted : (Result.Result err val) -> Type
attempted act =
diff --git a/src/battlemap/src/Update/LookForCharacter.elm b/src/battlemap/src/Update/LookForCharacter.elm
new file mode 100644
index 0000000..4618a13
--- /dev/null
+++ b/src/battlemap/src/Update/LookForCharacter.elm
@@ -0,0 +1,54 @@
+module Update.LookForCharacter exposing (apply_to)
+-- Elm -------------------------------------------------------------------------
+import Dict
+import Task
+
+-- Battlemap -------------------------------------------------------------------
+import Action.Scroll
+
+import Struct.Character
+import Struct.Event
+import Struct.Model
+import Struct.UI
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+scroll_to_char : (
+ Struct.Model.Type ->
+ Struct.Character.Ref ->
+ (Cmd Struct.Event.Type)
+ )
+scroll_to_char model char_ref =
+ case (Dict.get char_ref model.characters) of
+ (Just char) ->
+ (Task.attempt
+ (Struct.Event.attempted)
+ (Action.Scroll.to
+ (Struct.Character.get_location char)
+ model.ui
+ )
+ )
+
+ Nothing ->
+ Cmd.none
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+apply_to : (
+ Struct.Model.Type ->
+ Struct.Character.Ref ->
+ (Struct.Model.Type, (Cmd Struct.Event.Type))
+ )
+apply_to model target_ref =
+ (
+ {model |
+ ui =
+ (Struct.UI.set_previous_action
+ (Just (Struct.UI.SelectedCharacter target_ref))
+ model.ui
+ )
+ },
+ (scroll_to_char model target_ref)
+ )
diff --git a/src/battlemap/src/View/Character.elm b/src/battlemap/src/View/Character.elm
index e3ff30b..c34d4d2 100644
--- a/src/battlemap/src/View/Character.elm
+++ b/src/battlemap/src/View/Character.elm
@@ -201,7 +201,10 @@ get_portrait_html viewer_id char =
"battlemap-character-enemy"
)
),
- (Html.Attributes.class "battlemap-character-portrait")
+ (Html.Attributes.class "battlemap-character-portrait"),
+ (Html.Events.onClick
+ (Struct.Event.LookingForCharacter (Struct.Character.get_ref char))
+ )
]
[
(get_portrait_body_html char),
diff --git a/src/battlemap/www/style.css b/src/battlemap/www/style.css
index e2b5151..20c1da6 100644
--- a/src/battlemap/www/style.css
+++ b/src/battlemap/www/style.css
@@ -214,6 +214,11 @@
flex-wrap: wrap;
}
+.battlemap-character-portrait:hover
+{
+ cursor: pointer;
+}
+
.battlemap-character-portrait
{
margin: 0.5em;