From 8ff8836f0011d08c0814b68a6e3dad381e4f591f Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Wed, 23 May 2018 22:46:28 +0200 Subject: Forces preprocessor, locate char on portrait click This might actually make the Timeline more user friendly. --- mk/preprocessor.mk | 7 +++- src/battlemap/src/ElmModule/Update.elm | 4 ++ src/battlemap/src/Struct/Character.elm | 6 +-- src/battlemap/src/Struct/Event.elm | 23 ++++++------ src/battlemap/src/Update/LookForCharacter.elm | 54 +++++++++++++++++++++++++++ src/battlemap/src/View/Character.elm | 5 ++- src/battlemap/www/style.css | 5 +++ 7 files changed, 85 insertions(+), 19 deletions(-) create mode 100644 src/battlemap/src/Update/LookForCharacter.elm 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; -- cgit v1.2.3-70-g09d2