summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-07-11 17:56:00 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-07-11 17:56:00 +0200
commit93b51e71e7009a286b6cf168bb59bcea1c83bd89 (patch)
treefb64151e76c1602e130ffb828f2d480a1a5b444f /src/battlemap
parentf974d5b263140d8564d7e36ed8cfd0eac1734e2c (diff)
"Battlemap" -> "Battle".
Diffstat (limited to 'src/battlemap')
-rw-r--r--src/battlemap/Makefile36
-rw-r--r--src/battlemap/elm-package.json19
-rw-r--r--src/battlemap/src/Action/Scroll.elm62
-rw-r--r--src/battlemap/src/Comm/AddArmor.elm24
-rw-r--r--src/battlemap/src/Comm/AddChar.elm28
-rw-r--r--src/battlemap/src/Comm/AddTile.elm24
-rw-r--r--src/battlemap/src/Comm/AddWeapon.elm24
-rw-r--r--src/battlemap/src/Comm/CharacterTurn.elm129
-rw-r--r--src/battlemap/src/Comm/LoadBattlemap.elm42
-rw-r--r--src/battlemap/src/Comm/Send.elm76
-rw-r--r--src/battlemap/src/Comm/SetMap.elm62
-rw-r--r--src/battlemap/src/Comm/SetTimeline.elm27
-rw-r--r--src/battlemap/src/Comm/TurnResults.elm28
-rw-r--r--src/battlemap/src/Constants/IO.elm.m416
-rw-r--r--src/battlemap/src/Constants/Movement.elm10
-rw-r--r--src/battlemap/src/Constants/UI.elm16
-rw-r--r--src/battlemap/src/ElmModule/Init.elm28
-rw-r--r--src/battlemap/src/ElmModule/Subscriptions.elm17
-rw-r--r--src/battlemap/src/ElmModule/Update.elm106
-rw-r--r--src/battlemap/src/ElmModule/View.elm57
-rw-r--r--src/battlemap/src/Main.elm23
-rw-r--r--src/battlemap/src/Struct/Armor.elm177
-rw-r--r--src/battlemap/src/Struct/Attack.elm148
-rw-r--r--src/battlemap/src/Struct/Attributes.elm134
-rw-r--r--src/battlemap/src/Struct/Battlemap.elm123
-rw-r--r--src/battlemap/src/Struct/Character.elm238
-rw-r--r--src/battlemap/src/Struct/CharacterTurn.elm134
-rw-r--r--src/battlemap/src/Struct/Direction.elm52
-rw-r--r--src/battlemap/src/Struct/Error.elm45
-rw-r--r--src/battlemap/src/Struct/Event.elm44
-rw-r--r--src/battlemap/src/Struct/Flags.elm42
-rw-r--r--src/battlemap/src/Struct/HelpRequest.elm13
-rw-r--r--src/battlemap/src/Struct/Location.elm59
-rw-r--r--src/battlemap/src/Struct/Marker.elm10
-rw-r--r--src/battlemap/src/Struct/Model.elm254
-rw-r--r--src/battlemap/src/Struct/Navigator.elm192
-rw-r--r--src/battlemap/src/Struct/Path.elm175
-rw-r--r--src/battlemap/src/Struct/RangeIndicator.elm344
-rw-r--r--src/battlemap/src/Struct/ServerReply.elm33
-rw-r--r--src/battlemap/src/Struct/Statistics.elm176
-rw-r--r--src/battlemap/src/Struct/Tile.elm203
-rw-r--r--src/battlemap/src/Struct/TurnResult.elm502
-rw-r--r--src/battlemap/src/Struct/TurnResultAnimator.elm123
-rw-r--r--src/battlemap/src/Struct/UI.elm135
-rw-r--r--src/battlemap/src/Struct/Weapon.elm248
-rw-r--r--src/battlemap/src/Struct/WeaponSet.elm39
-rw-r--r--src/battlemap/src/Update/AbortTurn.elm24
-rw-r--r--src/battlemap/src/Update/AttackWithoutMoving.elm45
-rw-r--r--src/battlemap/src/Update/ChangeScale.elm26
-rw-r--r--src/battlemap/src/Update/DisplayCharacterInfo.elm53
-rw-r--r--src/battlemap/src/Update/EndTurn.elm91
-rw-r--r--src/battlemap/src/Update/HandleAnimationEnded.elm127
-rw-r--r--src/battlemap/src/Update/HandleServerReply.elm230
-rw-r--r--src/battlemap/src/Update/LookForCharacter.elm54
-rw-r--r--src/battlemap/src/Update/RequestDirection.elm76
-rw-r--r--src/battlemap/src/Update/SelectCharacter.elm298
-rw-r--r--src/battlemap/src/Update/SelectCharacterOrTile.elm52
-rw-r--r--src/battlemap/src/Update/SelectTab.elm32
-rw-r--r--src/battlemap/src/Update/SelectTile.elm158
-rw-r--r--src/battlemap/src/Update/SendLoadBattlemapRequest.elm29
-rw-r--r--src/battlemap/src/Update/SetRequestedHelp.elm22
-rw-r--r--src/battlemap/src/Update/SwitchTeam.elm30
-rw-r--r--src/battlemap/src/Update/SwitchWeapon.elm100
-rw-r--r--src/battlemap/src/Update/TestAnimation.elm27
-rw-r--r--src/battlemap/src/Util/Array.elm34
-rw-r--r--src/battlemap/src/Util/Html.elm6
-rw-r--r--src/battlemap/src/Util/List.elm16
-rw-r--r--src/battlemap/src/View/Battlemap.elm162
-rw-r--r--src/battlemap/src/View/Battlemap/Character.elm218
-rw-r--r--src/battlemap/src/View/Battlemap/Navigator.elm245
-rw-r--r--src/battlemap/src/View/Battlemap/Tile.elm69
-rw-r--r--src/battlemap/src/View/Character.elm230
-rw-r--r--src/battlemap/src/View/Controlled.elm133
-rw-r--r--src/battlemap/src/View/Controlled/CharacterCard.elm582
-rw-r--r--src/battlemap/src/View/Controlled/ManualControls.elm60
-rw-r--r--src/battlemap/src/View/Controlled/Targets.elm69
-rw-r--r--src/battlemap/src/View/Gauge.elm76
-rw-r--r--src/battlemap/src/View/MainMenu.elm38
-rw-r--r--src/battlemap/src/View/MessageBoard.elm30
-rw-r--r--src/battlemap/src/View/MessageBoard/Animator.elm57
-rw-r--r--src/battlemap/src/View/MessageBoard/Animator/Attack.elm297
-rw-r--r--src/battlemap/src/View/MessageBoard/Error.elm33
-rw-r--r--src/battlemap/src/View/MessageBoard/Help.elm37
-rw-r--r--src/battlemap/src/View/MessageBoard/Help/Guide.elm100
-rw-r--r--src/battlemap/src/View/MessageBoard/Help/Rank.elm97
-rw-r--r--src/battlemap/src/View/SubMenu.elm85
-rw-r--r--src/battlemap/src/View/SubMenu/Characters.elm69
-rw-r--r--src/battlemap/src/View/SubMenu/Settings.elm59
-rw-r--r--src/battlemap/src/View/SubMenu/Status.elm55
-rw-r--r--src/battlemap/src/View/SubMenu/Status/CharacterInfo.elm34
-rw-r--r--src/battlemap/src/View/SubMenu/Status/TileInfo.elm142
-rw-r--r--src/battlemap/src/View/SubMenu/Timeline.elm95
-rw-r--r--src/battlemap/src/View/SubMenu/Timeline/Attack.elm164
-rw-r--r--src/battlemap/src/View/SubMenu/Timeline/Movement.elm62
-rw-r--r--src/battlemap/src/View/SubMenu/Timeline/PlayerDefeat.elm38
-rw-r--r--src/battlemap/src/View/SubMenu/Timeline/PlayerTurnStart.elm38
-rw-r--r--src/battlemap/src/View/SubMenu/Timeline/PlayerVictory.elm38
-rw-r--r--src/battlemap/src/View/SubMenu/Timeline/WeaponSwitch.elm58
-rw-r--r--src/battlemap/www/index.html30
-rw-r--r--src/battlemap/www/style.css1059
100 files changed, 0 insertions, 10586 deletions
diff --git a/src/battlemap/Makefile b/src/battlemap/Makefile
deleted file mode 100644
index 3b58a08..0000000
--- a/src/battlemap/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-################################################################################
-## CONFIG ######################################################################
-################################################################################
-SRC_DIR ?= src
-WWW_DIR ?= www
-WWW_SCRIPT_DIR ?= $(WWW_DIR)/script
-
-ELM_CC ?= elm-make --warn
-
-MAIN_MODULE ?= $(SRC_DIR)/Main.elm
-
-################################################################################
-## MAKEFILE MAGIC ##############################################################
-################################################################################
-SUB_MODULES = $(shell find $(SRC_DIR) -type f | grep "elm$$")
-
-################################################################################
-## SANITY CHECKS ###############################################################
-################################################################################
-
-################################################################################
-## TARGET RULES ################################################################
-################################################################################
-build: $(WWW_SCRIPT_DIR)/main.js
-
-clean:
- rm -f $(WWW_SCRIPT_DIR)/main.js
-
-reset:
- rm -rf elm-stuff
-
-################################################################################
-## INTERNAL RULES ##############################################################
-################################################################################
-$(WWW_SCRIPT_DIR)/main.js: $(MAIN_MODULE) $(SUB_MODULES)
- $(ELM_CC) $(MAIN_MODULE) --output $@
diff --git a/src/battlemap/elm-package.json b/src/battlemap/elm-package.json
deleted file mode 100644
index 43957bf..0000000
--- a/src/battlemap/elm-package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "version": "1.0.0",
- "summary": "helpful summary of your project, less than 80 characters",
- "repository": "https://github.com/nsensfel/tacticians-client.git",
- "license": "Apache 2.0",
- "source-directories": [
- "src"
- ],
- "exposed-modules": [],
- "dependencies": {
- "NoRedInk/elm-decode-pipeline": "3.0.0 <= v < 4.0.0",
- "andrewMacmurray/elm-delay": "2.0.3 <= v < 3.0.0",
- "elm-lang/core": "5.1.1 <= v < 6.0.0",
- "elm-lang/dom": "1.1.1 <= v < 2.0.0",
- "elm-lang/html": "2.0.0 <= v < 3.0.0",
- "elm-lang/http": "1.0.0 <= v < 2.0.0"
- },
- "elm-version": "0.18.0 <= v < 0.19.0"
-}
diff --git a/src/battlemap/src/Action/Scroll.elm b/src/battlemap/src/Action/Scroll.elm
deleted file mode 100644
index b949fc7..0000000
--- a/src/battlemap/src/Action/Scroll.elm
+++ /dev/null
@@ -1,62 +0,0 @@
-module Action.Scroll exposing (to)
-
--- Elm -------------------------------------------------------------------------
-import Dom
-import Dom.Scroll
-
-import Task
-
--- Battlemap -------------------------------------------------------------------
-import Constants.UI
-
-import Struct.UI
-import Struct.Location
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
--- FIXME: Scrolling so that the focused element is in the middle, not in the top
--- left corner, would be much better.
-tile_to_px : Struct.UI.Type -> Int -> Float
-tile_to_px ui t =
- (
- (toFloat t)
- * (Struct.UI.get_zoom_level ui)
- * (toFloat Constants.UI.tile_size)
- )
-
-scroll_to_x : Int -> Struct.UI.Type -> (Task.Task Dom.Error ())
-scroll_to_x x ui =
- (Dom.Scroll.toX
- Constants.UI.viewer_html_id
- (
- (tile_to_px ui x)
- - Constants.UI.half_viewer_min_width
- -- center on that tile, not its top left corner
- + ((tile_to_px ui 1) / 2.0)
- )
- )
-
-scroll_to_y : Int -> Struct.UI.Type -> (Task.Task Dom.Error ())
-scroll_to_y y ui =
- (Dom.Scroll.toY
- Constants.UI.viewer_html_id
- (
- (tile_to_px ui y)
- - Constants.UI.half_viewer_min_height
- -- center on that tile, not its top left corner
- + ((tile_to_px ui 1) / 2.0)
- )
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-to : Struct.Location.Type -> Struct.UI.Type -> (Task.Task Dom.Error (List ()))
-to loc ui =
- (Task.sequence
- [
- (scroll_to_x loc.x ui),
- (scroll_to_y loc.y ui)
- ]
- )
diff --git a/src/battlemap/src/Comm/AddArmor.elm b/src/battlemap/src/Comm/AddArmor.elm
deleted file mode 100644
index ad9df3e..0000000
--- a/src/battlemap/src/Comm/AddArmor.elm
+++ /dev/null
@@ -1,24 +0,0 @@
-module Comm.AddArmor exposing (decode)
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Armor
-import Struct.ServerReply
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-internal_decoder : Struct.Armor.Type -> Struct.ServerReply.Type
-internal_decoder ar = (Struct.ServerReply.AddArmor ar)
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-decode : (Json.Decode.Decoder Struct.ServerReply.Type)
-decode = (Json.Decode.map (internal_decoder) (Struct.Armor.decoder))
diff --git a/src/battlemap/src/Comm/AddChar.elm b/src/battlemap/src/Comm/AddChar.elm
deleted file mode 100644
index ebe8656..0000000
--- a/src/battlemap/src/Comm/AddChar.elm
+++ /dev/null
@@ -1,28 +0,0 @@
-module Comm.AddChar exposing (decode)
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Character
-import Struct.ServerReply
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
-internal_decoder : (
- (Struct.Character.Type, Int, Int, Int) ->
- Struct.ServerReply.Type
- )
-internal_decoder char_and_refs = (Struct.ServerReply.AddCharacter char_and_refs)
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-decode : (Json.Decode.Decoder Struct.ServerReply.Type)
-decode = (Json.Decode.map (internal_decoder) (Struct.Character.decoder))
diff --git a/src/battlemap/src/Comm/AddTile.elm b/src/battlemap/src/Comm/AddTile.elm
deleted file mode 100644
index d0a3ce8..0000000
--- a/src/battlemap/src/Comm/AddTile.elm
+++ /dev/null
@@ -1,24 +0,0 @@
-module Comm.AddTile exposing (decode)
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Tile
-import Struct.ServerReply
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-internal_decoder : Struct.Tile.Type -> Struct.ServerReply.Type
-internal_decoder wp = (Struct.ServerReply.AddTile wp)
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-decode : (Json.Decode.Decoder Struct.ServerReply.Type)
-decode = (Json.Decode.map (internal_decoder) (Struct.Tile.decoder))
diff --git a/src/battlemap/src/Comm/AddWeapon.elm b/src/battlemap/src/Comm/AddWeapon.elm
deleted file mode 100644
index b41c054..0000000
--- a/src/battlemap/src/Comm/AddWeapon.elm
+++ /dev/null
@@ -1,24 +0,0 @@
-module Comm.AddWeapon exposing (decode)
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Weapon
-import Struct.ServerReply
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-internal_decoder : Struct.Weapon.Type -> Struct.ServerReply.Type
-internal_decoder wp = (Struct.ServerReply.AddWeapon wp)
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-decode : (Json.Decode.Decoder Struct.ServerReply.Type)
-decode = (Json.Decode.map (internal_decoder) (Struct.Weapon.decoder))
diff --git a/src/battlemap/src/Comm/CharacterTurn.elm b/src/battlemap/src/Comm/CharacterTurn.elm
deleted file mode 100644
index c0fc96f..0000000
--- a/src/battlemap/src/Comm/CharacterTurn.elm
+++ /dev/null
@@ -1,129 +0,0 @@
-module Comm.CharacterTurn exposing (try)
-
--- Elm -------------------------------------------------------------------------
-import Json.Encode
-
--- Battlemap -------------------------------------------------------------------
-import Constants.IO
-
-import Comm.Send
-
-import Struct.Character
-import Struct.CharacterTurn
-import Struct.Direction
-import Struct.Event
-import Struct.Model
-
---------------------------------------------------------------------------------
--- TYPES ------------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-encode_move : Struct.Model.Type -> (Maybe Json.Encode.Value)
-encode_move model =
- case (Struct.CharacterTurn.get_path model.char_turn) of
- [] -> Nothing
- path ->
- (Just
- (Json.Encode.object
- [
- ("t", (Json.Encode.string "mov")),
- (
- "p",
- (Json.Encode.list
- (List.map
- (
- (Json.Encode.string)
- <<
- (Struct.Direction.to_string)
- )
- (List.reverse path)
- )
- )
- )
- ]
- )
- )
-
-encode_weapon_switch : Struct.Model.Type -> (Maybe Json.Encode.Value)
-encode_weapon_switch model =
- if (Struct.CharacterTurn.has_switched_weapons model.char_turn)
- then
- (Just
- (Json.Encode.object
- [
- ("t", (Json.Encode.string "swp"))
- ]
- )
- )
- else
- Nothing
-
-encode_attack : Struct.Model.Type -> (Maybe Json.Encode.Value)
-encode_attack model =
- case (Struct.CharacterTurn.try_getting_target model.char_turn) of
- Nothing -> Nothing
-
- (Just ix) ->
- (Just
- (Json.Encode.object
- [
- ("t", (Json.Encode.string "atk")),
- ("tix", (Json.Encode.int ix))
- ]
- )
- )
-
-encode_actions : Struct.Model.Type -> (List Json.Encode.Value)
-encode_actions model =
- case
- (
- (encode_move model),
- (encode_weapon_switch model),
- (encode_attack model)
- )
- of
- ((Just move), Nothing, Nothing) -> [move]
- ((Just move), Nothing, (Just attack)) -> [move, attack]
- (Nothing, (Just switch_weapon), Nothing) -> [switch_weapon]
- (Nothing, (Just switch_weapon), (Just attack)) -> [switch_weapon, attack]
- (Nothing, Nothing, (Just attack)) -> [attack]
- _ -> []
-
-try_encoding : Struct.Model.Type -> (Maybe Json.Encode.Value)
-try_encoding model =
- case (Struct.CharacterTurn.try_getting_active_character model.char_turn) of
- (Just char) ->
- (Just
- (Json.Encode.object
- [
- ("stk", (Json.Encode.string model.session_token)),
- ("pid", (Json.Encode.string model.player_id)),
- ("bid", (Json.Encode.string model.battlemap_id)),
- (
- "cix",
- (Json.Encode.int (Struct.Character.get_index char))
- ),
- (
- "act",
- (Json.Encode.list (encode_actions model))
- )
- ]
- )
- )
-
- _ ->
- Nothing
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-try : Struct.Model.Type -> (Maybe (Cmd Struct.Event.Type))
-try model =
- (Comm.Send.try_sending
- model
- Constants.IO.character_turn_handler
- try_encoding
- )
diff --git a/src/battlemap/src/Comm/LoadBattlemap.elm b/src/battlemap/src/Comm/LoadBattlemap.elm
deleted file mode 100644
index cd29acf..0000000
--- a/src/battlemap/src/Comm/LoadBattlemap.elm
+++ /dev/null
@@ -1,42 +0,0 @@
-module Comm.LoadBattlemap exposing (try)
-
--- Elm -------------------------------------------------------------------------
-import Json.Encode
-
--- Battlemap -------------------------------------------------------------------
-import Comm.Send
-
-import Constants.IO
-
-import Struct.Event
-import Struct.Model
-
---------------------------------------------------------------------------------
--- TYPES ------------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-try_encoding : Struct.Model.Type -> (Maybe Json.Encode.Value)
-try_encoding model =
- (Just
- (Json.Encode.object
- [
- ("stk", (Json.Encode.string model.session_token)),
- ("pid", (Json.Encode.string model.player_id)),
- ("bmi", (Json.Encode.string model.battlemap_id))
- ]
- )
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-try : Struct.Model.Type -> (Maybe (Cmd Struct.Event.Type))
-try model =
- (Comm.Send.try_sending
- model
- Constants.IO.battlemap_loading_handler
- try_encoding
- )
diff --git a/src/battlemap/src/Comm/Send.elm b/src/battlemap/src/Comm/Send.elm
deleted file mode 100644
index a6129cd..0000000
--- a/src/battlemap/src/Comm/Send.elm
+++ /dev/null
@@ -1,76 +0,0 @@
-module Comm.Send exposing (try_sending)
-
--- Elm -------------------------------------------------------------------------
-import Http
-
-import Json.Decode
-import Json.Encode
-
--- Battlemap -------------------------------------------------------------------
-import Comm.AddArmor
-import Comm.AddChar
-import Comm.AddTile
-import Comm.AddWeapon
-import Comm.SetMap
-import Comm.SetTimeline
-import Comm.TurnResults
-
-import Struct.Event
-import Struct.ServerReply
-import Struct.Model
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-internal_decoder : String -> (Json.Decode.Decoder Struct.ServerReply.Type)
-internal_decoder reply_type =
- case reply_type of
- "add_tile" -> (Comm.AddTile.decode)
- "add_armor" -> (Comm.AddArmor.decode)
- "add_char" -> (Comm.AddChar.decode)
- "add_weapon" -> (Comm.AddWeapon.decode)
- "set_map" -> (Comm.SetMap.decode)
- "turn_results" -> (Comm.TurnResults.decode)
- "set_timeline" -> (Comm.SetTimeline.decode)
- other ->
- (Json.Decode.fail
- (
- "Unknown server command \""
- ++ other
- ++ "\""
- )
- )
-
-decode : (Json.Decode.Decoder Struct.ServerReply.Type)
-decode =
- (Json.Decode.field "msg" Json.Decode.string)
- |> (Json.Decode.andThen (internal_decoder))
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-try_sending : (
- Struct.Model.Type ->
- String ->
- (Struct.Model.Type -> (Maybe Json.Encode.Value)) ->
- (Maybe (Cmd Struct.Event.Type))
- )
-try_sending model recipient try_encoding_fun =
- case (try_encoding_fun model) of
- (Just serial) ->
- (Just
- (Http.send
- Struct.Event.ServerReplied
- (Http.post
- recipient
- (Http.jsonBody serial)
- (Json.Decode.list (decode))
- )
- )
- )
-
- Nothing -> Nothing
diff --git a/src/battlemap/src/Comm/SetMap.elm b/src/battlemap/src/Comm/SetMap.elm
deleted file mode 100644
index dc499cf..0000000
--- a/src/battlemap/src/Comm/SetMap.elm
+++ /dev/null
@@ -1,62 +0,0 @@
-module Comm.SetMap exposing (decode)
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Battlemap
-import Struct.ServerReply
-import Struct.Tile
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias MapData =
- {
- w : Int,
- h : Int,
- t : (List Int)
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-deserialize_tile_instance : Int -> Int -> Int -> Struct.Tile.Instance
-deserialize_tile_instance map_width index id =
- (Struct.Tile.new_instance
- (index % map_width)
- (index // map_width)
- id
- -1
- -1
- )
-
-internal_decoder : MapData -> Struct.ServerReply.Type
-internal_decoder map_data =
- (Struct.ServerReply.SetMap
- (Struct.Battlemap.new
- map_data.w
- map_data.h
- (List.indexedMap
- (deserialize_tile_instance map_data.w)
- map_data.t
- )
- )
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-decode : (Json.Decode.Decoder Struct.ServerReply.Type)
-decode =
- (Json.Decode.map
- internal_decoder
- (Json.Decode.map3 MapData
- (Json.Decode.field "w" Json.Decode.int)
- (Json.Decode.field "h" Json.Decode.int)
- (Json.Decode.field
- "t"
- (Json.Decode.list Json.Decode.int)
- )
- )
- )
diff --git a/src/battlemap/src/Comm/SetTimeline.elm b/src/battlemap/src/Comm/SetTimeline.elm
deleted file mode 100644
index a432f3a..0000000
--- a/src/battlemap/src/Comm/SetTimeline.elm
+++ /dev/null
@@ -1,27 +0,0 @@
-module Comm.SetTimeline exposing (decode)
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-
--- Battlemap -------------------------------------------------------------------
-import Struct.ServerReply
-import Struct.TurnResult
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-internal_decoder : (List Struct.TurnResult.Type) -> Struct.ServerReply.Type
-internal_decoder trl = (Struct.ServerReply.SetTimeline trl)
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-decode : (Json.Decode.Decoder Struct.ServerReply.Type)
-decode =
- (Json.Decode.map
- (internal_decoder)
- (Json.Decode.field "cnt" (Json.Decode.list Struct.TurnResult.decoder))
- )
diff --git a/src/battlemap/src/Comm/TurnResults.elm b/src/battlemap/src/Comm/TurnResults.elm
deleted file mode 100644
index abeb932..0000000
--- a/src/battlemap/src/Comm/TurnResults.elm
+++ /dev/null
@@ -1,28 +0,0 @@
-module Comm.TurnResults exposing (decode)
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-
--- Battlemap -------------------------------------------------------------------
-import Struct.ServerReply
-import Struct.TurnResult
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-internal_decoder : (List Struct.TurnResult.Type) -> Struct.ServerReply.Type
-internal_decoder trl = (Struct.ServerReply.TurnResults trl)
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-decode : (Json.Decode.Decoder Struct.ServerReply.Type)
-decode =
- (Json.Decode.map
- (internal_decoder)
- (Json.Decode.field "cnt" (Json.Decode.list Struct.TurnResult.decoder))
- )
diff --git a/src/battlemap/src/Constants/IO.elm.m4 b/src/battlemap/src/Constants/IO.elm.m4
deleted file mode 100644
index 216b0c8..0000000
--- a/src/battlemap/src/Constants/IO.elm.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-module Constants.IO exposing (..)
-
-base_url : String
-base_url = "__CONF_SERVER_URL"
-
-battlemap_handler_url : String
-battlemap_handler_url = (base_url ++ "/handler/battlemap")
-
-character_turn_handler : String
-character_turn_handler = (battlemap_handler_url ++ "/bm_character_turn")
-
-battlemap_loading_handler : String
-battlemap_loading_handler = (battlemap_handler_url ++ "/bm_load_state")
-
-tile_assets_url : String
-tile_assets_url = (base_url ++ "/asset/svg/tile/")
diff --git a/src/battlemap/src/Constants/Movement.elm b/src/battlemap/src/Constants/Movement.elm
deleted file mode 100644
index a2a5c1e..0000000
--- a/src/battlemap/src/Constants/Movement.elm
+++ /dev/null
@@ -1,10 +0,0 @@
-module Constants.Movement exposing (..)
-
-max_points : Int
-max_points = 200
-
-cost_when_occupied_tile : Int
-cost_when_occupied_tile = 201
-
-cost_when_out_of_bounds : Int
-cost_when_out_of_bounds = 255
diff --git a/src/battlemap/src/Constants/UI.elm b/src/battlemap/src/Constants/UI.elm
deleted file mode 100644
index 4c70388..0000000
--- a/src/battlemap/src/Constants/UI.elm
+++ /dev/null
@@ -1,16 +0,0 @@
-module Constants.UI exposing (..)
-
-tile_size : Int
-tile_size = 32
-
-variants_per_tile : Int
-variants_per_tile = 9
-
-viewer_html_id : String
-viewer_html_id = "battlemap_viewer"
-
-half_viewer_min_width : Float
-half_viewer_min_width = 109.0
-
-half_viewer_min_height : Float
-half_viewer_min_height = 180.0
diff --git a/src/battlemap/src/ElmModule/Init.elm b/src/battlemap/src/ElmModule/Init.elm
deleted file mode 100644
index 83c2c58..0000000
--- a/src/battlemap/src/ElmModule/Init.elm
+++ /dev/null
@@ -1,28 +0,0 @@
-module ElmModule.Init exposing (init)
-
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Comm.LoadBattlemap
-
-import Struct.Event
-import Struct.Flags
-import Struct.Model
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-init : Struct.Flags.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))
-init flags =
- let model = (Struct.Model.new flags) in
- (
- model,
- (case (Comm.LoadBattlemap.try model) of
- (Just cmd) -> cmd
- Nothing -> Cmd.none
- )
- )
diff --git a/src/battlemap/src/ElmModule/Subscriptions.elm b/src/battlemap/src/ElmModule/Subscriptions.elm
deleted file mode 100644
index f342b30..0000000
--- a/src/battlemap/src/ElmModule/Subscriptions.elm
+++ /dev/null
@@ -1,17 +0,0 @@
-module ElmModule.Subscriptions exposing (..)
-
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Model
-import Struct.Event
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-subscriptions : Struct.Model.Type -> (Sub Struct.Event.Type)
-subscriptions model = Sub.none
diff --git a/src/battlemap/src/ElmModule/Update.elm b/src/battlemap/src/ElmModule/Update.elm
deleted file mode 100644
index 3b23963..0000000
--- a/src/battlemap/src/ElmModule/Update.elm
+++ /dev/null
@@ -1,106 +0,0 @@
-module ElmModule.Update exposing (update)
-
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.Model
-
-import Update.AbortTurn
-import Update.AttackWithoutMoving
-import Update.ChangeScale
-import Update.DisplayCharacterInfo
-import Update.EndTurn
-import Update.HandleAnimationEnded
-import Update.HandleServerReply
-import Update.LookForCharacter
-import Update.RequestDirection
-import Update.SelectCharacter
-import Update.SelectCharacterOrTile
-import Update.SelectTab
-import Update.SelectTile
-import Update.SendLoadBattlemapRequest
-import Update.SetRequestedHelp
-import Update.SwitchTeam
-import Update.SwitchWeapon
-import Update.TestAnimation
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-
-update : (
- Struct.Event.Type ->
- Struct.Model.Type ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-update event model =
- let
- new_model = (Struct.Model.clear_error model)
- in
- case event of
- Struct.Event.None -> (model, Cmd.none)
-
- (Struct.Event.Failed err) ->
- (
- (Struct.Model.invalidate err new_model),
- Cmd.none
- )
-
- Struct.Event.AttackWithoutMovingRequest ->
- (Update.AttackWithoutMoving.apply_to new_model)
-
- Struct.Event.AnimationEnded ->
- (Update.HandleAnimationEnded.apply_to model)
-
- (Struct.Event.DirectionRequested d) ->
- (Update.RequestDirection.apply_to new_model d)
-
- (Struct.Event.TileSelected loc) ->
- (Update.SelectTile.apply_to new_model loc)
-
- (Struct.Event.CharacterOrTileSelected loc) ->
- (Update.SelectCharacterOrTile.apply_to new_model loc)
-
- (Struct.Event.CharacterSelected char_id) ->
- (Update.SelectCharacter.apply_to new_model char_id)
-
- (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)
-
- (Struct.Event.ScaleChangeRequested mod) ->
- (Update.ChangeScale.apply_to new_model mod)
-
- (Struct.Event.TabSelected tab) ->
- (Update.SelectTab.apply_to new_model tab)
-
- Struct.Event.DebugTeamSwitchRequest ->
- (Update.SwitchTeam.apply_to new_model)
-
- Struct.Event.DebugTestAnimation ->
- (Update.TestAnimation.apply_to new_model)
-
- (Struct.Event.DebugLoadBattlemapRequest) ->
- (Update.SendLoadBattlemapRequest.apply_to new_model)
-
- (Struct.Event.ServerReplied result) ->
- (Update.HandleServerReply.apply_to model result)
-
- Struct.Event.WeaponSwitchRequest ->
- (Update.SwitchWeapon.apply_to new_model)
-
- Struct.Event.AbortTurnRequest ->
- (Update.AbortTurn.apply_to new_model)
-
- (Struct.Event.RequestedHelp help_request) ->
- (Update.SetRequestedHelp.apply_to new_model help_request)
diff --git a/src/battlemap/src/ElmModule/View.elm b/src/battlemap/src/ElmModule/View.elm
deleted file mode 100644
index 49b88fe..0000000
--- a/src/battlemap/src/ElmModule/View.elm
+++ /dev/null
@@ -1,57 +0,0 @@
-module ElmModule.View exposing (view)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Lazy
-import Html.Attributes
-
--- Battlemap -------------------------------------------------------------------
-import Constants.UI
-
-import Struct.Event
-import Struct.Model
-
-import View.Battlemap
-import View.Controlled
-import View.MessageBoard
-import View.MainMenu
-import View.SubMenu
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-view : Struct.Model.Type -> (Html.Html Struct.Event.Type)
-view model =
- (Html.div
- [
- (Html.Attributes.class "fullscreen-module")
- ]
- [
- (View.MainMenu.get_html),
- (Html.Lazy.lazy2
- (View.Controlled.get_html)
- model.char_turn
- model.player_ix
- ),
- (Html.div
- [
- (Html.Attributes.class "battlemap-container-centerer")
- ]
- [
- (Html.div
- [
- (Html.Attributes.class "battlemap-container"),
- (Html.Attributes.id Constants.UI.viewer_html_id)
- ]
- [(View.Battlemap.get_html model)]
- )
- ]
- ),
- (View.SubMenu.get_html model),
- (View.MessageBoard.get_html model)
- ]
- )
diff --git a/src/battlemap/src/Main.elm b/src/battlemap/src/Main.elm
deleted file mode 100644
index 0d22cd5..0000000
--- a/src/battlemap/src/Main.elm
+++ /dev/null
@@ -1,23 +0,0 @@
--- Elm ------------------------------------------------------------------------
-import Html
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Model
-import Struct.Event
-import Struct.Flags
-
-import ElmModule.Init
-import ElmModule.Subscriptions
-import ElmModule.View
-import ElmModule.Update
-
-main : (Program Struct.Flags.Type Struct.Model.Type Struct.Event.Type)
-main =
- (Html.programWithFlags
- {
- init = ElmModule.Init.init,
- view = ElmModule.View.view,
- update = ElmModule.Update.update,
- subscriptions = ElmModule.Subscriptions.subscriptions
- }
- )
diff --git a/src/battlemap/src/Struct/Armor.elm b/src/battlemap/src/Struct/Armor.elm
deleted file mode 100644
index 58f27d7..0000000
--- a/src/battlemap/src/Struct/Armor.elm
+++ /dev/null
@@ -1,177 +0,0 @@
-module Struct.Armor exposing
- (
- Type,
- Ref,
- Category(..),
- new,
- get_id,
- get_name,
- get_category,
- get_resistance_to,
- get_image_id,
- decoder,
- none,
- apply_to_attributes
- )
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-import Json.Decode.Pipeline
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Attributes
-import Struct.Weapon
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias PartiallyDecoded =
- {
- id : Int,
- nam : String,
- ct : String,
- cf : Float
- }
-
-type alias Type =
- {
- id : Int,
- name : String,
- category : Category,
- coef : Float
- }
-
-type alias Ref = Int
-
-type Category =
- Kinetic
- | Leather
- | Chain
- | Plate
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-finish_decoding : PartiallyDecoded -> Type
-finish_decoding add_armor =
- {
- id = add_armor.id,
- name = add_armor.nam,
- category =
- (
- case add_armor.ct of
- "k" -> Kinetic
- "c" -> Chain
- "p" -> Plate
- _ -> Leather
- ),
- coef = add_armor.cf
- }
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-new : Int -> String -> Category -> Float -> Type
-new id name category coef =
- {
- id = id,
- name = name,
- category = category,
- coef = coef
- }
-
-get_id : Type -> Ref
-get_id ar = ar.id
-
-get_name : Type -> String
-get_name ar = ar.name
-
-get_category : Type -> String
-get_category ar = ar.name
-
-get_image_id : Type -> String
-get_image_id ar = (toString ar.id)
-
-get_resistance_to : Struct.Weapon.DamageType -> Type -> Int
-get_resistance_to dmg_type ar =
- (ceiling
- (
- ar.coef
- *
- (
- case (dmg_type, ar.category) of
- (Struct.Weapon.Slash, Kinetic) -> 0.0
- (Struct.Weapon.Slash, Leather) -> 20.0
- (Struct.Weapon.Slash, Chain) -> 30.0
- (Struct.Weapon.Slash, Plate) -> 30.0
- (Struct.Weapon.Blunt, Kinetic) -> 30.0
- (Struct.Weapon.Blunt, Leather) -> 20.0
- (Struct.Weapon.Blunt, Chain) -> 20.0
- (Struct.Weapon.Blunt, Plate) -> 20.0
- (Struct.Weapon.Pierce, Kinetic) -> 20.0
- (Struct.Weapon.Pierce, Leather) -> 20.0
- (Struct.Weapon.Pierce, Chain) -> 20.0
- (Struct.Weapon.Pierce, Plate) -> 30.0
- )
- )
- )
-
-apply_to_attributes : Type -> Struct.Attributes.Type -> Struct.Attributes.Type
-apply_to_attributes ar atts =
- let
- impact = (-1 * (ceiling (20.0 * ar.coef)))
- half_impact = (-1 * (ceiling (10.0 * ar.coef)))
- in
- case ar.category of
- Kinetic -> (Struct.Attributes.mod_mind impact atts)
- Leather ->
- (Struct.Attributes.mod_constitution
- half_impact
- (Struct.Attributes.mod_dexterity
- half_impact
- atts
- )
- )
-
- Chain ->
- (Struct.Attributes.mod_constitution
- half_impact
- (Struct.Attributes.mod_dexterity
- half_impact
- (Struct.Attributes.mod_speed impact atts)
- )
- )
-
- Plate ->
- (Struct.Attributes.mod_constitution
- half_impact
- (Struct.Attributes.mod_dexterity
- half_impact
- (Struct.Attributes.mod_speed
- impact
- (Struct.Attributes.mod_strength impact atts)
- )
- )
- )
-
-decoder : (Json.Decode.Decoder Type)
-decoder =
- (Json.Decode.map
- (finish_decoding)
- (Json.Decode.Pipeline.decode
- PartiallyDecoded
- |> (Json.Decode.Pipeline.required "id" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "nam" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "ct" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "cf" Json.Decode.float)
- )
- )
-
-none : Type
-none =
- (new
- 0
- "None"
- Leather
- 0.0
- )
diff --git a/src/battlemap/src/Struct/Attack.elm b/src/battlemap/src/Struct/Attack.elm
deleted file mode 100644
index 91844c4..0000000
--- a/src/battlemap/src/Struct/Attack.elm
+++ /dev/null
@@ -1,148 +0,0 @@
-module Struct.Attack exposing
- (
- Type,
- Order(..),
- Precision(..),
- apply_to_characters,
- apply_inverse_to_characters,
- decoder
- )
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Json.Decode
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Character
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type Order =
- First
- | Counter
- | Second
-
-type Precision =
- Hit
- | Graze
- | Miss
-
-type alias Type =
- {
- order : Order,
- precision : Precision,
- critical : Bool,
- parried : Bool,
- damage : Int
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-order_from_string : String -> Order
-order_from_string str =
- case str of
- "f" -> First
- "s" -> Second
- _ -> Counter
-
-precision_from_string : String -> Precision
-precision_from_string str =
- case str of
- "h" -> Hit
- "g" -> Graze
- _ -> Miss
-
-order_decoder : (Json.Decode.Decoder Order)
-order_decoder = (Json.Decode.map (order_from_string) (Json.Decode.string))
-
-precision_decoder : (Json.Decode.Decoder Precision)
-precision_decoder =
- (Json.Decode.map (precision_from_string) (Json.Decode.string))
-
-decoder : (Json.Decode.Decoder Type)
-decoder =
- (Json.Decode.map5
- Type
- (Json.Decode.field "ord" (order_decoder))
- (Json.Decode.field "pre" (precision_decoder))
- (Json.Decode.field "cri" (Json.Decode.bool))
- (Json.Decode.field "par" (Json.Decode.bool))
- (Json.Decode.field "dmg" (Json.Decode.int))
- )
-
-apply_damage_to_character : (
- Int ->
- Struct.Character.Type ->
- Struct.Character.Type
- )
-apply_damage_to_character damage char =
- (Struct.Character.set_current_health
- ((Struct.Character.get_current_health char) - damage)
- char
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to_characters : (
- Int ->
- Int ->
- Type ->
- (Array.Array Struct.Character.Type) ->
- (Array.Array Struct.Character.Type)
- )
-apply_to_characters attacker_ix defender_ix attack characters =
- if ((attack.order == Counter) == attack.parried)
- then
- case (Array.get defender_ix characters) of
- (Just char) ->
- (Array.set
- defender_ix
- (apply_damage_to_character attack.damage char)
- characters
- )
-
- Nothing -> characters
- else
- case (Array.get attacker_ix characters) of
- (Just char) ->
- (Array.set
- attacker_ix
- (apply_damage_to_character attack.damage char)
- characters
- )
-
- Nothing -> characters
-
-apply_inverse_to_characters : (
- Int ->
- Int ->
- Type ->
- (Array.Array Struct.Character.Type) ->
- (Array.Array Struct.Character.Type)
- )
-apply_inverse_to_characters attacker_ix defender_ix attack characters =
- if ((attack.order == Counter) == attack.parried)
- then
- case (Array.get defender_ix characters) of
- (Just char) ->
- (Array.set
- defender_ix
- (apply_damage_to_character (-1 * attack.damage) char)
- characters
- )
-
- Nothing -> characters
- else
- case (Array.get attacker_ix characters) of
- (Just char) ->
- (Array.set
- attacker_ix
- (apply_damage_to_character (-1 * attack.damage) char)
- characters
- )
-
- Nothing -> characters
diff --git a/src/battlemap/src/Struct/Attributes.elm b/src/battlemap/src/Struct/Attributes.elm
deleted file mode 100644
index 407856d..0000000
--- a/src/battlemap/src/Struct/Attributes.elm
+++ /dev/null
@@ -1,134 +0,0 @@
-module Struct.Attributes exposing
- (
- Type,
- get_constitution,
- get_dexterity,
- get_intelligence,
- get_mind,
- get_speed,
- get_strength,
- mod_constitution,
- mod_dexterity,
- mod_intelligence,
- mod_mind,
- mod_speed,
- mod_strength,
- new,
- decoder
- )
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-import Json.Decode.Pipeline
-
--- Battlemap -------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias Type =
- {
- constitution : Int,
- dexterity : Int,
- intelligence : Int,
- mind : Int,
- speed : Int,
- strength : Int
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_within_range : Int -> Int -> Int -> Int
-get_within_range vmin vmax v = (min vmax (max vmin v))
-
-get_within_att_range : Int -> Int
-get_within_att_range v = (get_within_range 0 100 v)
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_constitution : Type -> Int
-get_constitution t = t.constitution
-
-get_dexterity : Type -> Int
-get_dexterity t = t.dexterity
-
-get_intelligence : Type -> Int
-get_intelligence t = t.intelligence
-
-get_mind : Type -> Int
-get_mind t = t.mind
-
-get_speed : Type -> Int
-get_speed t = t.speed
-
-get_strength : Type -> Int
-get_strength t = t.strength
-
-mod_constitution : Int -> Type -> Type
-mod_constitution i t =
- {t |
- constitution = (get_within_att_range (i + t.constitution))
- }
-
-mod_dexterity : Int -> Type -> Type
-mod_dexterity i t =
- {t |
- dexterity = (get_within_att_range (i + t.dexterity))
- }
-
-mod_intelligence : Int -> Type -> Type
-mod_intelligence i t =
- {t |
- intelligence = (get_within_att_range (i + t.intelligence))
- }
-
-mod_mind : Int -> Type -> Type
-mod_mind i t =
- {t |
- mind = (get_within_att_range (i + t.mind))
- }
-
-mod_speed : Int -> Type -> Type
-mod_speed i t =
- {t |
- speed = (get_within_att_range (i + t.speed))
- }
-
-mod_strength : Int -> Type -> Type
-mod_strength i t =
- {t |
- strength = (get_within_att_range (i + t.strength))
- }
-
-new : (
- Int -> -- constitution
- Int -> -- dexterity
- Int -> -- intelligence
- Int -> -- mind
- Int -> -- speed
- Int -> -- strength
- Type
- )
-new con dex int min spe str =
- {
- constitution = con,
- dexterity = dex,
- intelligence = int,
- mind = min,
- speed = spe,
- strength = str
- }
-
-decoder : (Json.Decode.Decoder Type)
-decoder =
- (Json.Decode.Pipeline.decode
- Type
- |> (Json.Decode.Pipeline.required "con" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "dex" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "int" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "min" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "spe" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "str" Json.Decode.int)
- )
diff --git a/src/battlemap/src/Struct/Battlemap.elm b/src/battlemap/src/Struct/Battlemap.elm
deleted file mode 100644
index fee4901..0000000
--- a/src/battlemap/src/Struct/Battlemap.elm
+++ /dev/null
@@ -1,123 +0,0 @@
-module Struct.Battlemap exposing
- (
- Type,
- empty,
- new,
- get_width,
- get_height,
- get_tiles,
- get_movement_cost_function,
- solve_tiles,
- try_getting_tile_at
- )
-
--- Elm -------------------------------------------------------------------------
-import Array
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Character
-import Struct.Tile
-import Struct.Location
-
-import Constants.Movement
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias Type =
- {
- width: Int,
- height: Int,
- content: (Array.Array Struct.Tile.Instance)
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-location_to_index : Struct.Location.Type -> Type -> Int
-location_to_index loc bmap =
- ((loc.y * bmap.width) + loc.x)
-
-has_location : Struct.Location.Type -> Type -> Bool
-has_location loc bmap =
- (
- (loc.x >= 0)
- && (loc.y >= 0)
- && (loc.x < bmap.width)
- && (loc.y < bmap.height)
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_width : Type -> Int
-get_width bmap = bmap.width
-
-get_height : Type -> Int
-get_height bmap = bmap.height
-
-get_tiles : Type -> (Array.Array Struct.Tile.Instance)
-get_tiles bmap = bmap.content
-
-empty : Type
-empty =
- {
- width = 0,
- height = 0,
- content = (Array.empty)
- }
-
-new : Int -> Int -> (List Struct.Tile.Instance) -> Type
-new width height tiles =
- {
- width = width,
- height = height,
- content = (Array.fromList tiles)
- }
-
-try_getting_tile_at : (
- Struct.Location.Type ->
- Type ->
- (Maybe Struct.Tile.Instance)
- )
-try_getting_tile_at loc bmap =
- (Array.get (location_to_index loc bmap) bmap.content)
-
-get_movement_cost_function : (
- Type ->
- Struct.Location.Type ->
- (List Struct.Character.Type) ->
- Struct.Location.Type ->
- Int
- )
-get_movement_cost_function bmap start_loc char_list loc =
- if (has_location loc bmap)
- then
- case (Array.get (location_to_index loc bmap) bmap.content) of
- (Just tile) ->
- if
- (List.any
- (
- \c ->
- (
- ((Struct.Character.get_location c) == loc)
- && (loc /= start_loc)
- && (Struct.Character.is_alive c)
- )
- )
- char_list
- )
- then
- Constants.Movement.cost_when_occupied_tile
- else
- (Struct.Tile.get_instance_cost tile)
-
- Nothing -> Constants.Movement.cost_when_out_of_bounds
- else
- Constants.Movement.cost_when_out_of_bounds
-
-solve_tiles : (List Struct.Tile.Type) -> Type -> Type
-solve_tiles tiles bmap =
- {bmap |
- content = (Array.map (Struct.Tile.solve_tile_instance tiles) bmap.content)
- }
diff --git a/src/battlemap/src/Struct/Character.elm b/src/battlemap/src/Struct/Character.elm
deleted file mode 100644
index f361501..0000000
--- a/src/battlemap/src/Struct/Character.elm
+++ /dev/null
@@ -1,238 +0,0 @@
-module Struct.Character exposing
- (
- Type,
- Rank(..),
- get_index,
- get_player_ix,
- get_name,
- get_rank,
- get_icon_id,
- get_portrait_id,
- get_armor,
- get_armor_variation,
- get_current_health,
- get_sane_current_health,
- set_current_health,
- get_location,
- set_location,
- get_attributes,
- get_statistics,
- is_enabled,
- is_defeated,
- is_alive,
- set_enabled,
- set_defeated,
- get_weapons,
- set_weapons,
- decoder,
- fill_missing_equipment
- )
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-import Json.Decode.Pipeline
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Armor
-import Struct.Attributes
-import Struct.Location
-import Struct.Statistics
-import Struct.Weapon
-import Struct.WeaponSet
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias PartiallyDecoded =
- {
- ix : Int,
- nam : String,
- rnk : String,
- ico : String,
- prt : String,
- lc : Struct.Location.Type,
- hea : Int,
- pla : Int,
- ena : Bool,
- dea : Bool,
- att : Struct.Attributes.Type,
- awp : Int,
- swp : Int,
- ar : Int
- }
-
-type Rank =
- Optional
- | Target
- | Commander
-
-type alias Type =
- {
- ix : Int,
- name : String,
- rank : Rank,
- icon : String,
- portrait : String,
- location : Struct.Location.Type,
- health : Int,
- player_ix : Int,
- enabled : Bool,
- defeated : Bool,
- attributes : Struct.Attributes.Type,
- statistics : Struct.Statistics.Type,
- weapons : Struct.WeaponSet.Type,
- armor : Struct.Armor.Type
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-str_to_rank : String -> Rank
-str_to_rank str =
- case str of
- "t" -> Target
- "c" -> Commander
- _ -> Optional
-
-finish_decoding : PartiallyDecoded -> (Type, Int, Int, Int)
-finish_decoding add_char =
- let
- weapon_set = (Struct.WeaponSet.new Struct.Weapon.none Struct.Weapon.none)
- armor = Struct.Armor.none
- almost_char =
- {
- ix = add_char.ix,
- name = add_char.nam,
- rank = (str_to_rank add_char.rnk),
- icon = add_char.ico,
- portrait = add_char.prt,
- location = add_char.lc,
- health = add_char.hea,
- attributes = add_char.att,
- statistics = (Struct.Statistics.new add_char.att weapon_set armor),
- player_ix = add_char.pla,
- enabled = add_char.ena,
- defeated = add_char.dea,
- weapons = weapon_set,
- armor = armor
- }
- in
- (almost_char, add_char.awp, add_char.swp, add_char.ar)
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_index : Type -> Int
-get_index c = c.ix
-
-get_name : Type -> String
-get_name c = c.name
-
-get_rank : Type -> Rank
-get_rank c = c.rank
-
-get_player_ix : Type -> Int
-get_player_ix c = c.player_ix
-
-get_icon_id : Type -> String
-get_icon_id c = c.icon
-
-get_portrait_id : Type -> String
-get_portrait_id c = c.portrait
-
-get_current_health : Type -> Int
-get_current_health c = c.health
-
-get_sane_current_health : Type -> Int
-get_sane_current_health c = (max 0 c.health)
-
-set_current_health : Int -> Type -> Type
-set_current_health health c = {c | health = health}
-
-get_location : Type -> Struct.Location.Type
-get_location t = t.location
-
-set_location : Struct.Location.Type -> Type -> Type
-set_location location char = {char | location = location}
-
-get_attributes : Type -> Struct.Attributes.Type
-get_attributes char = char.attributes
-
-get_statistics : Type -> Struct.Statistics.Type
-get_statistics char = char.statistics
-
-is_alive : Type -> Bool
-is_alive char = ((char.health > 0) && (not char.defeated))
-
-is_enabled : Type -> Bool
-is_enabled char = char.enabled
-
-is_defeated : Type -> Bool
-is_defeated char = char.defeated
-
-set_enabled : Bool -> Type -> Type
-set_enabled enabled char = {char | enabled = enabled}
-
-set_defeated : Bool -> Type -> Type
-set_defeated defeated char = {char | defeated = defeated}
-
-get_weapons : Type -> Struct.WeaponSet.Type
-get_weapons char = char.weapons
-
-get_armor : Type -> Struct.Armor.Type
-get_armor char = char.armor
-
-get_armor_variation : Type -> String
-get_armor_variation char =
- case char.portrait of
- -- Currently hardcoded to match crows from characters.css
- "11" -> "1"
- "4" -> "1"
- _ -> "0"
-
-set_weapons : Struct.WeaponSet.Type -> Type -> Type
-set_weapons weapons char =
- {char |
- weapons = weapons,
- statistics = (Struct.Statistics.new char.attributes weapons char.armor)
- }
-
-decoder : (Json.Decode.Decoder (Type, Int, Int, Int))
-decoder =
- (Json.Decode.map
- (finish_decoding)
- (Json.Decode.Pipeline.decode
- PartiallyDecoded
- |> (Json.Decode.Pipeline.required "ix" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "nam" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "rnk" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "ico" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "prt" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "lc" (Struct.Location.decoder))
- |> (Json.Decode.Pipeline.required "hea" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "pla" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "ena" Json.Decode.bool)
- |> (Json.Decode.Pipeline.required "dea" Json.Decode.bool)
- |> (Json.Decode.Pipeline.required "att" (Struct.Attributes.decoder))
- |> (Json.Decode.Pipeline.required "awp" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "swp" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "ar" Json.Decode.int)
- )
- )
-
-fill_missing_equipment : (
- Struct.Weapon.Type ->
- Struct.Weapon.Type ->
- Struct.Armor.Type ->
- Type ->
- Type
- )
-fill_missing_equipment awp swp ar char =
- let
- weapon_set = (Struct.WeaponSet.new awp swp)
- in
- {char |
- statistics = (Struct.Statistics.new char.attributes weapon_set ar),
- weapons = weapon_set,
- armor = ar
- }
diff --git a/src/battlemap/src/Struct/CharacterTurn.elm b/src/battlemap/src/Struct/CharacterTurn.elm
deleted file mode 100644
index 3b4c35d..0000000
--- a/src/battlemap/src/Struct/CharacterTurn.elm
+++ /dev/null
@@ -1,134 +0,0 @@
-module Struct.CharacterTurn exposing
- (
- Type,
- State(..),
- set_target,
- can_select_target,
- set_has_switched_weapons,
- has_switched_weapons,
- get_path,
- get_state,
- try_getting_target,
- lock_path,
- new,
- set_active_character,
- set_navigator,
- try_getting_active_character,
- try_getting_navigator
- )
-
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Character
-import Struct.Direction
-import Struct.Navigator
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type State =
- Default
- | SelectedCharacter
- | MovedCharacter
- | ChoseTarget
-
-type alias Type =
- {
- state : State,
- active_character : (Maybe Struct.Character.Type),
- path : (List Struct.Direction.Type),
- target : (Maybe Int),
- navigator : (Maybe Struct.Navigator.Type),
- has_switched_weapons : Bool
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-new : Type
-new =
- {
- state = Default,
- active_character = Nothing,
- path = [],
- target = Nothing,
- navigator = Nothing,
- has_switched_weapons = False
- }
-
-try_getting_active_character : Type -> (Maybe Struct.Character.Type)
-try_getting_active_character ct = ct.active_character
-
-can_select_target : Type -> Bool
-can_select_target ct = (ct.state == MovedCharacter)
-
-set_active_character : (
- Struct.Character.Type ->
- Type ->
- Type
- )
-set_active_character char ct =
- {ct |
- state = SelectedCharacter,
- active_character = (Just char),
- path = [],
- target = Nothing,
- navigator = Nothing,
- has_switched_weapons = False
- }
-
-get_state : Type -> State
-get_state ct = ct.state
-
-get_path : Type -> (List Struct.Direction.Type)
-get_path ct = ct.path
-
-lock_path : Type -> Type
-lock_path ct =
- case ct.navigator of
- (Just old_nav) ->
- {ct |
- state = MovedCharacter,
- path = (Struct.Navigator.get_path old_nav),
- target = Nothing,
- navigator = (Just (Struct.Navigator.lock_path old_nav))
- }
-
- Nothing ->
- ct
-
-try_getting_navigator : Type -> (Maybe Struct.Navigator.Type)
-try_getting_navigator ct = ct.navigator
-
-set_navigator : Struct.Navigator.Type -> Type -> Type
-set_navigator navigator ct =
- {ct |
- state = SelectedCharacter,
- path = [],
- target = Nothing,
- navigator = (Just navigator)
- }
-
-set_has_switched_weapons : Bool -> Type -> Type
-set_has_switched_weapons v ct =
- {ct |
- has_switched_weapons = v
- }
-
-has_switched_weapons : Type -> Bool
-has_switched_weapons ct = ct.has_switched_weapons
-
-set_target : (Maybe Int) -> Type -> Type
-set_target target ct =
- {ct |
- state = ChoseTarget,
- target = target
- }
-
-try_getting_target : Type -> (Maybe Int)
-try_getting_target ct = ct.target
diff --git a/src/battlemap/src/Struct/Direction.elm b/src/battlemap/src/Struct/Direction.elm
deleted file mode 100644
index 600138c..0000000
--- a/src/battlemap/src/Struct/Direction.elm
+++ /dev/null
@@ -1,52 +0,0 @@
-module Struct.Direction exposing (Type(..), opposite_of, to_string, decoder)
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-
--- Battlemap -------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type Type =
- None
- | Left
- | Right
- | Up
- | Down
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-from_string : String -> Type
-from_string str =
- case str of
- "R" -> Right
- "L" -> Left
- "U" -> Up
- "D" -> Down
- _ -> None
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-opposite_of : Type -> Type
-opposite_of d =
- case d of
- Left -> Right
- Right -> Left
- Up -> Down
- Down -> Up
- None -> None
-
-to_string : Type -> String
-to_string dir =
- case dir of
- Right -> "R"
- Left -> "L"
- Up -> "U"
- Down -> "D"
- None -> "N"
-
-decoder : (Json.Decode.Decoder Type)
-decoder = (Json.Decode.map (from_string) Json.Decode.string)
diff --git a/src/battlemap/src/Struct/Error.elm b/src/battlemap/src/Struct/Error.elm
deleted file mode 100644
index 5f40c09..0000000
--- a/src/battlemap/src/Struct/Error.elm
+++ /dev/null
@@ -1,45 +0,0 @@
-module Struct.Error exposing (Type, Mode(..), new, to_string)
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type Mode =
- IllegalAction
- | Programming
- | Unimplemented
- | Networking
- | Failure
-
-type alias Type =
- {
- mode: Mode,
- message: String
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-new : Mode -> String -> Type
-new mode str =
- {
- mode = mode,
- message = str
- }
-
-to_string : Type -> String
-to_string e =
- (
- (case e.mode of
- Failure -> "The action failed: "
- IllegalAction -> "Request discarded: "
- Programming -> "Error in the program (please report): "
- Unimplemented -> "Update discarded due to unimplemented feature: "
- Networking -> "Error while conversing with the server: "
- )
- ++ e.message
- )
-
diff --git a/src/battlemap/src/Struct/Event.elm b/src/battlemap/src/Struct/Event.elm
deleted file mode 100644
index 716718e..0000000
--- a/src/battlemap/src/Struct/Event.elm
+++ /dev/null
@@ -1,44 +0,0 @@
-module Struct.Event exposing (Type(..), attempted)
-
--- Elm -------------------------------------------------------------------------
-import Http
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Direction
-import Struct.Error
-import Struct.Location
-import Struct.ServerReply
-import Struct.HelpRequest
-import Struct.UI
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type Type =
- AbortTurnRequest
- | AnimationEnded
- | AttackWithoutMovingRequest
- | CharacterInfoRequested Int
- | CharacterSelected Int
- | DebugLoadBattlemapRequest
- | DebugTeamSwitchRequest
- | DebugTestAnimation
- | DirectionRequested Struct.Direction.Type
- | Failed Struct.Error.Type
- | LookingForCharacter Int
- | None
- | ScaleChangeRequested Float
- | ServerReplied (Result Http.Error (List Struct.ServerReply.Type))
- | TabSelected Struct.UI.Tab
- | TileSelected Struct.Location.Ref
- | CharacterOrTileSelected Struct.Location.Ref
- | TurnEnded
- | RequestedHelp Struct.HelpRequest.Type
- | WeaponSwitchRequest
-
-attempted : (Result.Result err val) -> Type
-attempted act =
- case act of
- (Result.Ok _) -> None
- (Result.Err msg) ->
- (Failed (Struct.Error.new Struct.Error.Failure (toString msg)))
diff --git a/src/battlemap/src/Struct/Flags.elm b/src/battlemap/src/Struct/Flags.elm
deleted file mode 100644
index c0316f0..0000000
--- a/src/battlemap/src/Struct/Flags.elm
+++ /dev/null
@@ -1,42 +0,0 @@
-module Struct.Flags exposing
- (
- Type,
- maybe_get_param
- )
-
--- Elm -------------------------------------------------------------------------
-import List
-
--- Battlemap -------------------------------------------------------------------
-import Util.List
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias Type =
- {
- user_id : String,
- token : String,
- url_params : (List (List String))
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-maybe_get_param : String -> Type -> (Maybe String)
-maybe_get_param param flags =
- case
- (Util.List.get_first
- (\e -> ((List.head e) == (Just param)))
- flags.url_params
- )
- of
- Nothing -> Nothing
- (Just a) ->
- case (List.tail a) of
- Nothing -> Nothing
- (Just b) -> (List.head b)
diff --git a/src/battlemap/src/Struct/HelpRequest.elm b/src/battlemap/src/Struct/HelpRequest.elm
deleted file mode 100644
index 3357b56..0000000
--- a/src/battlemap/src/Struct/HelpRequest.elm
+++ /dev/null
@@ -1,13 +0,0 @@
-module Struct.HelpRequest exposing (Type(..))
-
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Character
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type Type =
- None
- | HelpOnRank Struct.Character.Rank
diff --git a/src/battlemap/src/Struct/Location.elm b/src/battlemap/src/Struct/Location.elm
deleted file mode 100644
index d284d05..0000000
--- a/src/battlemap/src/Struct/Location.elm
+++ /dev/null
@@ -1,59 +0,0 @@
-module Struct.Location exposing (..)
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-import Json.Decode.Pipeline
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Direction
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias Type =
- {
- x : Int,
- y : Int
- }
-
-type alias Ref = (Int, Int)
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-neighbor : Struct.Direction.Type -> Type -> Type
-neighbor dir loc =
- case dir of
- Struct.Direction.Right -> {loc | x = (loc.x + 1)}
- Struct.Direction.Left -> {loc | x = (loc.x - 1)}
- Struct.Direction.Up -> {loc | y = (loc.y - 1)}
- Struct.Direction.Down -> {loc | y = (loc.y + 1)}
- Struct.Direction.None -> loc
-
-get_ref : Type -> Ref
-get_ref l =
- (l.x, l.y)
-
-from_ref : Ref -> Type
-from_ref (x, y) =
- {x = x, y = y}
-
-dist : Type -> Type -> Int
-dist loc_a loc_b =
- (
- (abs (loc_a.x - loc_b.x))
- +
- (abs (loc_a.y - loc_b.y))
- )
-
-decoder : (Json.Decode.Decoder Type)
-decoder =
- (Json.Decode.Pipeline.decode
- Type
- |> (Json.Decode.Pipeline.required "x" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "y" Json.Decode.int)
- )
diff --git a/src/battlemap/src/Struct/Marker.elm b/src/battlemap/src/Struct/Marker.elm
deleted file mode 100644
index e3a051d..0000000
--- a/src/battlemap/src/Struct/Marker.elm
+++ /dev/null
@@ -1,10 +0,0 @@
-module Struct.Marker exposing (Type(..))
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type Type =
- CanAttackCanDefend
- | CanGoToCanDefend
- | CanAttackCantDefend
- | CanGoToCantDefend
diff --git a/src/battlemap/src/Struct/Model.elm b/src/battlemap/src/Struct/Model.elm
deleted file mode 100644
index 0095364..0000000
--- a/src/battlemap/src/Struct/Model.elm
+++ /dev/null
@@ -1,254 +0,0 @@
-module Struct.Model exposing
- (
- Type,
- new,
- add_character,
- update_character,
- update_character_fun,
- add_weapon,
- add_armor,
- add_tile,
- invalidate,
- initialize_animator,
- apply_animator_step,
- move_animator_to_next_step,
- reset,
- full_debug_reset,
- clear_error
- )
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Dict
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Armor
-import Struct.Battlemap
-import Struct.Character
-import Struct.CharacterTurn
-import Struct.Error
-import Struct.Flags
-import Struct.HelpRequest
-import Struct.Tile
-import Struct.TurnResult
-import Struct.TurnResultAnimator
-import Struct.UI
-import Struct.Weapon
-
-import Util.Array
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias Type =
- {
- help_request: Struct.HelpRequest.Type,
- animator: (Maybe Struct.TurnResultAnimator.Type),
- battlemap: Struct.Battlemap.Type,
- characters: (Array.Array Struct.Character.Type),
- weapons: (Dict.Dict Struct.Weapon.Ref Struct.Weapon.Type),
- armors: (Dict.Dict Struct.Armor.Ref Struct.Armor.Type),
- tiles: (Dict.Dict Struct.Tile.Ref Struct.Tile.Type),
- error: (Maybe Struct.Error.Type),
- player_id: String,
- battlemap_id: String,
- session_token: String,
- player_ix: Int,
- ui: Struct.UI.Type,
- char_turn: Struct.CharacterTurn.Type,
- timeline: (Array.Array Struct.TurnResult.Type)
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-new : Struct.Flags.Type -> Type
-new flags =
- let
- maybe_battlemap_id = (Struct.Flags.maybe_get_param "id" flags)
- model =
- {
- help_request = Struct.HelpRequest.None,
- animator = Nothing,
- battlemap = (Struct.Battlemap.empty),
- characters = (Array.empty),
- weapons = (Dict.empty),
- armors = (Dict.empty),
- tiles = (Dict.empty),
- error = Nothing,
- battlemap_id = "",
- player_id =
- (
- if (flags.user_id == "")
- then "0"
- else flags.user_id
- ),
- session_token = flags.token,
- player_ix = 0,
- ui = (Struct.UI.default),
- char_turn = (Struct.CharacterTurn.new),
- timeline = (Array.empty)
- }
- in
- case maybe_battlemap_id of
- Nothing ->
- (invalidate
- (Struct.Error.new
- Struct.Error.Failure
- "Could not find battlemap id."
- )
- model
- )
-
- (Just id) -> {model | battlemap_id = id}
-
-add_character : Struct.Character.Type -> Type -> Type
-add_character char model =
- {model |
- characters =
- (Array.push
- char
- model.characters
- )
- }
-
-add_weapon : Struct.Weapon.Type -> Type -> Type
-add_weapon wp model =
- {model |
- weapons =
- (Dict.insert
- (Struct.Weapon.get_id wp)
- wp
- model.weapons
- )
- }
-
-add_armor : Struct.Armor.Type -> Type -> Type
-add_armor ar model =
- {model |
- armors =
- (Dict.insert
- (Struct.Armor.get_id ar)
- ar
- model.armors
- )
- }
-
-add_tile : Struct.Tile.Type -> Type -> Type
-add_tile tl model =
- {model |
- tiles =
- (Dict.insert
- (Struct.Tile.get_id tl)
- tl
- model.tiles
- )
- }
-
-reset : Type -> Type
-reset model =
- {model |
- help_request = Struct.HelpRequest.None,
- error = Nothing,
- ui =
- (Struct.UI.reset_displayed_nav
- (Struct.UI.set_previous_action Nothing model.ui)
- ),
- char_turn = (Struct.CharacterTurn.new)
- }
-
-full_debug_reset : Type -> Type
-full_debug_reset model =
- {model |
- help_request = Struct.HelpRequest.None,
- animator = Nothing,
- battlemap = (Struct.Battlemap.empty),
- characters = (Array.empty),
- weapons = (Dict.empty),
- armors = (Dict.empty),
- tiles = (Dict.empty),
- error = Nothing,
- ui = (Struct.UI.default),
- char_turn = (Struct.CharacterTurn.new),
- timeline = (Array.empty)
- }
-
-initialize_animator : Type -> Type
-initialize_animator model =
- let
- timeline_list = (Array.toList model.timeline)
- in
- {model |
- animator =
- (Struct.TurnResultAnimator.maybe_new
- (List.reverse timeline_list)
- True
- ),
- ui = (Struct.UI.default),
- characters =
- (List.foldr
- (Struct.TurnResult.apply_inverse_to_characters)
- model.characters
- timeline_list
- )
- }
-
-move_animator_to_next_step : Type -> Type
-move_animator_to_next_step model =
- case model.animator of
- Nothing -> model
- (Just animator) ->
- {model |
- animator =
- (Struct.TurnResultAnimator.maybe_trigger_next_step animator)
- }
-
-apply_animator_step : Type -> Type
-apply_animator_step model =
- case model.animator of
- Nothing -> model
- (Just animator) ->
- {model |
- characters =
- case
- (Struct.TurnResultAnimator.get_current_animation animator)
- of
- (Struct.TurnResultAnimator.TurnResult turn_result) ->
- (Struct.TurnResult.apply_step_to_characters
- turn_result
- model.characters
- )
-
- _ -> model.characters
- }
-
-update_character : Int -> Struct.Character.Type -> Type -> Type
-update_character ix new_val model =
- {model |
- characters = (Array.set ix new_val model.characters)
- }
-
-update_character_fun : (
- Int ->
- ((Maybe Struct.Character.Type) -> (Maybe Struct.Character.Type)) ->
- Type ->
- Type
- )
-update_character_fun ix fun model =
- {model |
- characters = (Util.Array.update ix (fun) model.characters)
- }
-
-invalidate : Struct.Error.Type -> Type -> Type
-invalidate err model =
- {model |
- error = (Just err)
- }
-
-clear_error : Type -> Type
-clear_error model = {model | error = Nothing}
diff --git a/src/battlemap/src/Struct/Navigator.elm b/src/battlemap/src/Struct/Navigator.elm
deleted file mode 100644
index 46ad92c..0000000
--- a/src/battlemap/src/Struct/Navigator.elm
+++ /dev/null
@@ -1,192 +0,0 @@
-module Struct.Navigator exposing
- (
- Type,
- Summary,
- new,
- get_current_location,
- get_starting_location,
- get_remaining_points,
- get_range_markers,
- get_path,
- get_summary,
- clear_path,
- lock_path,
- try_adding_step,
- try_getting_path_to
- )
-
--- Elm -------------------------------------------------------------------------
-import Dict
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Location
-import Struct.Direction
-import Struct.Marker
-import Struct.Path
-import Struct.RangeIndicator
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias Type =
- {
- starting_location: Struct.Location.Type,
- movement_dist: Int,
- attack_dist: Int,
- defense_dist: Int,
- path: Struct.Path.Type,
- locked_path: Bool,
- range_indicators:
- (Dict.Dict
- Struct.Location.Ref
- Struct.RangeIndicator.Type
- ),
- cost_fun: (Struct.Location.Type -> Int)
- }
-
-type alias Summary =
- {
- starting_location: Struct.Location.Type,
- path: (List Struct.Direction.Type),
- markers: (List (Struct.Location.Ref, Struct.Marker.Type)),
- locked_path: Bool
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-new : (
- Struct.Location.Type ->
- Int ->
- Int ->
- Int ->
- (Struct.Location.Type -> Int) ->
- Type
- )
-new start_loc mov_dist atk_dist def_dist cost_fun =
- {
- starting_location = start_loc,
- movement_dist = mov_dist,
- attack_dist = atk_dist,
- defense_dist = def_dist,
- path = (Struct.Path.new start_loc mov_dist),
- locked_path = False,
- range_indicators =
- (Struct.RangeIndicator.generate
- start_loc
- mov_dist
- atk_dist
- def_dist
- (cost_fun)
- ),
- cost_fun = cost_fun
- }
-
-get_current_location : Type -> Struct.Location.Type
-get_current_location navigator =
- (Struct.Path.get_current_location navigator.path)
-
-get_starting_location : Type -> Struct.Location.Type
-get_starting_location navigator = navigator.starting_location
-
-get_remaining_points : Type -> Int
-get_remaining_points navigator =
- (Struct.Path.get_remaining_points navigator.path)
-
-get_range_markers : (
- Type ->
- (List
- (Struct.Location.Ref, Struct.RangeIndicator.Type)
- )
- )
-get_range_markers navigator = (Dict.toList navigator.range_indicators)
-
-get_path : Type -> (List Struct.Direction.Type)
-get_path navigator = (Struct.Path.get_summary navigator.path)
-
-get_summary : Type -> Summary
-get_summary navigator =
- {
- starting_location = navigator.starting_location,
- path = (Struct.Path.get_summary navigator.path),
- markers =
- (List.map
- (\(loc, range_indicator) ->
- (
- loc,
- (Struct.RangeIndicator.get_marker
- range_indicator
- )
- )
- )
- (Dict.toList
- navigator.range_indicators
- )
- ),
- locked_path = navigator.locked_path
- }
-
-clear_path : Type -> Type
-clear_path navigator =
- if (navigator.locked_path)
- then
- navigator
- else
- {navigator |
- path =
- (Struct.Path.new
- navigator.starting_location
- navigator.movement_dist
- )
- }
-
-lock_path : Type -> Type
-lock_path navigator =
- {navigator |
- range_indicators =
- (Struct.RangeIndicator.generate
- (Struct.Path.get_current_location navigator.path)
- 0
- navigator.attack_dist
- navigator.defense_dist
- (navigator.cost_fun)
- ),
- locked_path = True
- }
-
-try_adding_step : (
- Struct.Direction.Type ->
- Type ->
- (Maybe Type)
- )
-try_adding_step dir navigator =
- if (navigator.locked_path)
- then
- Nothing
- else
- case
- (Struct.Path.try_following_direction
- (navigator.cost_fun)
- (Just navigator.path)
- dir
- )
- of
- (Just path) -> (Just {navigator | path = path})
- Nothing -> Nothing
-
-try_getting_path_to : (
- Struct.Location.Ref ->
- Type ->
- (Maybe (List Struct.Direction.Type))
- )
-try_getting_path_to loc_ref navigator =
- case (Dict.get loc_ref navigator.range_indicators) of
- (Just target) ->
- (Just (Struct.RangeIndicator.get_path target))
-
- Nothing -> Nothing
-
diff --git a/src/battlemap/src/Struct/Path.elm b/src/battlemap/src/Struct/Path.elm
deleted file mode 100644
index 70f28ac..0000000
--- a/src/battlemap/src/Struct/Path.elm
+++ /dev/null
@@ -1,175 +0,0 @@
-module Struct.Path exposing
- (
- Type,
- new,
- get_current_location,
- get_remaining_points,
- get_summary,
- try_following_direction
- )
-
--- Elm -------------------------------------------------------------------------
-import Set
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Direction
-import Struct.Location
-
-import Util.List
-
-import Constants.Movement
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias Type =
- {
- current_location : Struct.Location.Type,
- visited_locations : (Set.Set Struct.Location.Ref),
- previous_directions : (List Struct.Direction.Type),
- previous_points : (List Int),
- remaining_points : Int
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-has_been_to : (
- Type ->
- Struct.Location.Type ->
- Bool
- )
-has_been_to path location =
- (
- (path.current_location == location)
- ||
- (Set.member
- (Struct.Location.get_ref location)
- path.visited_locations
- )
- )
-
-try_moving_to : (
- Type ->
- Struct.Direction.Type ->
- Struct.Location.Type ->
- Int ->
- (Maybe Type)
- )
-try_moving_to path dir next_loc cost =
- let
- remaining_points = (path.remaining_points - cost)
- in
- if (remaining_points >= 0)
- then
- (Just
- {path |
- current_location = next_loc,
- visited_locations =
- (Set.insert
- (Struct.Location.get_ref path.current_location)
- path.visited_locations
- ),
- previous_directions = (dir :: path.previous_directions),
- previous_points =
- (path.remaining_points :: path.previous_points),
- remaining_points = remaining_points
- }
- )
- else
- Nothing
-
-try_backtracking_to : (
- Type ->
- Struct.Direction.Type ->
- Struct.Location.Type ->
- (Maybe Type)
- )
-try_backtracking_to path dir location =
- case
- (
- (Util.List.pop path.previous_directions),
- (Util.List.pop path.previous_points)
- )
- of
- (
- (Just (prev_dir_head, prev_dir_tail)),
- (Just (prev_pts_head, prev_pts_tail))
- ) ->
- if (prev_dir_head == (Struct.Direction.opposite_of dir))
- then
- (Just
- {path |
- current_location = location,
- visited_locations =
- (Set.remove
- (Struct.Location.get_ref location)
- path.visited_locations
- ),
- previous_directions = prev_dir_tail,
- previous_points = prev_pts_tail,
- remaining_points = prev_pts_head
- }
- )
- else
- Nothing
-
- (_, _) ->
- Nothing
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-
-new : Struct.Location.Type -> Int -> Type
-new start points =
- {
- current_location = start,
- visited_locations = Set.empty,
- previous_directions = [],
- previous_points = [],
- remaining_points = points
- }
-
-get_current_location : Type -> Struct.Location.Type
-get_current_location path = path.current_location
-
-get_remaining_points : Type -> Int
-get_remaining_points path = path.remaining_points
-
-get_summary : Type -> (List Struct.Direction.Type)
-get_summary path = path.previous_directions
-
-try_following_direction : (
- (Struct.Location.Type -> Int) ->
- (Maybe Type) ->
- Struct.Direction.Type ->
- (Maybe Type)
- )
-try_following_direction cost_fun maybe_path dir =
- case maybe_path of
- (Just path) ->
- let
- next_location =
- (Struct.Location.neighbor
- dir
- path.current_location
- )
- next_location_cost = (cost_fun next_location)
- in
- if (next_location_cost <= Constants.Movement.max_points)
- then
- if (has_been_to path next_location)
- then
- (try_backtracking_to path dir next_location)
- else
- (try_moving_to
- path
- dir
- next_location
- next_location_cost
- )
- else
- Nothing
-
- Nothing -> Nothing
diff --git a/src/battlemap/src/Struct/RangeIndicator.elm b/src/battlemap/src/Struct/RangeIndicator.elm
deleted file mode 100644
index 04eafe0..0000000
--- a/src/battlemap/src/Struct/RangeIndicator.elm
+++ /dev/null
@@ -1,344 +0,0 @@
-module Struct.RangeIndicator exposing
- (
- Type,
- generate,
- get_marker,
- get_path
- )
-
--- Elm -------------------------------------------------------------------------
-import Dict
-import List
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Direction
-import Struct.Location
-import Struct.Marker
-
-import Constants.Movement
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias Type =
- {
- distance: Int,
- true_range: Int,
- atk_range: Int,
- path: (List Struct.Direction.Type),
- marker: Struct.Marker.Type
- }
-
-type alias SearchParameters =
- {
- maximum_distance: Int,
- maximum_attack_range: Int,
- minimum_defense_range: Int,
- cost_function: (Struct.Location.Type -> Int),
- true_range_fun: (Struct.Location.Type -> Int)
- }
-
-type alias LocatedIndicator =
- {
- location_ref: Struct.Location.Ref,
- indicator: Type
- }
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_closest : (
- Int ->
- Struct.Location.Ref ->
- Type ->
- LocatedIndicator ->
- LocatedIndicator
- )
-get_closest max_dist ref indicator current_best =
- if (is_closer max_dist indicator current_best.indicator)
- then
- {
- location_ref = ref,
- indicator = indicator
- }
- else
- current_best
-
-is_closer : Int -> Type -> Type -> Bool
-is_closer max_dist candidate current =
- (
- -- It's closer when moving
- (candidate.distance < current.distance)
- ||
- (
- -- Or neither are reachable by moving,
- (max_dist <= candidate.distance)
- && (max_dist <= current.distance)
- -- but the new one is closer when attacking.
- && (candidate.atk_range < current.atk_range)
- )
- )
-
-generate_neighbor : (
- SearchParameters ->
- Struct.Location.Type ->
- Struct.Direction.Type ->
- Type ->
- (Int, Type)
- )
-generate_neighbor search_params neighbor_loc dir src_indicator =
- let
- node_cost = (search_params.cost_function neighbor_loc)
- new_dist =
- if (node_cost == Constants.Movement.cost_when_occupied_tile)
- then
- (search_params.maximum_distance + 1)
- else
- (src_indicator.distance + node_cost)
- new_atk_range = (src_indicator.atk_range + 1)
- new_true_range = (search_params.true_range_fun neighbor_loc)
- can_defend = (new_true_range > search_params.minimum_defense_range)
- in
- if (new_dist > search_params.maximum_distance)
- then
- (
- node_cost,
- {
- distance = (search_params.maximum_distance + 1),
- atk_range = new_atk_range,
- true_range = new_true_range,
- path = (dir :: src_indicator.path),
- marker =
- if (can_defend)
- then
- Struct.Marker.CanAttackCanDefend
- else
- Struct.Marker.CanAttackCantDefend
- }
- )
- else
- (
- node_cost,
- {
- distance = new_dist,
- atk_range = 0,
- true_range = new_true_range,
- path = (dir :: src_indicator.path),
- marker =
- if (can_defend)
- then
- Struct.Marker.CanGoToCanDefend
- else
- Struct.Marker.CanGoToCantDefend
- }
- )
-
-candidate_is_acceptable : (SearchParameters -> Int -> Type -> Bool)
-candidate_is_acceptable search_params cost candidate =
- (
- (cost /= Constants.Movement.cost_when_out_of_bounds)
- &&
- (
- (candidate.distance <= search_params.maximum_distance)
- || (candidate.atk_range <= search_params.maximum_attack_range)
- )
- )
-
-candidate_is_an_improvement : (
- SearchParameters ->
- Struct.Location.Ref ->
- Type ->
- (Dict.Dict Struct.Location.Ref Type) ->
- Bool
- )
-candidate_is_an_improvement search_params loc_ref candidate alternatives =
- case (Dict.get loc_ref alternatives) of
- (Just alternative) ->
- (is_closer search_params.maximum_distance candidate alternative)
-
- Nothing ->
- True
-
-handle_neighbors : (
- LocatedIndicator ->
- (Dict.Dict Struct.Location.Ref Type) ->
- SearchParameters ->
- Struct.Direction.Type ->
- (Dict.Dict Struct.Location.Ref Type) ->
- (Dict.Dict Struct.Location.Ref Type)
- )
-handle_neighbors src results search_params dir remaining =
- let
- src_loc = (Struct.Location.from_ref src.location_ref)
- neighbor_loc = (Struct.Location.neighbor dir src_loc)
- neighbor_loc_ref = (Struct.Location.get_ref neighbor_loc)
- in
- case (Dict.get neighbor_loc_ref results) of
- (Just _) ->
- -- A minimal path for this location has already been found
- remaining
-
- Nothing ->
- let
- (candidate_cost, candidate) =
- (generate_neighbor
- search_params
- neighbor_loc
- dir
- src.indicator
- )
- in
- if
- (
- (candidate_is_acceptable
- search_params
- candidate_cost
- candidate
- )
- &&
- (candidate_is_an_improvement
- search_params
- neighbor_loc_ref
- candidate
- remaining
- )
- )
- then
- (Dict.insert neighbor_loc_ref candidate remaining)
- else
- remaining
-
-find_closest_in : (
- SearchParameters ->
- (Dict.Dict Struct.Location.Ref Type) ->
- LocatedIndicator
- )
-find_closest_in search_params remaining =
- (Dict.foldl
- (get_closest search_params.maximum_distance)
- {
- location_ref = (-1, -1),
- indicator =
- {
- distance = Constants.Movement.cost_when_out_of_bounds,
- path = [],
- atk_range = Constants.Movement.cost_when_out_of_bounds,
- true_range = Constants.Movement.cost_when_out_of_bounds,
- marker = Struct.Marker.CanAttackCanDefend
- }
- }
- remaining
- )
-
-resolve_marker_type : SearchParameters -> Type -> Type
-resolve_marker_type search_params indicator =
- {indicator |
- marker =
- case
- (
- (indicator.atk_range > 0),
- (indicator.true_range <= search_params.minimum_defense_range)
- )
- of
- (True, True) -> Struct.Marker.CanAttackCantDefend
- (True, False) -> Struct.Marker.CanAttackCanDefend
- (False, True) -> Struct.Marker.CanGoToCantDefend
- (False, False) -> Struct.Marker.CanGoToCanDefend
- }
-
-insert_in_dictionary : (
- LocatedIndicator ->
- (Dict.Dict Struct.Location.Ref Type) ->
- (Dict.Dict Struct.Location.Ref Type)
- )
-insert_in_dictionary located_indicator dict =
- (Dict.insert
- located_indicator.location_ref
- located_indicator.indicator
- dict
- )
-
-search : (
- (Dict.Dict Struct.Location.Ref Type) ->
- (Dict.Dict Struct.Location.Ref Type) ->
- SearchParameters ->
- (Dict.Dict Struct.Location.Ref Type)
- )
-search result remaining search_params =
- if (Dict.isEmpty remaining)
- then
- result
- else
- let
- closest_located_indicator = (find_closest_in search_params remaining)
- finalized_clos_loc_ind =
- {closest_located_indicator|
- indicator =
- (resolve_marker_type
- search_params
- closest_located_indicator.indicator
- )
- }
- in
- (search
- (insert_in_dictionary finalized_clos_loc_ind result)
- (List.foldl
- (handle_neighbors
- finalized_clos_loc_ind
- result
- search_params
- )
- (Dict.remove finalized_clos_loc_ind.location_ref remaining)
- [
- Struct.Direction.Left,
- Struct.Direction.Right,
- Struct.Direction.Up,
- Struct.Direction.Down
- ]
- )
- search_params
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-generate : (
- Struct.Location.Type ->
- Int ->
- Int ->
- Int ->
- (Struct.Location.Type -> Int) ->
- (Dict.Dict Struct.Location.Ref Type)
- )
-generate location max_dist atk_range def_range cost_fun =
- (search
- Dict.empty
- (Dict.insert
- (Struct.Location.get_ref location)
- {
- distance = 0,
- path = [],
- atk_range = 0,
- true_range = 0,
- marker =
- if (def_range == 0)
- then
- Struct.Marker.CanGoToCanDefend
- else
- Struct.Marker.CanGoToCantDefend
- }
- Dict.empty
- )
- {
- maximum_distance = max_dist,
- maximum_attack_range = atk_range,
- minimum_defense_range = def_range,
- cost_function = (cost_fun),
- true_range_fun = (Struct.Location.dist location)
- }
- )
-
-get_marker : Type -> Struct.Marker.Type
-get_marker indicator = indicator.marker
-
-get_path : Type -> (List Struct.Direction.Type)
-get_path indicator = indicator.path
diff --git a/src/battlemap/src/Struct/ServerReply.elm b/src/battlemap/src/Struct/ServerReply.elm
deleted file mode 100644
index 5b88933..0000000
--- a/src/battlemap/src/Struct/ServerReply.elm
+++ /dev/null
@@ -1,33 +0,0 @@
-module Struct.ServerReply exposing (Type(..))
-
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Armor
-import Struct.Battlemap
-import Struct.Character
-import Struct.Tile
-import Struct.TurnResult
-import Struct.Weapon
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
-type Type =
- Okay
- | AddArmor Struct.Armor.Type
- | AddWeapon Struct.Weapon.Type
- | AddCharacter (Struct.Character.Type, Int, Int, Int)
- | AddTile Struct.Tile.Type
- | SetMap Struct.Battlemap.Type
- | TurnResults (List Struct.TurnResult.Type)
- | SetTimeline (List Struct.TurnResult.Type)
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
diff --git a/src/battlemap/src/Struct/Statistics.elm b/src/battlemap/src/Struct/Statistics.elm
deleted file mode 100644
index 5b7eb87..0000000
--- a/src/battlemap/src/Struct/Statistics.elm
+++ /dev/null
@@ -1,176 +0,0 @@
-module Struct.Statistics exposing
- (
- Type,
- get_movement_points,
- get_max_health,
- get_dodges,
- get_parries,
- get_damage_min,
- get_damage_max,
- get_accuracy,
- get_double_hits,
- get_critical_hits,
- new
- )
-
--- Elm -------------------------------------------------------------------------
-import List
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Attributes
-import Struct.Armor
-import Struct.Weapon
-import Struct.WeaponSet
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias Type =
- {
- movement_points : Int,
- max_health : Int,
- dodges : Int,
- parries : Int,
- damage_min : Int,
- damage_max : Int,
- accuracy : Int,
- double_hits : Int,
- critical_hits : Int
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-average : (List Int) -> Float
-average l = ((toFloat (List.sum l)) / (toFloat (List.length l)))
-
-float_to_int : Float -> Int
-float_to_int f =
- (ceiling f)
-
-gentle_squared_growth : Int -> Int
-gentle_squared_growth v = (float_to_int (((toFloat v)^1.8)/20.0))
-
-gentle_squared_growth_f : Float -> Int
-gentle_squared_growth_f v = (float_to_int ((v^1.8)/20.0))
-
-sudden_squared_growth : Int -> Int
-sudden_squared_growth v = (float_to_int (((toFloat v)^2.5)/1000.0))
-
-sudden_squared_growth_f : Float -> Int
-sudden_squared_growth_f v = (float_to_int ((v^2.5)/1000.0))
-
-sudden_exp_growth : Int -> Int
-sudden_exp_growth v = (float_to_int (4.0^((toFloat v)/25.0)))
-
-sudden_exp_growth_f : Float -> Int
-sudden_exp_growth_f f = (float_to_int (4.0^(f/25.0)))
-
-already_high_slow_growth : Int -> Int
-already_high_slow_growth v =
- (float_to_int
- (30.0 * (logBase 2.718281828459 (((toFloat v) + 5.0)/4.0)))
- )
-
-damage_base_mod : Float -> Float
-damage_base_mod str = (((str^1.8)/2000.0) - 0.75)
-
-apply_damage_base_mod : Float -> Float -> Int
-apply_damage_base_mod bmod dmg =
- (max 0 (float_to_int (dmg + (bmod * dmg))))
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_movement_points : Type -> Int
-get_movement_points t = t.movement_points
-
-get_max_health : Type -> Int
-get_max_health t = t.max_health
-
-get_dodges : Type -> Int
-get_dodges t = t.dodges
-
-get_parries : Type -> Int
-get_parries t = t.parries
-
-get_damage_min : Type -> Int
-get_damage_min t = t.damage_min
-
-get_damage_max : Type -> Int
-get_damage_max t = t.damage_max
-
-get_accuracy : Type -> Int
-get_accuracy t = t.accuracy
-
-get_double_hits : Type -> Int
-get_double_hits t = t.double_hits
-
-get_critical_hits : Type -> Int
-get_critical_hits t = t.critical_hits
-
-new : (
- Struct.Attributes.Type ->
- Struct.WeaponSet.Type ->
- Struct.Armor.Type ->
- Type
- )
-new att wp_set ar =
- let
- active_weapon = (Struct.WeaponSet.get_active_weapon wp_set)
- actual_att =
- (Struct.Armor.apply_to_attributes
- ar
- (Struct.Weapon.apply_to_attributes active_weapon att)
- )
- constitution = (Struct.Attributes.get_constitution actual_att)
- dexterity = (Struct.Attributes.get_dexterity actual_att)
- intelligence = (Struct.Attributes.get_intelligence actual_att)
- mind = (Struct.Attributes.get_mind actual_att)
- speed = (Struct.Attributes.get_speed actual_att)
- strength = (Struct.Attributes.get_strength actual_att)
- dmg_bmod = (damage_base_mod (toFloat strength))
- in
- {
- movement_points =
- (gentle_squared_growth_f
- (average [mind, constitution, constitution, speed, speed, speed])
- ),
- max_health =
- (gentle_squared_growth_f
- (average [constitution, constitution, constitution, mind])
- ),
- dodges =
- (clamp
- 0
- 100
- (sudden_exp_growth_f
- (average
- [dexterity, mind, speed]
- )
- )
- ),
- parries =
- (clamp
- 0
- 75
- (sudden_exp_growth_f
- (average [dexterity, intelligence, speed, strength])
- )
- ),
- damage_min =
- (apply_damage_base_mod
- dmg_bmod
- (toFloat (Struct.Weapon.get_min_damage active_weapon))
- ),
- damage_max =
- (apply_damage_base_mod
- dmg_bmod
- (toFloat (Struct.Weapon.get_max_damage active_weapon))
- ),
- accuracy = (sudden_squared_growth dexterity),
- double_hits =
- (clamp 0 100 (sudden_squared_growth_f (average [mind, speed]))),
- critical_hits =
- (clamp 0 100 (sudden_squared_growth intelligence))
- }
diff --git a/src/battlemap/src/Struct/Tile.elm b/src/battlemap/src/Struct/Tile.elm
deleted file mode 100644
index a683be3..0000000
--- a/src/battlemap/src/Struct/Tile.elm
+++ /dev/null
@@ -1,203 +0,0 @@
-module Struct.Tile exposing
- (
- Ref,
- Type,
- Instance,
- new,
- new_instance,
- error_tile_instance,
- get_id,
- get_name,
- get_range_minimum,
- get_range_maximum,
- get_cost,
- get_instance_cost,
- get_location,
- get_icon_id,
- get_type_id,
- get_variant_id,
- solve_tile_instance,
- decoder
- )
-
--- Elm -------------------------------------------------------------------------
-import List
-
-import Json.Decode
-import Json.Decode.Pipeline
-
--- Battlemap -------------------------------------------------------------------
-import Constants.UI
-import Constants.Movement
-
-import Struct.Location
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias Ref = Int
-
-type alias PartiallyDecoded =
- {
- id : Int,
- nam : String,
- ct : Int,
- rmi : Int,
- rma : Int
- }
-
-type alias Type =
- {
- id : Int,
- name : String,
- crossing_cost : Int,
- range_minimum : Int,
- range_maximum : Int
- }
-
-type alias Instance =
- {
- location : Struct.Location.Type,
- icon_id : Int,
- crossing_cost : Int,
- type_id : Int
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-noise_function : Int -> Int -> Int -> Int
-noise_function a b c =
- (round (radians (toFloat ((a + 1) * 2 + (b + 1) * 3 + c))))
-
-finish_decoding : PartiallyDecoded -> Type
-finish_decoding add_tile =
- {
- id = add_tile.id,
- name = add_tile.nam,
- crossing_cost = add_tile.ct,
- range_minimum = add_tile.rmi,
- range_maximum = add_tile.rma
- }
-
-seek_tile_instance_type : Instance -> Type -> (Maybe Type) -> (Maybe Type)
-seek_tile_instance_type instance candidate current_sol =
- if (current_sol == Nothing)
- then
- let
- icon_id = instance.icon_id
- in
- if
- (
- (icon_id >= candidate.range_minimum)
- && (icon_id <= candidate.range_maximum)
- )
- then
- (Just candidate)
- else
- current_sol
- else
- current_sol
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-new : Int -> String -> Int -> Int -> Int -> Type
-new id name crossing_cost range_minimum range_maximum =
- {
- id = id,
- name = name,
- crossing_cost = crossing_cost,
- range_minimum = range_minimum,
- range_maximum = range_maximum
- }
-
-new_instance : Int -> Int -> Int -> Int -> Int -> Instance
-new_instance x y icon_id crossing_cost type_id =
- {
- location = {x = x, y = y},
- icon_id = icon_id,
- crossing_cost = crossing_cost,
- type_id = type_id
- }
-
-error_tile_instance : Int -> Int -> Instance
-error_tile_instance x y =
- {
- location = {x = x, y = y},
- icon_id = -1,
- type_id = -1,
- crossing_cost = Constants.Movement.cost_when_out_of_bounds
- }
-
-
-get_id : Type -> Int
-get_id tile = tile.id
-
-get_cost : Type -> Int
-get_cost tile = tile.crossing_cost
-
-get_instance_cost : Instance -> Int
-get_instance_cost tile_inst = tile_inst.crossing_cost
-
-get_name : Type -> String
-get_name tile = tile.name
-
-get_range_minimum : Type -> Int
-get_range_minimum tile = tile.range_minimum
-
-get_range_maximum : Type -> Int
-get_range_maximum tile = tile.range_maximum
-
-get_location : Instance -> Struct.Location.Type
-get_location tile_inst = tile_inst.location
-
-get_icon_id : Instance -> String
-get_icon_id tile_inst = (toString tile_inst.icon_id)
-
-get_type_id: Instance -> Int
-get_type_id tile_inst = tile_inst.type_id
-
-get_variant_id : Instance -> Int
-get_variant_id tile_inst =
- (
- (noise_function
- tile_inst.location.x
- tile_inst.location.y
- tile_inst.crossing_cost
- )
- % Constants.UI.variants_per_tile
- )
-
-solve_tile_instance : (List Type) -> Instance -> Instance
-solve_tile_instance tiles tile_instance =
- let
- maybe_type =
- (List.foldr (seek_tile_instance_type tile_instance) Nothing tiles)
- in
- case maybe_type of
- (Just tile) ->
- {tile_instance |
- type_id = tile.id,
- crossing_cost = tile.crossing_cost
- }
-
- Nothing ->
- (error_tile_instance
- tile_instance.location.x
- tile_instance.location.y
- )
-
-decoder : (Json.Decode.Decoder Type)
-decoder =
- (Json.Decode.map
- (finish_decoding)
- (Json.Decode.Pipeline.decode
- PartiallyDecoded
- |> (Json.Decode.Pipeline.required "id" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "nam" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "ct" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "rmi" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "rma" Json.Decode.int)
- )
- )
diff --git a/src/battlemap/src/Struct/TurnResult.elm b/src/battlemap/src/Struct/TurnResult.elm
deleted file mode 100644
index af3930d..0000000
--- a/src/battlemap/src/Struct/TurnResult.elm
+++ /dev/null
@@ -1,502 +0,0 @@
-module Struct.TurnResult exposing
- (
- Type(..),
- Attack,
- Movement,
- WeaponSwitch,
- PlayerVictory,
- PlayerDefeat,
- PlayerTurnStart,
- get_next_movement_dir,
- get_actor_index,
- get_attack_defender_index,
- maybe_get_attack_next_step,
- apply_to_characters,
- apply_inverse_to_characters,
- apply_step_to_characters,
- maybe_remove_step,
- decoder
- )
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Json.Decode
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Attack
-import Struct.Character
-import Struct.Direction
-import Struct.Location
-import Struct.WeaponSet
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias Movement =
- {
- character_index : Int,
- path : (List Struct.Direction.Type),
- destination : Struct.Location.Type
- }
-
-type alias Attack =
- {
- attacker_index : Int,
- defender_index : Int,
- sequence : (List Struct.Attack.Type)
- }
-
-type alias WeaponSwitch =
- {
- character_index : Int
- }
-
-type alias PlayerVictory =
- {
- player_index : Int
- }
-
-type alias PlayerDefeat =
- {
- player_index : Int
- }
-
-type alias PlayerTurnStart =
- {
- player_index : Int
- }
-
-type Type =
- Moved Movement
- | Attacked Attack
- | SwitchedWeapon WeaponSwitch
- | PlayerWon PlayerVictory
- | PlayerLost PlayerDefeat
- | PlayerTurnStarted PlayerTurnStart
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_movement_to_character : (
- Movement ->
- Struct.Character.Type ->
- Struct.Character.Type
- )
-apply_movement_to_character movement char =
- (Struct.Character.set_location movement.destination char)
-
-apply_movement_step_to_character : (
- Movement ->
- Struct.Character.Type ->
- Struct.Character.Type
- )
-apply_movement_step_to_character movement char =
- case (List.head movement.path) of
- (Just dir) ->
- (Struct.Character.set_location
- (Struct.Location.neighbor dir (Struct.Character.get_location char))
- char
- )
-
- Nothing -> char
-
-apply_inverse_movement_to_character : (
- Movement ->
- Struct.Character.Type ->
- Struct.Character.Type
- )
-apply_inverse_movement_to_character movement char =
- (Struct.Character.set_location
- (List.foldr
- (Struct.Location.neighbor)
- (movement.destination)
- (List.map (Struct.Direction.opposite_of) movement.path)
- )
- char
- )
-
-apply_weapon_switch_to_character : (
- Struct.Character.Type ->
- Struct.Character.Type
- )
-apply_weapon_switch_to_character char =
- (Struct.Character.set_weapons
- (Struct.WeaponSet.switch_weapons
- (Struct.Character.get_weapons char)
- )
- char
- )
-
-apply_attack_to_characters : (
- Attack ->
- (Array.Array Struct.Character.Type) ->
- (Array.Array Struct.Character.Type)
- )
-apply_attack_to_characters attack characters =
- (List.foldl
- (Struct.Attack.apply_to_characters
- attack.attacker_index
- attack.defender_index
- )
- characters
- attack.sequence
- )
-
-apply_player_defeat_to_characters : (
- PlayerDefeat ->
- (Array.Array Struct.Character.Type) ->
- (Array.Array Struct.Character.Type)
- )
-apply_player_defeat_to_characters pdefeat characters =
- (Array.map
- (\c ->
- (
- if ((Struct.Character.get_player_ix c) == pdefeat.player_index)
- then (Struct.Character.set_defeated True c)
- else c
- )
- )
- characters
- )
-
-apply_inverse_player_defeat_to_characters : (
- PlayerDefeat ->
- (Array.Array Struct.Character.Type) ->
- (Array.Array Struct.Character.Type)
- )
-apply_inverse_player_defeat_to_characters pdefeat characters =
- (Array.map
- (\c ->
- (
- if ((Struct.Character.get_player_ix c) == pdefeat.player_index)
- then (Struct.Character.set_defeated False c)
- else c
- )
- )
- characters
- )
-
-apply_attack_step_to_characters : (
- Attack ->
- (Array.Array Struct.Character.Type) ->
- (Array.Array Struct.Character.Type)
- )
-apply_attack_step_to_characters attack characters =
- case (List.head attack.sequence) of
- (Just attack_step) ->
- (Struct.Attack.apply_to_characters
- attack.attacker_index
- attack.defender_index
- attack_step
- characters
- )
-
- Nothing -> characters
-
-apply_inverse_attack_to_characters : (
- Attack ->
- (Array.Array Struct.Character.Type) ->
- (Array.Array Struct.Character.Type)
- )
-apply_inverse_attack_to_characters attack characters =
- (List.foldr
- (Struct.Attack.apply_inverse_to_characters
- attack.attacker_index
- attack.defender_index
- )
- characters
- attack.sequence
- )
-
-movement_decoder : (Json.Decode.Decoder Movement)
-movement_decoder =
- (Json.Decode.map3
- Movement
- (Json.Decode.field "ix" Json.Decode.int)
- (Json.Decode.field
- "p"
- (Json.Decode.list (Struct.Direction.decoder))
- )
- (Json.Decode.field
- "nlc"
- (Struct.Location.decoder)
- )
- )
-
-attack_decoder : (Json.Decode.Decoder Attack)
-attack_decoder =
- (Json.Decode.map3
- Attack
- (Json.Decode.field "aix" Json.Decode.int)
- (Json.Decode.field "dix" Json.Decode.int)
- (Json.Decode.field
- "seq"
- (Json.Decode.list (Struct.Attack.decoder))
- )
- )
-
-weapon_switch_decoder : (Json.Decode.Decoder WeaponSwitch)
-weapon_switch_decoder =
- (Json.Decode.map
- WeaponSwitch
- (Json.Decode.field "ix" Json.Decode.int)
- )
-
-player_won_decoder : (Json.Decode.Decoder PlayerVictory)
-player_won_decoder =
- (Json.Decode.map
- PlayerVictory
- (Json.Decode.field "ix" Json.Decode.int)
- )
-
-player_lost_decoder : (Json.Decode.Decoder PlayerDefeat)
-player_lost_decoder =
- (Json.Decode.map
- PlayerDefeat
- (Json.Decode.field "ix" Json.Decode.int)
- )
-
-player_turn_started_decoder : (Json.Decode.Decoder PlayerTurnStart)
-player_turn_started_decoder =
- (Json.Decode.map
- PlayerTurnStart
- (Json.Decode.field "ix" Json.Decode.int)
- )
-
-internal_decoder : String -> (Json.Decode.Decoder Type)
-internal_decoder kind =
- case kind of
- "swp" ->
- (Json.Decode.map
- (\x -> (SwitchedWeapon x))
- (weapon_switch_decoder)
- )
-
- "mv" ->
- (Json.Decode.map
- (\x -> (Moved x))
- (movement_decoder)
- )
-
- "atk" ->
- (Json.Decode.map
- (\x -> (Attacked x))
- (attack_decoder)
- )
-
- "pwo" ->
- (Json.Decode.map
- (\x -> (PlayerWon x))
- (player_won_decoder)
- )
-
- "plo" ->
- (Json.Decode.map
- (\x -> (PlayerLost x))
- (player_lost_decoder)
- )
-
- "pts" ->
- (Json.Decode.map
- (\x -> (PlayerTurnStarted x))
- (player_turn_started_decoder)
- )
-
- other ->
- (Json.Decode.fail
- (
- "Unknown kind of turn result: \""
- ++ other
- ++ "\"."
- )
- )
-
-maybe_remove_movement_step : Movement -> (Maybe Type)
-maybe_remove_movement_step movement =
- case (List.tail movement.path) of
- Nothing -> Nothing
- (Just path_tail) ->
- (Just
- (Moved
- {movement |
- path = path_tail
- }
- )
- )
-
-maybe_remove_attack_step : Attack -> (Maybe Type)
-maybe_remove_attack_step attack =
- case (List.tail attack.sequence) of
- Nothing -> Nothing
- (Just sequence_tail) ->
- (Just
- (Attacked
- {attack |
- sequence = sequence_tail
- }
- )
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to_characters : (
- Type ->
- (Array.Array Struct.Character.Type) ->
- (Array.Array Struct.Character.Type)
- )
-apply_to_characters turn_result characters =
- case turn_result of
- (Moved movement) ->
- case (Array.get movement.character_index characters) of
- (Just char) ->
- (Array.set
- movement.character_index
- (apply_movement_to_character movement char)
- characters
- )
-
- Nothing ->
- characters
-
- (SwitchedWeapon weapon_switch) ->
- case (Array.get weapon_switch.character_index characters) of
- (Just char) ->
- (Array.set
- weapon_switch.character_index
- (apply_weapon_switch_to_character char)
- characters
- )
-
- Nothing ->
- characters
-
- (Attacked attack) ->
- (apply_attack_to_characters attack characters)
-
- (PlayerWon pvict) -> characters
-
- (PlayerLost pdefeat) ->
- (apply_player_defeat_to_characters pdefeat characters)
-
- (PlayerTurnStarted pturns) -> characters
-
-apply_step_to_characters : (
- Type ->
- (Array.Array Struct.Character.Type) ->
- (Array.Array Struct.Character.Type)
- )
-apply_step_to_characters turn_result characters =
- case turn_result of
- (Moved movement) ->
- case (Array.get movement.character_index characters) of
- (Just char) ->
- (Array.set
- movement.character_index
- (apply_movement_step_to_character movement char)
- characters
- )
-
- Nothing ->
- characters
-
- (SwitchedWeapon weapon_switch) ->
- case (Array.get weapon_switch.character_index characters) of
- (Just char) ->
- (Array.set
- weapon_switch.character_index
- (apply_weapon_switch_to_character char)
- characters
- )
-
- Nothing ->
- characters
-
- (Attacked attack) ->
- (apply_attack_step_to_characters attack characters)
-
- (PlayerWon pvict) -> characters
-
- (PlayerLost pdefeat) ->
- (apply_player_defeat_to_characters pdefeat characters)
-
- (PlayerTurnStarted pturns) -> characters
-
-apply_inverse_to_characters : (
- Type ->
- (Array.Array Struct.Character.Type) ->
- (Array.Array Struct.Character.Type)
- )
-apply_inverse_to_characters turn_result characters =
- case turn_result of
- (Moved movement) ->
- case (Array.get movement.character_index characters) of
- (Just char) ->
- (Array.set
- movement.character_index
- (apply_inverse_movement_to_character movement char)
- characters
- )
-
- Nothing ->
- characters
-
- (SwitchedWeapon weapon_switch) ->
- case (Array.get weapon_switch.character_index characters) of
- (Just char) ->
- (Array.set
- weapon_switch.character_index
- (apply_weapon_switch_to_character char)
- characters
- )
-
- Nothing ->
- characters
-
- (Attacked attack) ->
- (apply_inverse_attack_to_characters attack characters)
-
- (PlayerWon pvict) -> characters
-
- (PlayerLost pdefeat) ->
- (apply_inverse_player_defeat_to_characters pdefeat characters)
-
- (PlayerTurnStarted pturns) -> characters
-
-decoder : (Json.Decode.Decoder Type)
-decoder =
- (Json.Decode.field "t" Json.Decode.string)
- |> (Json.Decode.andThen internal_decoder)
-
-maybe_remove_step : Type -> (Maybe Type)
-maybe_remove_step turn_result =
- case turn_result of
- (Moved movement) -> (maybe_remove_movement_step movement)
- (SwitchedWeapon _) -> Nothing
- (Attacked attack) -> (maybe_remove_attack_step attack)
- (PlayerWon pvict) -> Nothing
- (PlayerLost pdefeat) -> Nothing
- (PlayerTurnStarted pturns) -> Nothing
-
-get_next_movement_dir : Movement -> Struct.Direction.Type
-get_next_movement_dir movement =
- case (List.head movement.path) of
- (Just dir) -> dir
- Nothing -> Struct.Direction.None
-
-get_attack_defender_index : Attack -> Int
-get_attack_defender_index attack = attack.defender_index
-
-maybe_get_attack_next_step : Attack -> (Maybe Struct.Attack.Type)
-maybe_get_attack_next_step attack = (List.head attack.sequence)
-
-get_actor_index : Type -> Int
-get_actor_index turn_result =
- case turn_result of
- (Moved movement) -> movement.character_index
- (SwitchedWeapon weapon_switch) -> weapon_switch.character_index
- (Attacked attack) -> attack.attacker_index
- (PlayerWon pvict) -> pvict.player_index
- (PlayerLost pdefeat) -> pdefeat.player_index
- (PlayerTurnStarted pturns) -> pturns.player_index
diff --git a/src/battlemap/src/Struct/TurnResultAnimator.elm b/src/battlemap/src/Struct/TurnResultAnimator.elm
deleted file mode 100644
index 827b56e..0000000
--- a/src/battlemap/src/Struct/TurnResultAnimator.elm
+++ /dev/null
@@ -1,123 +0,0 @@
-module Struct.TurnResultAnimator exposing
- (
- Type,
- Animation(..),
- maybe_new,
- maybe_trigger_next_step,
- waits_for_focus,
- get_current_animation
- )
-
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.TurnResult
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
-type Animation =
- Inactive
- | AttackSetup (Int, Int)
- | Focus Int
- | TurnResult Struct.TurnResult.Type
-
-type alias Type =
- {
- remaining_animations : (List Animation),
- current_animation : Animation,
- wait_focus : Bool
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-turn_result_to_animations : Struct.TurnResult.Type -> (List Animation)
-turn_result_to_animations turn_result =
- case turn_result of
- (Struct.TurnResult.Attacked attack) ->
- let
- attacker_ix = (Struct.TurnResult.get_actor_index turn_result)
- defender_ix = (Struct.TurnResult.get_attack_defender_index attack)
- in
- [
- (Focus attacker_ix),
- (Focus defender_ix),
- (AttackSetup (attacker_ix, defender_ix)),
- (TurnResult turn_result)
- ]
-
- _ ->
- [
- (Focus (Struct.TurnResult.get_actor_index turn_result)),
- (TurnResult turn_result)
- ]
-
-turn_result_to_animations_foldl : (
- Struct.TurnResult.Type ->
- (List Animation) ->
- (List Animation)
- )
-turn_result_to_animations_foldl turn_result current_animations =
- (List.append current_animations (turn_result_to_animations turn_result))
-
-maybe_go_to_next_animation : Type -> (Maybe Type)
-maybe_go_to_next_animation tra =
- case
- (
- (List.head tra.remaining_animations),
- (List.tail tra.remaining_animations)
- )
- of
- ((Just head), (Just tail)) ->
- (Just
- {tra |
- remaining_animations = tail,
- current_animation = head
- }
- )
-
- (_, _) -> Nothing
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-maybe_new : (List Struct.TurnResult.Type) -> Bool -> (Maybe Type)
-maybe_new turn_results wait_focus =
- case (List.head turn_results) of
- (Just head) ->
- (Just
- {
- remaining_animations =
- (List.foldl
- (turn_result_to_animations_foldl)
- []
- turn_results
- ),
- current_animation = Inactive,
- wait_focus = wait_focus
- }
- )
-
- _ -> Nothing
-
-maybe_trigger_next_step : Type -> (Maybe Type)
-maybe_trigger_next_step tra =
- case tra.current_animation of
- (TurnResult action) ->
- (
- case (Struct.TurnResult.maybe_remove_step action) of
- (Just updated_action) ->
- (Just {tra | current_animation = (TurnResult updated_action)})
-
- Nothing -> (maybe_go_to_next_animation tra)
- )
-
- _ -> (maybe_go_to_next_animation tra)
-
-get_current_animation : Type -> Animation
-get_current_animation tra = tra.current_animation
-
-waits_for_focus : Type -> Bool
-waits_for_focus tra = tra.wait_focus
diff --git a/src/battlemap/src/Struct/UI.elm b/src/battlemap/src/Struct/UI.elm
deleted file mode 100644
index c8ef91e..0000000
--- a/src/battlemap/src/Struct/UI.elm
+++ /dev/null
@@ -1,135 +0,0 @@
-module Struct.UI exposing
- (
- Type,
- Tab(..),
- Action(..),
- default,
- -- Zoom
- get_zoom_level,
- reset_zoom_level,
- mod_zoom_level,
- -- Tab
- try_getting_displayed_tab,
- set_displayed_tab,
- reset_displayed_tab,
- to_string,
- get_all_tabs,
- -- Navigator
- try_getting_displayed_nav,
- set_displayed_nav,
- reset_displayed_nav,
- -- Manual Controls
- has_manual_controls_enabled,
- -- Previous Action
- get_previous_action,
- set_previous_action
- )
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Location
-import Struct.Navigator
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type Tab =
- StatusTab
- | CharactersTab
- | SettingsTab
- | TimelineTab
-
-type Action =
- UsedManualControls
- | SelectedLocation Struct.Location.Ref
- | SelectedCharacter Int
- | AttackedCharacter Int
-
-type alias Type =
- {
- zoom_level : Float,
- show_manual_controls : Bool,
- displayed_tab : (Maybe Tab),
- previous_action : (Maybe Action),
- displayed_nav : (Maybe Struct.Navigator.Type)
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-default : Type
-default =
- {
- zoom_level = 1.0,
- show_manual_controls = True,
- displayed_tab = Nothing,
- previous_action = Nothing,
- displayed_nav = Nothing
- }
-
--- Zoom ------------------------------------------------------------------------
-get_zoom_level : Type -> Float
-get_zoom_level ui = ui.zoom_level
-
-reset_zoom_level : Type -> Type
-reset_zoom_level ui = {ui | zoom_level = 1.0}
-
-mod_zoom_level : Float -> Type -> Type
-mod_zoom_level mod ui = {ui | zoom_level = (mod * ui.zoom_level)}
-
--- Tab -------------------------------------------------------------------------
-try_getting_displayed_tab : Type -> (Maybe Tab)
-try_getting_displayed_tab ui = ui.displayed_tab
-
-set_displayed_tab : Tab -> Type -> Type
-set_displayed_tab tab ui = {ui | displayed_tab = (Just tab)}
-
-reset_displayed_tab : Type -> Type
-reset_displayed_tab ui = {ui | displayed_tab = Nothing}
-
-to_string : Tab -> String
-to_string tab =
- case tab of
- StatusTab -> "Status"
- CharactersTab -> "Characters"
- SettingsTab -> "Settings"
- TimelineTab -> "Timeline"
-
-get_all_tabs : (List Tab)
-get_all_tabs =
- [StatusTab, CharactersTab, SettingsTab, TimelineTab]
-
--- Navigator -------------------------------------------------------------------
-try_getting_displayed_nav : Type -> (Maybe Struct.Navigator.Type)
-try_getting_displayed_nav ui = ui.displayed_nav
-
-set_displayed_nav : Struct.Navigator.Type -> Type -> Type
-set_displayed_nav nav ui = {ui | displayed_nav = (Just nav)}
-
-reset_displayed_nav : Type -> Type
-reset_displayed_nav ui = {ui | displayed_nav = Nothing}
-
--- ManualControls --------------------------------------------------------------
-has_manual_controls_enabled : Type -> Bool
-has_manual_controls_enabled ui = ui.show_manual_controls
-
-toggle_manual_controls : Type -> Type
-toggle_manual_controls ui =
- if (ui.show_manual_controls)
- then
- {ui | show_manual_controls = False}
- else
- {ui | show_manual_controls = True}
-
-set_enable_manual_controls : Bool -> Type -> Type
-set_enable_manual_controls val ui = {ui | show_manual_controls = val}
-
--- Previous Action -------------------------------------------------------------
-set_previous_action : (Maybe Action) -> Type -> Type
-set_previous_action act ui = {ui | previous_action = act}
-
-get_previous_action : Type -> (Maybe Action)
-get_previous_action ui = ui.previous_action
diff --git a/src/battlemap/src/Struct/Weapon.elm b/src/battlemap/src/Struct/Weapon.elm
deleted file mode 100644
index 248e8f8..0000000
--- a/src/battlemap/src/Struct/Weapon.elm
+++ /dev/null
@@ -1,248 +0,0 @@
-module Struct.Weapon exposing
- (
- Type,
- Ref,
- RangeType(..),
- RangeModifier(..),
- DamageType(..),
- DamageModifier(..),
- new,
- get_id,
- get_name,
- get_range_type,
- get_range_modifier,
- get_damage_type,
- get_damage_modifier,
- get_attack_range,
- get_defense_range,
- get_max_damage,
- get_min_damage,
- decoder,
- none,
- apply_to_attributes
- )
-
--- Elm -------------------------------------------------------------------------
-import Json.Decode
-import Json.Decode.Pipeline
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Attributes
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias PartiallyDecoded =
- {
- id : Int,
- nam : String,
- rt : String,
- rm : String,
- dt : String,
- dm : String,
- cf : Float
- }
-
-type alias Type =
- {
- id : Int,
- name : String,
- coef : Float,
- range_type : RangeType,
- range_mod : RangeModifier,
- dmg_type : DamageType,
- dmg_mod : DamageModifier,
- def_range : Int,
- atk_range : Int,
- dmg_min : Int,
- dmg_max : Int
- }
-
-type alias Ref = Int
-
-type RangeType = Ranged | Melee
-type RangeModifier = Long | Short
--- Having multiple types at the same time, like Warframe does, would be nice.
-type DamageType = Slash | Blunt | Pierce
-type DamageModifier = Heavy | Light
-
-type alias WeaponType =
- {
- range : RangeType,
- range_mod : RangeModifier,
- dmg_type : DamageType
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_ranges : RangeType -> RangeModifier -> (Int, Int)
-get_ranges rt rm =
- case (rt, rm) of
- (Ranged, Long) -> (2, 6)
- (Ranged, Short) -> (1, 4)
- (Melee, Long) -> (0, 2)
- (Melee, Short) -> (0, 1)
-
-get_damages : Float -> RangeType -> DamageModifier -> (Int, Int)
-get_damages coef rt dm =
- case (rt, dm) of
- (Ranged, Heavy) -> ((ceiling (15.0 * coef)), (ceiling (30.0 * coef)))
- (Ranged, Light) -> ((ceiling (10.0 * coef)), (ceiling (25.0 * coef)))
- (Melee, Heavy) -> ((ceiling (20.0 * coef)), (ceiling (35.0 * coef)))
- (Melee, Light) -> ((ceiling (15.0 * coef)), (ceiling (30.0 * coef)))
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-new : (
- Int ->
- String ->
- Float ->
- RangeType ->
- RangeModifier ->
- DamageType ->
- DamageModifier ->
- Type
- )
-new
- id name coef
- range_type range_mod
- dmg_type dmg_mod
- =
- let
- (def_range, atk_range) = (get_ranges range_type range_mod)
- (dmg_min, dmg_max) = (get_damages coef range_type dmg_mod)
- in
- {
- id = id,
- name = name,
- coef = coef,
- range_type = range_type,
- range_mod = range_mod,
- dmg_type = dmg_type,
- dmg_mod = dmg_mod,
- def_range = def_range,
- atk_range = atk_range,
- dmg_min = dmg_min,
- dmg_max = dmg_max
- }
-
-get_id : Type -> Int
-get_id wp = wp.id
-
-get_name : Type -> String
-get_name wp = wp.name
-
-get_range_type : Type -> RangeType
-get_range_type wp = wp.range_type
-
-get_range_modifier : Type -> RangeModifier
-get_range_modifier wp = wp.range_mod
-
-get_damage_type : Type -> DamageType
-get_damage_type wp = wp.dmg_type
-
-get_damage_modifier : Type -> DamageModifier
-get_damage_modifier wp = wp.dmg_mod
-
-get_attack_range : Type -> Int
-get_attack_range wp = wp.atk_range
-
-get_defense_range : Type -> Int
-get_defense_range wp = wp.def_range
-
-get_max_damage : Type -> Int
-get_max_damage wp = wp.dmg_max
-
-get_min_damage : Type -> Int
-get_min_damage wp = wp.dmg_min
-
-apply_to_attributes : Type -> Struct.Attributes.Type -> Struct.Attributes.Type
-apply_to_attributes wp atts =
- let
- impact = (20.0 * wp.coef)
- full_impact = (-1 * (ceiling impact))
- quarter_impact = (-1 * (ceiling (impact / 4.0)))
- in
- case (wp.range_mod, wp.dmg_mod) of
- (Long, Heavy) ->
- (Struct.Attributes.mod_dexterity
- full_impact
- (Struct.Attributes.mod_speed full_impact atts)
- )
-
- (Long, Light) ->
- (Struct.Attributes.mod_dexterity
- full_impact
- (Struct.Attributes.mod_speed quarter_impact atts)
- )
-
- (Short, Heavy) ->
- (Struct.Attributes.mod_dexterity
- quarter_impact
- (Struct.Attributes.mod_speed full_impact atts)
- )
-
- (Short, Light) ->
- (Struct.Attributes.mod_dexterity
- quarter_impact
- (Struct.Attributes.mod_speed quarter_impact atts)
- )
-
-finish_decoding : PartiallyDecoded -> Type
-finish_decoding add_weapon =
- (new
- add_weapon.id
- add_weapon.nam
- add_weapon.cf
- (
- case add_weapon.rt of
- "m" -> Melee
- _ -> Ranged
- )
- (
- case add_weapon.rm of
- "l" -> Long
- _ -> Short
- )
- (
- case add_weapon.dt of
- "s" -> Slash
- "p" -> Pierce
- _ -> Blunt
- )
- (
- case add_weapon.dm of
- "l" -> Light
- _ -> Heavy
- )
- )
-
-decoder : (Json.Decode.Decoder Type)
-decoder =
- (Json.Decode.map
- (finish_decoding)
- (Json.Decode.Pipeline.decode
- PartiallyDecoded
- |> (Json.Decode.Pipeline.required "id" Json.Decode.int)
- |> (Json.Decode.Pipeline.required "nam" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "rt" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "rm" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "dt" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "dm" Json.Decode.string)
- |> (Json.Decode.Pipeline.required "cf" Json.Decode.float)
- )
- )
-
-none : Type
-none =
- (new
- 0
- "None"
- 0.0
- Melee
- Short
- Blunt
- Light
- )
diff --git a/src/battlemap/src/Struct/WeaponSet.elm b/src/battlemap/src/Struct/WeaponSet.elm
deleted file mode 100644
index 444152d..0000000
--- a/src/battlemap/src/Struct/WeaponSet.elm
+++ /dev/null
@@ -1,39 +0,0 @@
-module Struct.WeaponSet exposing
- (
- Type,
- new,
- get_active_weapon,
- get_secondary_weapon,
- switch_weapons
- )
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Weapon
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-type alias Type =
- {
- active : Struct.Weapon.Type,
- secondary : Struct.Weapon.Type
- }
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-new : Struct.Weapon.Type -> Struct.Weapon.Type -> Type
-new wp0 wp1 = { active = wp0, secondary = wp1 }
-
-get_active_weapon : Type -> Struct.Weapon.Type
-get_active_weapon set = set.active
-
-get_secondary_weapon : Type -> Struct.Weapon.Type
-get_secondary_weapon set = set.secondary
-
-switch_weapons : Type -> Type
-switch_weapons set = {set | active = set.secondary, secondary = set.active}
diff --git a/src/battlemap/src/Update/AbortTurn.elm b/src/battlemap/src/Update/AbortTurn.elm
deleted file mode 100644
index 4fc1b04..0000000
--- a/src/battlemap/src/Update/AbortTurn.elm
+++ /dev/null
@@ -1,24 +0,0 @@
-module Update.AbortTurn exposing (apply_to)
-
--- Elm -------------------------------------------------------------------------
-
--- Struct.Battlemap -------------------------------------------------------------------
-import Struct.CharacterTurn
-import Struct.Event
-import Struct.Model
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))
-apply_to model =
- (
- {model |
- char_turn = (Struct.CharacterTurn.new)
- },
- Cmd.none
- )
diff --git a/src/battlemap/src/Update/AttackWithoutMoving.elm b/src/battlemap/src/Update/AttackWithoutMoving.elm
deleted file mode 100644
index 7e0d154..0000000
--- a/src/battlemap/src/Update/AttackWithoutMoving.elm
+++ /dev/null
@@ -1,45 +0,0 @@
-module Update.AttackWithoutMoving exposing (apply_to)
-
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.CharacterTurn
-import Struct.Error
-import Struct.Event
-import Struct.Model
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-make_it_so : Struct.Model.Type -> Struct.Model.Type
-make_it_so model =
- {model |
- char_turn = (Struct.CharacterTurn.lock_path model.char_turn)
- }
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model =
- case (Struct.CharacterTurn.get_state model.char_turn) of
- Struct.CharacterTurn.SelectedCharacter ->
- ((make_it_so model), Cmd.none)
-
- _ ->
- (
- (Struct.Model.invalidate
- (Struct.Error.new
- Struct.Error.Programming
- (
- "Attempt to do an attack without moving, despite no"
- ++ "character being selected."
- )
- )
- model
- ),
- Cmd.none
- )
diff --git a/src/battlemap/src/Update/ChangeScale.elm b/src/battlemap/src/Update/ChangeScale.elm
deleted file mode 100644
index a2e10ce..0000000
--- a/src/battlemap/src/Update/ChangeScale.elm
+++ /dev/null
@@ -1,26 +0,0 @@
-module Update.ChangeScale exposing (apply_to)
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.Model
-import Struct.UI
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- Float ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model mod =
- if (mod == 0.0)
- then
- ({model | ui = (Struct.UI.reset_zoom_level model.ui)}, Cmd.none)
- else
- ({model | ui = (Struct.UI.mod_zoom_level mod model.ui)}, Cmd.none)
diff --git a/src/battlemap/src/Update/DisplayCharacterInfo.elm b/src/battlemap/src/Update/DisplayCharacterInfo.elm
deleted file mode 100644
index 1e2d9b8..0000000
--- a/src/battlemap/src/Update/DisplayCharacterInfo.elm
+++ /dev/null
@@ -1,53 +0,0 @@
-module Update.DisplayCharacterInfo exposing (apply_to)
--- Elm -------------------------------------------------------------------------
-import Array
-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 -> Int -> (Cmd Struct.Event.Type)
-scroll_to_char model char_ix =
- case (Array.get char_ix 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 ->
- Int ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model target_ref =
- (
- {model |
- ui =
- (Struct.UI.set_displayed_tab
- Struct.UI.StatusTab
- (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/Update/EndTurn.elm b/src/battlemap/src/Update/EndTurn.elm
deleted file mode 100644
index f2bd706..0000000
--- a/src/battlemap/src/Update/EndTurn.elm
+++ /dev/null
@@ -1,91 +0,0 @@
-module Update.EndTurn exposing (apply_to)
-
--- Elm -------------------------------------------------------------------------
-
--- Struct.Battlemap -------------------------------------------------------------------
-import Comm.CharacterTurn
-
-import Struct.Character
-import Struct.CharacterTurn
-import Struct.Error
-import Struct.Event
-import Struct.Model
-import Struct.Navigator
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-maybe_disable_char : (
- (Maybe Struct.Character.Type) ->
- (Maybe Struct.Character.Type)
- )
-maybe_disable_char maybe_char =
- case maybe_char of
- (Just char) -> (Just (Struct.Character.set_enabled False char))
- Nothing -> Nothing
-
-make_it_so : (
- Struct.Model.Type ->
- Struct.Character.Type ->
- Struct.Navigator.Type ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-make_it_so model char nav =
- case (Comm.CharacterTurn.try model) of
- (Just cmd) ->
- (
- (Struct.Model.reset
- (Struct.Model.update_character_fun
- (Struct.Character.get_index char)
- (maybe_disable_char)
- model
- )
- ),
- cmd
- )
-
- Nothing ->
- (model, Cmd.none)
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : Struct.Model.Type -> (Struct.Model.Type, (Cmd Struct.Event.Type))
-apply_to model =
- case
- (
- (Struct.CharacterTurn.get_state model.char_turn),
- (Struct.CharacterTurn.try_getting_active_character
- model.char_turn
- ),
- (Struct.CharacterTurn.try_getting_navigator model.char_turn)
- )
- of
- (
- Struct.CharacterTurn.MovedCharacter,
- (Just char),
- (Just nav)
- ) ->
- (make_it_so model char nav)
-
- (
- Struct.CharacterTurn.ChoseTarget,
- (Just char),
- (Just nav)
- ) ->
- (make_it_so model char nav)
-
- (Struct.CharacterTurn.SelectedCharacter, (Just char), (Just nav)) ->
- (make_it_so model char nav)
-
- (_, _, _) ->
- (
- (Struct.Model.invalidate
- (Struct.Error.new
- Struct.Error.Programming
- "Character turn appears to be in an illegal state."
- )
- model
- ),
- Cmd.none
- )
diff --git a/src/battlemap/src/Update/HandleAnimationEnded.elm b/src/battlemap/src/Update/HandleAnimationEnded.elm
deleted file mode 100644
index 6cedb43..0000000
--- a/src/battlemap/src/Update/HandleAnimationEnded.elm
+++ /dev/null
@@ -1,127 +0,0 @@
-module Update.HandleAnimationEnded exposing (apply_to)
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Delay
-
-import Time
-
-import Task
-
--- Battlemap -------------------------------------------------------------------
-import Action.Scroll
-
-import Struct.Character
-import Struct.Event
-import Struct.Model
-import Struct.TurnResult
-import Struct.TurnResultAnimator
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-handle_char_focus : (
- Struct.Model.Type ->
- Struct.TurnResultAnimator.Type ->
- Int ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-handle_char_focus model animator char_index =
- case (Array.get char_index model.characters) of
- (Just char) ->
- if (Struct.TurnResultAnimator.waits_for_focus animator)
- then
- (
- model,
- (Cmd.batch
- [
- (Task.attempt
- (Struct.Event.attempted)
- (Action.Scroll.to
- (Struct.Character.get_location char)
- model.ui
- )
- ),
- (Delay.after 2.0 Time.second Struct.Event.AnimationEnded)
- ]
- )
- )
- else
- (
- model,
- (Cmd.batch
- [
- (Task.attempt
- (Struct.Event.attempted)
- (Action.Scroll.to
- (Struct.Character.get_location char)
- model.ui
- )
- ),
- (Delay.after 0.3 Time.second Struct.Event.AnimationEnded)
- ]
- )
- )
-
-
- _ ->
- (
- model,
- (Delay.after 1.0 Time.millisecond Struct.Event.AnimationEnded)
- )
-
-prepare_next_animation : (
- Struct.Model.Type ->
- Struct.TurnResultAnimator.Type ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-prepare_next_animation model animator =
- case (Struct.TurnResultAnimator.get_current_animation animator) of
- (Struct.TurnResultAnimator.Focus char_index) ->
- (handle_char_focus model animator char_index)
-
- (Struct.TurnResultAnimator.AttackSetup _) ->
- (
- model,
- (Delay.after 1.0 Time.second Struct.Event.AnimationEnded)
- )
-
- (Struct.TurnResultAnimator.TurnResult turn_result) ->
- case turn_result of
- (Struct.TurnResult.Attacked _) ->
- (
- model,
- (Delay.after 3.0 Time.second Struct.Event.AnimationEnded)
- )
-
- _ ->
- (
- model,
- (Delay.after 0.1 Time.second Struct.Event.AnimationEnded)
- )
-
- _ ->
- (
- model,
- (Delay.after 0.3 Time.second Struct.Event.AnimationEnded)
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model =
- let
- new_model =
- (Struct.Model.apply_animator_step
- (Struct.Model.move_animator_to_next_step model)
- )
- in
- case new_model.animator of
- Nothing -> (new_model, Cmd.none)
- (Just animator) ->
- (prepare_next_animation new_model animator)
diff --git a/src/battlemap/src/Update/HandleServerReply.elm b/src/battlemap/src/Update/HandleServerReply.elm
deleted file mode 100644
index bc347c9..0000000
--- a/src/battlemap/src/Update/HandleServerReply.elm
+++ /dev/null
@@ -1,230 +0,0 @@
-module Update.HandleServerReply exposing (apply_to)
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Delay
-
-import Dict
-
-import Http
-
-import Time
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Armor
-import Struct.Battlemap
-import Struct.Character
-import Struct.Error
-import Struct.Event
-import Struct.Model
-import Struct.ServerReply
-import Struct.Tile
-import Struct.TurnResult
-import Struct.TurnResultAnimator
-import Struct.UI
-import Struct.Weapon
-
---------------------------------------------------------------------------------
--- TYPES -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-weapon_getter : Struct.Model.Type -> Struct.Weapon.Ref -> Struct.Weapon.Type
-weapon_getter model ref =
- case (Dict.get ref model.weapons) of
- (Just w) -> w
- Nothing -> Struct.Weapon.none
-
-armor_getter : Struct.Model.Type -> Struct.Armor.Ref -> Struct.Armor.Type
-armor_getter model ref =
- case (Dict.get ref model.armors) of
- (Just w) -> w
- Nothing -> Struct.Armor.none
-
------------
-
-add_armor : (
- Struct.Armor.Type ->
- (Struct.Model.Type, (Maybe Struct.Error.Type)) ->
- (Struct.Model.Type, (Maybe Struct.Error.Type))
- )
-add_armor ar current_state =
- case current_state of
- (_, (Just _)) -> current_state
- (model, _) -> ((Struct.Model.add_armor ar model), Nothing)
-
-add_tile : (
- Struct.Tile.Type ->
- (Struct.Model.Type, (Maybe Struct.Error.Type)) ->
- (Struct.Model.Type, (Maybe Struct.Error.Type))
- )
-add_tile tl current_state =
- case current_state of
- (_, (Just _)) -> current_state
- (model, _) -> ((Struct.Model.add_tile tl model), Nothing)
-
-add_weapon : (
- Struct.Weapon.Type ->
- (Struct.Model.Type, (Maybe Struct.Error.Type)) ->
- (Struct.Model.Type, (Maybe Struct.Error.Type))
- )
-add_weapon wp current_state =
- case current_state of
- (_, (Just _)) -> current_state
- (model, _) -> ((Struct.Model.add_weapon wp model), Nothing)
-
-add_character : (
- (Struct.Character.Type, Int, Int, Int) ->
- (Struct.Model.Type, (Maybe Struct.Error.Type)) ->
- (Struct.Model.Type, (Maybe Struct.Error.Type))
- )
-add_character char_and_refs current_state =
- case current_state of
- (_, (Just _)) -> current_state
- (model, _) ->
- let
- (char, awp_ref, swp_ref, ar_ref) = char_and_refs
- awp = (weapon_getter model awp_ref)
- swp = (weapon_getter model swp_ref)
- ar = (armor_getter model ar_ref)
- in
- (
- (Struct.Model.add_character
- (Struct.Character.fill_missing_equipment awp swp ar char)
- model
- ),
- Nothing
- )
-
-set_map : (
- Struct.Battlemap.Type ->
- (Struct.Model.Type, (Maybe Struct.Error.Type)) ->
- (Struct.Model.Type, (Maybe Struct.Error.Type))
- )
-set_map map current_state =
- case current_state of
- (_, (Just _)) -> current_state
- (model, _) ->
- (
- {model |
- battlemap =
- (Struct.Battlemap.solve_tiles (Dict.values model.tiles) map)
- },
- Nothing
- )
-
-add_to_timeline : (
- (List Struct.TurnResult.Type) ->
- (Struct.Model.Type, (Maybe Struct.Error.Type)) ->
- (Struct.Model.Type, (Maybe Struct.Error.Type))
- )
-add_to_timeline turn_results current_state =
- case current_state of
- (_, (Just _)) -> current_state
-
- (model, _) ->
- (
- {model |
- animator =
- (Struct.TurnResultAnimator.maybe_new
- (List.reverse turn_results)
- False
- ),
- timeline =
- (Array.append
- (Array.fromList turn_results)
- model.timeline
- ),
- ui =
- (Struct.UI.set_displayed_tab
- Struct.UI.TimelineTab
- model.ui
- )
- },
- Nothing
- )
-
-set_timeline : (
- (List Struct.TurnResult.Type) ->
- (Struct.Model.Type, (Maybe Struct.Error.Type)) ->
- (Struct.Model.Type, (Maybe Struct.Error.Type))
- )
-set_timeline turn_results current_state =
- case current_state of
- (_, (Just _)) -> current_state
-
- (model, _) ->
- (
- {model | timeline = (Array.fromList turn_results)},
- Nothing
- )
-
-apply_command : (
- Struct.ServerReply.Type ->
- (Struct.Model.Type, (Maybe Struct.Error.Type)) ->
- (Struct.Model.Type, (Maybe Struct.Error.Type))
- )
-apply_command command current_state =
- case command of
- (Struct.ServerReply.AddWeapon wp) ->
- (add_weapon wp current_state)
-
- (Struct.ServerReply.AddArmor ar) ->
- (add_armor ar current_state)
-
- (Struct.ServerReply.AddTile tl) ->
- (add_tile tl current_state)
-
- (Struct.ServerReply.AddCharacter char) ->
- (add_character char current_state)
-
- (Struct.ServerReply.SetMap map) ->
- (set_map map current_state)
-
- (Struct.ServerReply.TurnResults results) ->
- (add_to_timeline results current_state)
-
- (Struct.ServerReply.SetTimeline timeline) ->
- (set_timeline timeline current_state)
-
- Struct.ServerReply.Okay -> current_state
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- (Result Http.Error (List Struct.ServerReply.Type)) ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model query_result =
- case query_result of
- (Result.Err error) ->
- (
- (Struct.Model.invalidate
- (Struct.Error.new Struct.Error.Networking (toString error))
- model
- ),
- Cmd.none
- )
-
- (Result.Ok commands) ->
- let
- new_model =
- (
- case (List.foldl (apply_command) (model, Nothing) commands) of
- (updated_model, Nothing) -> updated_model
- (_, (Just error)) -> (Struct.Model.invalidate error model)
- )
- in
- (
- new_model,
- if (new_model.animator == Nothing)
- then
- Cmd.none
- else
- (Delay.after 1 Time.millisecond Struct.Event.AnimationEnded)
- )
diff --git a/src/battlemap/src/Update/LookForCharacter.elm b/src/battlemap/src/Update/LookForCharacter.elm
deleted file mode 100644
index 469b0f8..0000000
--- a/src/battlemap/src/Update/LookForCharacter.elm
+++ /dev/null
@@ -1,54 +0,0 @@
-module Update.LookForCharacter exposing (apply_to)
--- Elm -------------------------------------------------------------------------
-import Array
-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 ->
- Int ->
- (Cmd Struct.Event.Type)
- )
-scroll_to_char model char_ix =
- case (Array.get char_ix 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 ->
- Int ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model target_ix =
- (
- {model |
- ui =
- (Struct.UI.set_previous_action
- (Just (Struct.UI.SelectedCharacter target_ix))
- model.ui
- )
- },
- (scroll_to_char model target_ix)
- )
diff --git a/src/battlemap/src/Update/RequestDirection.elm b/src/battlemap/src/Update/RequestDirection.elm
deleted file mode 100644
index ce6084b..0000000
--- a/src/battlemap/src/Update/RequestDirection.elm
+++ /dev/null
@@ -1,76 +0,0 @@
-module Update.RequestDirection exposing (apply_to)
-
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.CharacterTurn
-import Struct.Direction
-import Struct.Error
-import Struct.Event
-import Struct.Model
-import Struct.Navigator
-import Struct.UI
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-make_it_so : (
- Struct.Model.Type ->
- Struct.Navigator.Type ->
- Struct.Direction.Type ->
- Struct.Model.Type
- )
-make_it_so model navigator dir =
- case (Struct.Navigator.try_adding_step dir navigator) of
- (Just new_navigator) ->
- {model |
- char_turn =
- (Struct.CharacterTurn.set_navigator
- new_navigator
- model.char_turn
- ),
- ui =
- (Struct.UI.set_previous_action
- (Just Struct.UI.UsedManualControls)
- model.ui
- )
- }
-
- Nothing ->
- (Struct.Model.invalidate
- (Struct.Error.new
- Struct.Error.IllegalAction
- "Unreachable/occupied tile."
- )
- model
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- Struct.Direction.Type ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model dir =
- case
- (Struct.CharacterTurn.try_getting_navigator model.char_turn)
- of
- (Just navigator) ->
- (
- (make_it_so model navigator dir),
- Cmd.none
- )
-
- _ ->
- (
- (Struct.Model.invalidate
- (Struct.Error.new
- Struct.Error.IllegalAction
- "This can only be done while moving a character."
- )
- model
- ),
- Cmd.none
- )
diff --git a/src/battlemap/src/Update/SelectCharacter.elm b/src/battlemap/src/Update/SelectCharacter.elm
deleted file mode 100644
index bbd4527..0000000
--- a/src/battlemap/src/Update/SelectCharacter.elm
+++ /dev/null
@@ -1,298 +0,0 @@
-module Update.SelectCharacter exposing (apply_to)
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Task
-
--- Battlemap -------------------------------------------------------------------
-import Action.Scroll
-
-import Struct.Battlemap
-import Struct.Character
-import Struct.CharacterTurn
-import Struct.Error
-import Struct.Event
-import Struct.Location
-import Struct.Model
-import Struct.Navigator
-import Struct.Statistics
-import Struct.UI
-import Struct.Weapon
-import Struct.WeaponSet
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_character_navigator : (
- Struct.Model.Type ->
- Struct.Character.Type ->
- Struct.Navigator.Type
- )
-get_character_navigator model char =
- let
- weapon =
- (Struct.WeaponSet.get_active_weapon
- (Struct.Character.get_weapons char)
- )
- in
- (Struct.Navigator.new
- (Struct.Character.get_location char)
- (Struct.Statistics.get_movement_points
- (Struct.Character.get_statistics char)
- )
- (Struct.Weapon.get_attack_range weapon)
- (Struct.Weapon.get_defense_range weapon)
- (Struct.Battlemap.get_movement_cost_function
- model.battlemap
- (Struct.Character.get_location char)
- (Array.toList model.characters)
- )
- )
-
-attack_character : (
- Struct.Model.Type ->
- Int ->
- Struct.Character.Type ->
- Struct.Model.Type
- )
-attack_character model target_char_id target_char =
- {model |
- char_turn =
- (Struct.CharacterTurn.set_target
- (Just target_char_id)
- model.char_turn
- ),
- ui =
- (Struct.UI.reset_displayed_nav
- (Struct.UI.reset_displayed_tab
- (Struct.UI.set_previous_action Nothing model.ui)
- )
- )
- }
-
-ctrl_or_focus_character : (
- Struct.Model.Type ->
- Int ->
- Struct.Character.Type ->
- Struct.Model.Type
- )
-ctrl_or_focus_character model target_char_id target_char =
- if (Struct.Character.is_enabled target_char)
- then
- let
- nav =
- (case (Struct.UI.try_getting_displayed_nav model.ui) of
- (Just dnav) -> dnav
- Nothing ->
- (get_character_navigator model target_char)
- )
- in
- {model |
- char_turn =
- (Struct.CharacterTurn.set_navigator
- nav
- (Struct.CharacterTurn.set_active_character
- target_char
- model.char_turn
- )
- ),
- ui =
- (Struct.UI.reset_displayed_nav
- (Struct.UI.reset_displayed_tab
- (Struct.UI.set_previous_action Nothing model.ui)
- )
- )
- }
- else
- {model |
- ui =
- (Struct.UI.set_previous_action
- (Just (Struct.UI.SelectedCharacter target_char_id))
- (Struct.UI.set_displayed_nav
- (get_character_navigator model target_char)
- model.ui
- )
- )
- }
-
-can_target_character : (
- Struct.Model.Type ->
- Struct.Character.Type ->
- Bool
- )
-can_target_character model target =
- (
- (Struct.CharacterTurn.can_select_target model.char_turn)
- && (Struct.Character.is_alive target)
- &&
- (
- case
- (Struct.CharacterTurn.try_getting_navigator
- model.char_turn
- )
- of
- (Just nav) ->
- case
- (Struct.Navigator.try_getting_path_to
- (Struct.Location.get_ref
- (Struct.Character.get_location target)
- )
- nav
- )
- of
- (Just _) -> True
- _ -> False
-
- _ ->
- False
- )
- )
-
-second_click_on : (
- Struct.Model.Type ->
- Int ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-second_click_on model target_char_id =
- case (Array.get target_char_id model.characters) of
- (Just target_char) ->
- case
- (
- (Struct.CharacterTurn.try_getting_active_character
- model.char_turn
- ),
- (Struct.CharacterTurn.try_getting_target model.char_turn)
- )
- of
- ((Just _), (Just char_turn_target_id)) ->
- if (char_turn_target_id == target_char_id)
- then
- (
- model,
- Cmd.none
- )
- else
- (
- (ctrl_or_focus_character model target_char_id target_char),
- (Task.attempt
- (Struct.Event.attempted)
- (Action.Scroll.to
- (Struct.Character.get_location target_char)
- model.ui
- )
- )
- )
-
- ((Just _), Nothing) ->
- if (can_target_character model target_char)
- then
- (
- (attack_character
- model
- target_char_id
- target_char
- ),
- Cmd.none
- )
- else
- (
- (ctrl_or_focus_character model target_char_id target_char),
- (Task.attempt
- (Struct.Event.attempted)
- (Action.Scroll.to
- (Struct.Character.get_location target_char)
- model.ui
- )
- )
- )
-
- (_, _) ->
- (
- (ctrl_or_focus_character model target_char_id target_char),
- (Task.attempt
- (Struct.Event.attempted)
- (Action.Scroll.to
- (Struct.Character.get_location target_char)
- model.ui
- )
- )
- )
-
- Nothing ->
- (
- (Struct.Model.invalidate
- (Struct.Error.new
- Struct.Error.Programming
- "SelectCharacter: Unknown char selected."
- )
- model
- ),
- Cmd.none
- )
-
-first_click_on : (
- Struct.Model.Type ->
- Int ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-first_click_on model target_char_id =
- if
- (
- (Struct.CharacterTurn.try_getting_target model.char_turn)
- ==
- (Just target_char_id)
- )
- then
- (model, Cmd.none)
- else
- case (Array.get target_char_id model.characters) of
- (Just target_char) ->
- (
- {model |
- ui =
- (Struct.UI.set_previous_action
- (Just (Struct.UI.SelectedCharacter target_char_id))
- (Struct.UI.set_displayed_tab
- Struct.UI.StatusTab
- (Struct.UI.set_displayed_nav
- (get_character_navigator model target_char)
- model.ui
- )
- )
- )
- },
- Cmd.none
- )
-
- Nothing ->
- (
- (Struct.Model.invalidate
- (Struct.Error.new
- Struct.Error.Programming
- "SelectCharacter: Unknown char selected."
- )
- model
- ),
- Cmd.none
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- Int ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model target_char_id =
- if
- (
- (Struct.UI.get_previous_action model.ui)
- ==
- (Just (Struct.UI.SelectedCharacter target_char_id))
- )
- then
- (second_click_on model target_char_id)
- else
- (first_click_on model target_char_id)
diff --git a/src/battlemap/src/Update/SelectCharacterOrTile.elm b/src/battlemap/src/Update/SelectCharacterOrTile.elm
deleted file mode 100644
index 997dfa8..0000000
--- a/src/battlemap/src/Update/SelectCharacterOrTile.elm
+++ /dev/null
@@ -1,52 +0,0 @@
-module Update.SelectCharacterOrTile exposing (apply_to)
-
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Character
-import Struct.Event
-import Struct.Location
-import Struct.Model
-
-import Update.SelectCharacter
-import Update.SelectTile
-
-import Util.Array
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- Struct.Location.Ref ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model loc_ref =
- case
- (Util.Array.filter_first
- (\c ->
- (
- (
- (Struct.Character.get_location c)
- == (Struct.Location.from_ref loc_ref)
- )
- &&
- (Struct.Character.is_alive c)
- )
- )
- model.characters
- )
- of
- (Just char) ->
- (Update.SelectCharacter.apply_to
- model
- (Struct.Character.get_index char)
- )
-
- Nothing ->
- (Update.SelectTile.apply_to model loc_ref)
-
diff --git a/src/battlemap/src/Update/SelectTab.elm b/src/battlemap/src/Update/SelectTab.elm
deleted file mode 100644
index c25ec56..0000000
--- a/src/battlemap/src/Update/SelectTab.elm
+++ /dev/null
@@ -1,32 +0,0 @@
-module Update.SelectTab exposing (apply_to)
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Model
-import Struct.Event
-import Struct.UI
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- Struct.UI.Tab ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model tab =
- if ((Struct.UI.try_getting_displayed_tab model.ui) == (Just tab))
- then
- (
- {model | ui = (Struct.UI.reset_displayed_tab model.ui)},
- Cmd.none
- )
- else
- (
- {model | ui = (Struct.UI.set_displayed_tab tab model.ui)},
- Cmd.none
- )
diff --git a/src/battlemap/src/Update/SelectTile.elm b/src/battlemap/src/Update/SelectTile.elm
deleted file mode 100644
index 6d05476..0000000
--- a/src/battlemap/src/Update/SelectTile.elm
+++ /dev/null
@@ -1,158 +0,0 @@
-module Update.SelectTile exposing (apply_to)
-
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.CharacterTurn
-import Struct.Direction
-import Struct.Error
-import Struct.Event
-import Struct.Location
-import Struct.Model
-import Struct.Navigator
-import Struct.UI
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-try_autopiloting : (
- Struct.Direction.Type ->
- (Maybe Struct.Navigator.Type) ->
- (Maybe Struct.Navigator.Type)
- )
-try_autopiloting dir maybe_nav =
- case maybe_nav of
- (Just navigator) ->
- (Struct.Navigator.try_adding_step dir navigator)
-
- Nothing -> Nothing
-
-go_to_tile : (
- Struct.Model.Type ->
- Struct.Navigator.Type ->
- Struct.Location.Ref ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-go_to_tile model navigator loc_ref =
- if
- (
- loc_ref
- ==
- (Struct.Location.get_ref
- (Struct.Navigator.get_current_location navigator)
- )
- )
- then
- -- We are already there.
- if
- (
- (Struct.UI.get_previous_action model.ui)
- ==
- (Just (Struct.UI.SelectedLocation loc_ref))
- )
- then
- -- And we just clicked on that tile.
- (
- {model |
- char_turn =
- (Struct.CharacterTurn.lock_path model.char_turn)
- },
- Cmd.none
- )
- else
- -- And we didn't just click on that tile.
- (
- {model |
- ui =
- (Struct.UI.reset_displayed_nav
- (Struct.UI.set_displayed_tab
- Struct.UI.StatusTab
- (Struct.UI.set_previous_action
- (Just (Struct.UI.SelectedLocation loc_ref))
- model.ui
- )
- )
- )
- },
- Cmd.none
- )
- else
- -- We have to try getting there.
- case
- (Struct.Navigator.try_getting_path_to
- loc_ref
- navigator
- )
- of
- (Just path) ->
- case
- (List.foldr
- (try_autopiloting)
- (Just (Struct.Navigator.clear_path navigator))
- path
- )
- of
- (Just new_navigator) ->
- (
- {model |
- char_turn =
- (Struct.CharacterTurn.set_navigator
- new_navigator
- model.char_turn
- ),
- ui =
- (Struct.UI.set_displayed_tab
- Struct.UI.StatusTab
- (Struct.UI.set_previous_action
- (Just (Struct.UI.SelectedLocation loc_ref))
- model.ui
- )
- )
- },
- Cmd.none
- )
-
- Nothing ->
- (
- (Struct.Model.invalidate
- (Struct.Error.new
- Struct.Error.Programming
- "SelectTile/Navigator: Could not follow own path."
- )
- model
- ),
- Cmd.none
- )
-
- Nothing -> -- Clicked outside of the range indicator
- ((Struct.Model.reset model), Cmd.none)
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- Struct.Location.Ref ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model loc_ref =
- case (Struct.CharacterTurn.try_getting_navigator model.char_turn) of
- (Just navigator) ->
- (go_to_tile model navigator loc_ref)
-
- _ ->
- (
- {model |
- ui =
- (Struct.UI.reset_displayed_nav
- (Struct.UI.set_displayed_tab
- Struct.UI.StatusTab
- (Struct.UI.set_previous_action
- (Just (Struct.UI.SelectedLocation loc_ref))
- model.ui
- )
- )
- )
- },
- Cmd.none
- )
diff --git a/src/battlemap/src/Update/SendLoadBattlemapRequest.elm b/src/battlemap/src/Update/SendLoadBattlemapRequest.elm
deleted file mode 100644
index bb6ae6b..0000000
--- a/src/battlemap/src/Update/SendLoadBattlemapRequest.elm
+++ /dev/null
@@ -1,29 +0,0 @@
-module Update.SendLoadBattlemapRequest exposing (apply_to)
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Comm.LoadBattlemap
-
-import Struct.Event
-import Struct.Model
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model =
- (
- (Struct.Model.full_debug_reset model),
- (case (Comm.LoadBattlemap.try model) of
- (Just cmd) -> cmd
- Nothing -> Cmd.none
- )
- )
-
diff --git a/src/battlemap/src/Update/SetRequestedHelp.elm b/src/battlemap/src/Update/SetRequestedHelp.elm
deleted file mode 100644
index 8f76e3b..0000000
--- a/src/battlemap/src/Update/SetRequestedHelp.elm
+++ /dev/null
@@ -1,22 +0,0 @@
-module Update.SetRequestedHelp exposing (apply_to)
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.HelpRequest
-import Struct.Model
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- Struct.HelpRequest.Type ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model help_request =
- ({model | help_request = help_request}, Cmd.none)
diff --git a/src/battlemap/src/Update/SwitchTeam.elm b/src/battlemap/src/Update/SwitchTeam.elm
deleted file mode 100644
index d9c9879..0000000
--- a/src/battlemap/src/Update/SwitchTeam.elm
+++ /dev/null
@@ -1,30 +0,0 @@
-module Update.SwitchTeam exposing (apply_to)
--- Elm -------------------------------------------------------------------------
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Model
-import Struct.Event
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model =
- if (model.player_ix == 0)
- then
- (
- (Struct.Model.reset {model | player_id = "1", player_ix = 1}),
- Cmd.none
- )
- else
- (
- (Struct.Model.reset {model | player_id = "0", player_ix = 0}),
- Cmd.none
- )
diff --git a/src/battlemap/src/Update/SwitchWeapon.elm b/src/battlemap/src/Update/SwitchWeapon.elm
deleted file mode 100644
index df45f50..0000000
--- a/src/battlemap/src/Update/SwitchWeapon.elm
+++ /dev/null
@@ -1,100 +0,0 @@
-module Update.SwitchWeapon exposing (apply_to)
--- Elm -------------------------------------------------------------------------
-import Array
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Battlemap
-import Struct.Character
-import Struct.CharacterTurn
-import Struct.Error
-import Struct.Event
-import Struct.Model
-import Struct.Navigator
-import Struct.Statistics
-import Struct.Weapon
-import Struct.WeaponSet
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-make_it_so : Struct.Model.Type -> Struct.Model.Type
-make_it_so model =
- case (Struct.CharacterTurn.try_getting_active_character model.char_turn) of
- (Just char) ->
- let
- new_weapons =
- (Struct.WeaponSet.switch_weapons
- (Struct.Character.get_weapons char)
- )
- new_char = (Struct.Character.set_weapons new_weapons char)
- in
- {model |
- char_turn =
- (Struct.CharacterTurn.set_has_switched_weapons
- True
- (Struct.CharacterTurn.lock_path
- (Struct.CharacterTurn.set_navigator
- (Struct.Navigator.new
- (Struct.Character.get_location new_char)
- (Struct.Statistics.get_movement_points
- (Struct.Character.get_statistics new_char)
- )
- (Struct.Weapon.get_attack_range
- (Struct.WeaponSet.get_active_weapon new_weapons)
- )
- (Struct.Weapon.get_defense_range
- (Struct.WeaponSet.get_active_weapon new_weapons)
- )
- (Struct.Battlemap.get_movement_cost_function
- model.battlemap
- (Struct.Character.get_location new_char)
- (Array.toList model.characters)
- )
- )
- (Struct.CharacterTurn.set_active_character
- new_char
- model.char_turn
- )
- )
- )
- )
- }
-
- _ ->
- (Struct.Model.invalidate
- (Struct.Error.new
- Struct.Error.Programming
- (
- "CharacterTurn structure in the 'SelectedCharacter' state"
- ++ " without character being selected."
- )
- )
- model
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model =
- case (Struct.CharacterTurn.get_state model.char_turn) of
- Struct.CharacterTurn.SelectedCharacter ->
- ((make_it_so model), Cmd.none)
-
- _ ->
- (
- (Struct.Model.invalidate
- (Struct.Error.new
- Struct.Error.Programming
- (
- "Attempt to switch weapons as a secondary action or"
- ++ " without character being selected."
- )
- )
- model
- ),
- Cmd.none
- )
diff --git a/src/battlemap/src/Update/TestAnimation.elm b/src/battlemap/src/Update/TestAnimation.elm
deleted file mode 100644
index 8fa16e7..0000000
--- a/src/battlemap/src/Update/TestAnimation.elm
+++ /dev/null
@@ -1,27 +0,0 @@
-module Update.TestAnimation exposing (apply_to)
-
--- Elm -------------------------------------------------------------------------
-import Delay
-
-import Time
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Model
-import Struct.Event
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-apply_to : (
- Struct.Model.Type ->
- (Struct.Model.Type, (Cmd Struct.Event.Type))
- )
-apply_to model =
- (
- (Struct.Model.initialize_animator model),
- (Delay.after 1 Time.millisecond Struct.Event.AnimationEnded)
- )
diff --git a/src/battlemap/src/Util/Array.elm b/src/battlemap/src/Util/Array.elm
deleted file mode 100644
index 9e57c18..0000000
--- a/src/battlemap/src/Util/Array.elm
+++ /dev/null
@@ -1,34 +0,0 @@
-module Util.Array exposing
- (
- update,
- update_unsafe,
- filter_first
- )
-
-import Array
-
-update : (
- Int ->
- ((Maybe t) -> (Maybe t)) ->
- (Array.Array t) ->
- (Array.Array t)
- )
-update index fun array =
- case (fun (Array.get index array)) of
- Nothing -> array
- (Just e) -> (Array.set index e array)
-
-update_unsafe : (
- Int ->
- (t -> t) ->
- (Array.Array t) ->
- (Array.Array t)
- )
-update_unsafe index fun array =
- case (Array.get index array) of
- Nothing -> array
- (Just e) -> (Array.set index (fun e) array)
-
-filter_first : (t -> Bool) -> (Array.Array t) -> (Maybe t)
-filter_first fun array =
- (Array.get 0 (Array.filter fun array))
diff --git a/src/battlemap/src/Util/Html.elm b/src/battlemap/src/Util/Html.elm
deleted file mode 100644
index 42eadba..0000000
--- a/src/battlemap/src/Util/Html.elm
+++ /dev/null
@@ -1,6 +0,0 @@
-module Util.Html exposing (nothing)
-
-import Html
-
-nothing : (Html.Html a)
-nothing = (Html.text "")
diff --git a/src/battlemap/src/Util/List.elm b/src/battlemap/src/Util/List.elm
deleted file mode 100644
index 2bc5217..0000000
--- a/src/battlemap/src/Util/List.elm
+++ /dev/null
@@ -1,16 +0,0 @@
-module Util.List exposing (..)
-
-import List
-
-pop : List a -> (Maybe (a, List a))
-pop l =
- case
- ((List.head l), (List.tail l))
- of
- (Nothing, _) -> Nothing
- (_ , Nothing) -> Nothing
- ((Just head), (Just tail)) -> (Just (head, tail))
-
-get_first : (a -> Bool) -> (List a) -> (Maybe a)
-get_first fun list =
- (List.head (List.filter fun list))
diff --git a/src/battlemap/src/View/Battlemap.elm b/src/battlemap/src/View/Battlemap.elm
deleted file mode 100644
index c185486..0000000
--- a/src/battlemap/src/View/Battlemap.elm
+++ /dev/null
@@ -1,162 +0,0 @@
-module View.Battlemap exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Html
-import Html.Attributes
-import Html.Lazy
-
-import List
-
--- Battlemap -------------------------------------------------------------------
-import Constants.UI
-
-import Struct.Battlemap
-import Struct.Character
-import Struct.Event
-import Struct.Model
-import Struct.Navigator
-import Struct.UI
-
-import Util.Html
-
-import View.Battlemap.Character
-import View.Battlemap.Navigator
-import View.Battlemap.Tile
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_tiles_html : Struct.Battlemap.Type -> (Html.Html Struct.Event.Type)
-get_tiles_html battlemap =
- (Html.div
- [
- (Html.Attributes.class "battlemap-tiles-layer"),
- (Html.Attributes.style
- [
- (
- "width",
- (
- (toString
- (
- (Struct.Battlemap.get_width battlemap)
- * Constants.UI.tile_size
- )
- )
- ++ "px"
- )
- ),
- (
- "height",
- (
- (toString
- (
- (Struct.Battlemap.get_height battlemap)
- * Constants.UI.tile_size
- )
- )
- ++ "px"
- )
- )
- ]
- )
- ]
- (List.map
- (View.Battlemap.Tile.get_html)
- (Array.toList (Struct.Battlemap.get_tiles battlemap))
- )
- )
-
-maybe_print_navigator : (
- Bool ->
- (Maybe Struct.Navigator.Type) ->
- (Html.Html Struct.Event.Type)
- )
-maybe_print_navigator interactive maybe_nav =
- let
- name_suffix =
- if (interactive)
- then
- "interactive"
- else
- "non-interactive"
- in
- case maybe_nav of
- (Just nav) ->
- (Html.div
- [
- (Html.Attributes.class ("battlemap-navigator" ++ name_suffix))
- ]
- (View.Battlemap.Navigator.get_html
- (Struct.Navigator.get_summary nav)
- interactive
- )
- )
-
- Nothing ->
- (Util.Html.nothing)
-
-get_characters_html : (
- Struct.Model.Type ->
- (Array.Array Struct.Character.Type) ->
- (Html.Html Struct.Event.Type)
- )
-get_characters_html model characters =
- (Html.div
- [
- (Html.Attributes.class "battlemap-characters")
- ]
- (List.map
- (View.Battlemap.Character.get_html model)
- (Array.toList model.characters)
- )
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Struct.Model.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_html model =
- (Html.div
- [
- (Html.Attributes.class "battlemap-actual"),
- (Html.Attributes.style
- (
- if ((Struct.UI.get_zoom_level model.ui) == 1)
- then []
- else
- [
- (
- "transform",
- (
- "scale("
- ++
- (toString (Struct.UI.get_zoom_level model.ui))
- ++ ")"
- )
- )
- ]
- )
- )
- ]
- [
- (Html.Lazy.lazy (get_tiles_html) model.battlemap),
- -- Not in lazy mode, because I can't easily get rid of that 'model'
- -- parameter.
- (get_characters_html model model.characters),
- (Html.Lazy.lazy2
- (maybe_print_navigator)
- True
- model.char_turn.navigator
- ),
- (Html.Lazy.lazy2
- (maybe_print_navigator)
- False
- (Struct.UI.try_getting_displayed_nav model.ui)
- )
- ]
- )
diff --git a/src/battlemap/src/View/Battlemap/Character.elm b/src/battlemap/src/View/Battlemap/Character.elm
deleted file mode 100644
index fa1bdc1..0000000
--- a/src/battlemap/src/View/Battlemap/Character.elm
+++ /dev/null
@@ -1,218 +0,0 @@
-module View.Battlemap.Character exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-import Html.Events
-
--- Battlemap ------------------------------------------------------------------
-import Constants.UI
-
-import Util.Html
-
-import Struct.Character
-import Struct.CharacterTurn
-import Struct.Event
-import Struct.Model
-import Struct.TurnResult
-import Struct.TurnResultAnimator
-import Struct.UI
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_animation_class : (
- Struct.Model.Type ->
- Struct.Character.Type ->
- (Html.Attribute Struct.Event.Type)
- )
-get_animation_class model char =
- case model.animator of
- Nothing -> (Html.Attributes.class "")
- (Just animator) ->
- case (Struct.TurnResultAnimator.get_current_animation animator) of
- (Struct.TurnResultAnimator.Focus char_index) ->
- if ((Struct.Character.get_index char) /= char_index)
- then
- (Html.Attributes.class "")
- else
- (Html.Attributes.class "battlemap-character-selected")
-
- (Struct.TurnResultAnimator.TurnResult current_action) ->
- if
- (
- (Struct.TurnResult.get_actor_index current_action)
- /=
- (Struct.Character.get_index char)
- )
- then
- (Html.Attributes.class "")
- else
- case current_action of
- (Struct.TurnResult.Moved _) ->
- (Html.Attributes.class
- "battlemap-animated-character-icon"
- )
-
- _ -> (Html.Attributes.class "")
- _ -> (Html.Attributes.class "")
-
-get_activation_level_class : (
- Struct.Character.Type ->
- (Html.Attribute Struct.Event.Type)
- )
-get_activation_level_class char =
- if (Struct.Character.is_enabled char)
- then
- (Html.Attributes.class "battlemap-character-icon-enabled")
- else
- (Html.Attributes.class "battlemap-character-icon-disabled")
-
-get_alliance_class : (
- Struct.Model.Type ->
- Struct.Character.Type ->
- (Html.Attribute Struct.Event.Type)
- )
-get_alliance_class model char =
- if ((Struct.Character.get_player_ix char) == model.player_ix)
- then
- (Html.Attributes.class "battlemap-character-ally")
- else
- (Html.Attributes.class "battlemap-character-enemy")
-
-get_position_style : (
- Struct.Character.Type ->
- (Html.Attribute Struct.Event.Type)
- )
-get_position_style char =
- let char_loc = (Struct.Character.get_location char) in
- (Html.Attributes.style
- [
- ("top", ((toString (char_loc.y * Constants.UI.tile_size)) ++ "px")),
- ("left", ((toString (char_loc.x * Constants.UI.tile_size)) ++ "px"))
- ]
- )
-
-get_focus_class : (
- Struct.Model.Type ->
- Struct.Character.Type ->
- (Html.Attribute Struct.Event.Type)
- )
-get_focus_class model char =
- if
- (
- (Struct.UI.get_previous_action model.ui)
- ==
- (Just (Struct.UI.SelectedCharacter (Struct.Character.get_index char)))
- )
- then
- (Html.Attributes.class "battlemap-character-selected")
- else
- if
- (
- (Struct.CharacterTurn.try_getting_target model.char_turn)
- ==
- (Just (Struct.Character.get_index char))
- )
- then
- (Html.Attributes.class "battlemap-character-targeted")
- else
- (Html.Attributes.class "")
-
-get_body_html : Struct.Character.Type -> (Html.Html Struct.Event.Type)
-get_body_html char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-icon-body"),
- (Html.Attributes.class
- (
- "asset-character-team-body-"
- ++ (toString (Struct.Character.get_player_ix char))
- )
- )
- ]
- [
- ]
- )
-
-get_head_html : Struct.Character.Type -> (Html.Html Struct.Event.Type)
-get_head_html char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-icon-head"),
- (Html.Attributes.class
- ("asset-character-icon-" ++ (Struct.Character.get_icon_id char))
- )
- ]
- [
- ]
- )
-
-get_banner_html : Struct.Character.Type -> (Html.Html Struct.Event.Type)
-get_banner_html char =
- case (Struct.Character.get_rank char) of
- Struct.Character.Commander ->
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-icon-banner"),
- (Html.Attributes.class "asset-character-icon-commander-banner")
- ]
- [
- ]
- )
-
- Struct.Character.Target ->
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-icon-banner"),
- (Html.Attributes.class "asset-character-icon-target-banner")
- ]
- [
- ]
- )
-
- _ -> (Util.Html.nothing)
-
-get_actual_html : (
- Struct.Model.Type ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_actual_html model char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-tiled"),
- (Html.Attributes.class "battlemap-character-icon"),
- (get_animation_class model char),
- (get_activation_level_class char),
- (get_alliance_class model char),
- (get_position_style char),
- (get_focus_class model char),
- (Html.Attributes.class "clickable"),
- (Html.Events.onClick
- (Struct.Event.CharacterSelected
- (Struct.Character.get_index char)
- )
- )
- ]
- [
- (get_body_html char),
- (get_head_html char),
- (get_banner_html char)
- ]
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Struct.Model.Type ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_html model char =
- if (Struct.Character.is_alive char)
- then
- (get_actual_html model char)
- else
- (Util.Html.nothing)
diff --git a/src/battlemap/src/View/Battlemap/Navigator.elm b/src/battlemap/src/View/Battlemap/Navigator.elm
deleted file mode 100644
index a03e7d0..0000000
--- a/src/battlemap/src/View/Battlemap/Navigator.elm
+++ /dev/null
@@ -1,245 +0,0 @@
-module View.Battlemap.Navigator exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-import Html.Events
-
-import List
-
--- Battlemap -------------------------------------------------------------------
-import Constants.UI
-
-import Struct.Direction
-import Struct.Event
-import Struct.Location
-import Struct.Marker
-import Struct.Navigator
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-marker_get_html : (
- Bool ->
- (Struct.Location.Ref, Struct.Marker.Type) ->
- (Html.Html Struct.Event.Type)
- )
-marker_get_html is_interactive (loc_ref, marker) =
- (Html.div
- (
- [
- (Html.Attributes.class "battlemap-marker-icon"),
- (Html.Attributes.class "battlemap-tiled"),
- (Html.Attributes.class
- (
- "battlemap-"
- ++
- (
- case marker of
- Struct.Marker.CanGoToCanDefend -> "can-go-to-can-defend"
- Struct.Marker.CanGoToCantDefend ->
- "can-go-to-cant-defend"
-
- Struct.Marker.CanAttackCanDefend ->
- "can-attack-can-defend"
-
- Struct.Marker.CanAttackCantDefend ->
- "can-attack-cant-defend"
- )
- ++
- "-marker"
- )
- ),
- (Html.Attributes.style
- (
- let
- loc = (Struct.Location.from_ref loc_ref)
- in
- [
- (
- "top",
- ((toString (loc.y * Constants.UI.tile_size)) ++ "px")
- ),
- (
- "left",
- ((toString (loc.x * Constants.UI.tile_size)) ++ "px")
- )
- ]
- )
- )
- ]
- ++
- (
- if (is_interactive)
- then
- if
- (
- (marker == Struct.Marker.CanGoToCanDefend)
- || (marker == Struct.Marker.CanGoToCantDefend)
- )
- then
- [
- (Html.Attributes.class "battlemap-navigator-interactive"),
- (Html.Attributes.class "clickable"),
- (Html.Events.onClick
- (Struct.Event.CharacterOrTileSelected loc_ref)
- )
- ]
- else
- [
- (Html.Attributes.class "battlemap-navigator-interactive")
- ]
- else
- [
- (Html.Attributes.class "battlemap-navigator-non-interactive"),
- (Html.Events.onClick
- (Struct.Event.CharacterOrTileSelected loc_ref)
- )
- ]
- )
- )
- [
- ]
- )
-
-path_node_get_html : (
- Bool ->
- Struct.Direction.Type ->
- (
- Struct.Location.Type,
- Struct.Direction.Type,
- (List (Html.Html Struct.Event.Type))
- ) ->
- (
- Struct.Location.Type,
- Struct.Direction.Type,
- (List (Html.Html Struct.Event.Type))
- )
- )
-path_node_get_html is_below_markers next_dir (curr_loc, curr_dir, curr_nodes) =
- (
- (Struct.Location.neighbor next_dir curr_loc),
- next_dir,
- (
- (Html.div
- [
- (Html.Attributes.class "battlemap-path-icon"),
- (Html.Attributes.class
- (
- if (is_below_markers)
- then
- "battlemap-path-icon-below-markers"
- else
- "battlemap-path-icon-above-markers"
- )
- ),
- (Html.Attributes.class "battlemap-tiled"),
- (Html.Attributes.class
- (
- "battlemap-path-icon-"
- ++
- (Struct.Direction.to_string curr_dir)
- ++
- (Struct.Direction.to_string next_dir)
- )
- ),
- (Html.Events.onClick
- (Struct.Event.CharacterOrTileSelected
- (Struct.Location.get_ref curr_loc)
- )
- ),
- (Html.Attributes.style
- [
- (
- "top",
- (
- (toString (curr_loc.y * Constants.UI.tile_size))
- ++
- "px"
- )
- ),
- (
- "left",
- (
- (toString (curr_loc.x * Constants.UI.tile_size))
- ++
- "px"
- )
- )
- ]
- )
- ]
- [
- ]
- )
- ::
- curr_nodes
- )
- )
-
-mark_the_spot : (
- Struct.Location.Type ->
- Struct.Direction.Type ->
- (Html.Html Struct.Event.Type)
- )
-mark_the_spot loc origin_dir =
- (Html.div
- [
- (Html.Attributes.class "battlemap-path-icon"),
- (Html.Attributes.class "battlemap-path-icon-above-markers"),
- (Html.Attributes.class "battlemap-tiled"),
- (Html.Attributes.class
- (
- "battlemap-path-icon-mark"
- ++
- (Struct.Direction.to_string origin_dir)
- )
- ),
- (Html.Events.onClick
- (Struct.Event.CharacterOrTileSelected (Struct.Location.get_ref loc))
- ),
- (Html.Attributes.style
- [
- (
- "top",
- ((toString (loc.y * Constants.UI.tile_size)) ++ "px")
- ),
- (
- "left",
- ((toString (loc.x * Constants.UI.tile_size)) ++ "px")
- )
- ]
- )
- ]
- [
- ]
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Struct.Navigator.Summary ->
- Bool ->
- (List (Html.Html Struct.Event.Type))
- )
-get_html nav_summary is_interactive =
- if (is_interactive)
- then
- (
- (List.map (marker_get_html True) nav_summary.markers)
- ++
- (
- let
- (final_loc, final_dir, path_node_htmls) =
- (List.foldr
- (path_node_get_html nav_summary.locked_path)
- (nav_summary.starting_location, Struct.Direction.None, [])
- nav_summary.path
- )
- in
- ((mark_the_spot final_loc final_dir) :: path_node_htmls)
- )
- )
- else
- (List.map (marker_get_html False) nav_summary.markers)
diff --git a/src/battlemap/src/View/Battlemap/Tile.elm b/src/battlemap/src/View/Battlemap/Tile.elm
deleted file mode 100644
index a049acf..0000000
--- a/src/battlemap/src/View/Battlemap/Tile.elm
+++ /dev/null
@@ -1,69 +0,0 @@
-module View.Battlemap.Tile exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-import Html.Events
-
--- Battlemap -------------------------------------------------------------------
-import Constants.UI
-import Constants.IO
-
-import Struct.Event
-import Struct.Location
-import Struct.Tile
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Struct.Tile.Instance ->
- (Html.Html Struct.Event.Type)
- )
-get_html tile =
- let
- tile_loc = (Struct.Tile.get_location tile)
- in
- (Html.div
- [
- (Html.Attributes.class "battlemap-tile-icon"),
- (Html.Attributes.class "battlemap-tiled"),
- (Html.Attributes.class
- (
- "battlemap-tile-variant-"
- ++ (toString (Struct.Tile.get_variant_id tile))
- )
- ),
- (Html.Attributes.class "clickable"),
- (Html.Events.onClick
- (Struct.Event.TileSelected (Struct.Location.get_ref tile_loc))
- ),
- (Html.Attributes.style
- [
- (
- "top",
- ((toString (tile_loc.y * Constants.UI.tile_size)) ++ "px")
- ),
- (
- "left",
- ((toString (tile_loc.x * Constants.UI.tile_size)) ++ "px")
- ),
- (
- "background-image",
- (
- "url("
- ++ Constants.IO.tile_assets_url
- ++ (Struct.Tile.get_icon_id tile)
- ++".svg)"
- )
- )
- ]
- )
- ]
- [
- ]
- )
diff --git a/src/battlemap/src/View/Character.elm b/src/battlemap/src/View/Character.elm
deleted file mode 100644
index 838aac4..0000000
--- a/src/battlemap/src/View/Character.elm
+++ /dev/null
@@ -1,230 +0,0 @@
-module View.Character exposing
- (
- get_portrait_html,
- get_icon_html
- )
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-import Html.Events
-
--- Battlemap ------------------------------------------------------------------
-import Constants.UI
-
-import Util.Html
-
-import Struct.Armor
-import Struct.Character
-import Struct.CharacterTurn
-import Struct.Event
-import Struct.Model
-import Struct.UI
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_activation_level_class : (
- Struct.Character.Type ->
- (Html.Attribute Struct.Event.Type)
- )
-get_activation_level_class char =
- if (Struct.Character.is_enabled char)
- then
- (Html.Attributes.class "battlemap-character-icon-enabled")
- else
- (Html.Attributes.class "battlemap-character-icon-disabled")
-
-get_alliance_class : (
- Struct.Model.Type ->
- Struct.Character.Type ->
- (Html.Attribute Struct.Event.Type)
- )
-get_alliance_class model char =
- if ((Struct.Character.get_player_ix char) == model.player_ix)
- then
- (Html.Attributes.class "battlemap-character-ally")
- else
- (Html.Attributes.class "battlemap-character-enemy")
-
-get_position_style : (
- Struct.Character.Type ->
- (Html.Attribute Struct.Event.Type)
- )
-get_position_style char =
- let char_loc = (Struct.Character.get_location char) in
- (Html.Attributes.style
- [
- ("top", ((toString (char_loc.y * Constants.UI.tile_size)) ++ "px")),
- ("left", ((toString (char_loc.x * Constants.UI.tile_size)) ++ "px"))
- ]
- )
-
-get_focus_class : (
- Struct.Model.Type ->
- Struct.Character.Type ->
- (Html.Attribute Struct.Event.Type)
- )
-get_focus_class model char =
- if
- (
- (Struct.UI.get_previous_action model.ui)
- ==
- (Just (Struct.UI.SelectedCharacter (Struct.Character.get_index char)))
- )
- then
- (Html.Attributes.class "battlemap-character-selected")
- else
- if
- (
- (Struct.CharacterTurn.try_getting_target model.char_turn)
- ==
- (Just (Struct.Character.get_index char))
- )
- then
- (Html.Attributes.class "battlemap-character-targeted")
- else
- (Html.Attributes.class "")
-
-get_icon_body_html : Struct.Character.Type -> (Html.Html Struct.Event.Type)
-get_icon_body_html char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-icon-body"),
- (Html.Attributes.class
- (
- "asset-character-team-body-"
- ++ (toString (Struct.Character.get_player_ix char))
- )
- )
- ]
- [
- ]
- )
-
-get_icon_head_html : Struct.Character.Type -> (Html.Html Struct.Event.Type)
-get_icon_head_html char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-icon-head"),
- (Html.Attributes.class
- ("asset-character-icon-" ++ (Struct.Character.get_icon_id char))
- )
- ]
- [
- ]
- )
-
-get_icon_actual_html : (
- Struct.Model.Type ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_icon_actual_html model char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-tiled"),
- (Html.Attributes.class "battlemap-character-icon"),
- (get_activation_level_class char),
- (get_alliance_class model char),
- (get_position_style char),
- (get_focus_class model char),
- (Html.Attributes.class "clickable"),
- (Html.Events.onClick
- (Struct.Event.CharacterSelected (Struct.Character.get_index char))
- )
- ]
- [
- (get_icon_body_html char),
- (get_icon_head_html char)
- ]
- )
-
-get_portrait_body_html : Struct.Character.Type -> (Html.Html Struct.Event.Type)
-get_portrait_body_html char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-portrait-body"),
- (Html.Attributes.class
- (
- "asset-character-portrait-"
- ++ (Struct.Character.get_portrait_id char)
- )
- )
- ]
- [
- ]
- )
-
-get_portrait_armor_html : Struct.Character.Type -> (Html.Html Struct.Event.Type)
-get_portrait_armor_html char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-portrait-armor"),
- (Html.Attributes.class
- (
- "asset-armor-"
- ++
- (Struct.Armor.get_image_id (Struct.Character.get_armor char))
- )
- ),
- (Html.Attributes.class
- (
- "asset-armor-variation-"
- ++ (Struct.Character.get_armor_variation char)
- )
- )
- ]
- [
- ]
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_portrait_html : (
- Int ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_portrait_html viewer_ix char =
- (Html.div
- [
- (Html.Attributes.class
- (
- if ((Struct.Character.get_player_ix char) == viewer_ix)
- then
- "battlemap-character-ally"
- else
- "battlemap-character-enemy"
- )
- ),
- (Html.Attributes.class "battlemap-character-portrait"),
- (Html.Attributes.class
- (
- "battlemap-character-portrait-team-"
- ++
- (toString (Struct.Character.get_player_ix char))
- )
- ),
- (Html.Events.onClick
- (Struct.Event.LookingForCharacter (Struct.Character.get_index char))
- )
- ]
- [
- (get_portrait_body_html char),
- (get_portrait_armor_html char)
- ]
- )
-
-get_icon_html : (
- Struct.Model.Type ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_icon_html model char =
- if (Struct.Character.is_alive char)
- then
- (get_icon_actual_html model char)
- else
- (Util.Html.nothing)
diff --git a/src/battlemap/src/View/Controlled.elm b/src/battlemap/src/View/Controlled.elm
deleted file mode 100644
index 8a36fb8..0000000
--- a/src/battlemap/src/View/Controlled.elm
+++ /dev/null
@@ -1,133 +0,0 @@
-module View.Controlled exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-import Html.Events
-
--- Struct.Battlemap -------------------------------------------------------------------
-import Struct.CharacterTurn
-import Struct.Event
-import Struct.Navigator
-
-import Util.Html
-
-import View.Controlled.CharacterCard
-import View.Controlled.ManualControls
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-has_a_path : Struct.CharacterTurn.Type -> Bool
-has_a_path char_turn =
- case (Struct.CharacterTurn.try_getting_navigator char_turn) of
- (Just nav) -> ((Struct.Navigator.get_path nav) /= [])
- Nothing -> False
-
-
-attack_button : Struct.CharacterTurn.Type -> (Html.Html Struct.Event.Type)
-attack_button char_turn =
- (Html.button
- [ (Html.Events.onClick Struct.Event.AttackWithoutMovingRequest) ]
- [
- (Html.text
- (
- if (has_a_path char_turn)
- then ("Go & Select Target")
- else ("Select Target")
- )
- )
- ]
- )
-
-abort_button : (Html.Html Struct.Event.Type)
-abort_button =
- (Html.button
- [ (Html.Events.onClick Struct.Event.AbortTurnRequest) ]
- [ (Html.text "Abort") ]
- )
-
-end_turn_button : String -> (Html.Html Struct.Event.Type)
-end_turn_button suffix =
- (Html.button
- [
- (Html.Events.onClick Struct.Event.TurnEnded),
- (Html.Attributes.class "battlemap-end-turn-button")
- ]
- [ (Html.text ("End Turn" ++ suffix)) ]
- )
-
-inventory_button : (Html.Html Struct.Event.Type)
-inventory_button =
- (Html.button
- [ (Html.Events.onClick Struct.Event.WeaponSwitchRequest) ]
- [ (Html.text "Switch Weapon") ]
- )
-
-get_available_actions : (
- Struct.CharacterTurn.Type ->
- (List (Html.Html Struct.Event.Type))
- )
-get_available_actions char_turn =
- case (Struct.CharacterTurn.get_state char_turn) of
- Struct.CharacterTurn.SelectedCharacter ->
- [
- (attack_button char_turn),
- (inventory_button),
- (end_turn_button " Doing Nothing"),
- (abort_button)
- ]
-
- Struct.CharacterTurn.MovedCharacter ->
- [
- (end_turn_button " Without Attacking"),
- (abort_button)
- ]
-
- Struct.CharacterTurn.ChoseTarget ->
- [
- (end_turn_button " By Attacking"),
- (abort_button)
- ]
-
- _ ->
- [
- ]
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : Struct.CharacterTurn.Type -> Int -> (Html.Html Struct.Event.Type)
-get_html char_turn player_ix =
- case
- (Struct.CharacterTurn.try_getting_active_character char_turn)
- of
- (Just char) ->
- (Html.div
- [(Html.Attributes.class "battlemap-controlled")]
- [
- (View.Controlled.CharacterCard.get_summary_html
- char_turn
- player_ix
- char
- ),
- (
- if
- (
- (Struct.CharacterTurn.get_state char_turn)
- ==
- Struct.CharacterTurn.SelectedCharacter
- )
- then
- (View.Controlled.ManualControls.get_html)
- else
- (Util.Html.nothing)
- ),
- (Html.div
- [(Html.Attributes.class "battlemap-controlled-actions")]
- (get_available_actions char_turn)
- )
- ]
- )
-
- Nothing -> (Util.Html.nothing)
diff --git a/src/battlemap/src/View/Controlled/CharacterCard.elm b/src/battlemap/src/View/Controlled/CharacterCard.elm
deleted file mode 100644
index 5d2ad68..0000000
--- a/src/battlemap/src/View/Controlled/CharacterCard.elm
+++ /dev/null
@@ -1,582 +0,0 @@
-module View.Controlled.CharacterCard exposing
- (
- get_minimal_html,
- get_summary_html,
- get_full_html
- )
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-import Html.Events
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Armor
-import Struct.Attributes
-import Struct.Character
-import Struct.CharacterTurn
-import Struct.Event
-import Struct.HelpRequest
-import Struct.Navigator
-import Struct.Statistics
-import Struct.Weapon
-import Struct.WeaponSet
-
-import Util.Html
-
-import View.Character
-import View.Gauge
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_name : (
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_name char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-name")
- ]
- [
- (Html.text (Struct.Character.get_name char))
- ]
- )
-
-get_health_bar : (
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_health_bar char =
- let
- current = (Struct.Character.get_sane_current_health char)
- max =
- (Struct.Statistics.get_max_health
- (Struct.Character.get_statistics char)
- )
- in
- (View.Gauge.get_html
- ("HP: " ++ (toString current) ++ "/" ++ (toString max))
- (100.0 * ((toFloat current)/(toFloat max)))
- [(Html.Attributes.class "battlemap-character-card-health")]
- []
- []
- )
-
-get_rank_status : (
- Struct.Character.Rank ->
- (Html.Html Struct.Event.Type)
- )
-get_rank_status rank =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-status"),
- (Html.Attributes.class "clickable"),
- (Html.Events.onClick
- (Struct.Event.RequestedHelp (Struct.HelpRequest.HelpOnRank rank))
- ),
- (Html.Attributes.class
- (
- case rank of
- Struct.Character.Commander ->
- "battlemap-character-card-commander-status"
-
- Struct.Character.Target ->
- "battlemap-character-card-target-status"
-
- Struct.Character.Optional -> ""
- )
- )
- ]
- [
- ]
- )
-
-get_statuses : (
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_statuses char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-statuses")
- ]
- [
- (
- case (Struct.Character.get_rank char) of
- Struct.Character.Optional -> (Util.Html.nothing)
- other -> (get_rank_status other)
- )
- ]
- )
-
-get_active_movement_bar : (
- (Maybe Struct.Navigator.Type) ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_active_movement_bar maybe_navigator char =
- let
- max =
- (Struct.Statistics.get_movement_points
- (Struct.Character.get_statistics char)
- )
- current =
- case maybe_navigator of
- (Just navigator) ->
- (Struct.Navigator.get_remaining_points navigator)
-
- Nothing ->
- max
- in
- (View.Gauge.get_html
- ("MP: " ++ (toString current) ++ "/" ++ (toString max))
- (100.0 * ((toFloat current)/(toFloat max)))
- [(Html.Attributes.class "battlemap-character-card-movement")]
- []
- []
- )
-
-get_inactive_movement_bar : (
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_inactive_movement_bar char =
- let
- max =
- (Struct.Statistics.get_movement_points
- (Struct.Character.get_statistics char)
- )
- in
- (View.Gauge.get_html
- (
- "MP: "
- ++
- (toString
- (Struct.Statistics.get_movement_points
- (Struct.Character.get_statistics char)
- )
- )
- )
- 100.0
- [(Html.Attributes.class "battlemap-character-card-movement")]
- []
- []
- )
-
-get_movement_bar : (
- Struct.CharacterTurn.Type ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_movement_bar char_turn char =
- case (Struct.CharacterTurn.try_getting_active_character char_turn) of
- (Just active_char) ->
- if
- (
- (Struct.Character.get_index active_char)
- ==
- (Struct.Character.get_index char)
- )
- then
- (get_active_movement_bar
- (Struct.CharacterTurn.try_getting_navigator char_turn)
- active_char
- )
- else
- (get_inactive_movement_bar char)
-
- Nothing ->
- (get_inactive_movement_bar char)
-
-get_weapon_details : (
- Struct.Statistics.Type ->
- Struct.Weapon.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_weapon_details stats weapon =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-weapon")
- ]
- [
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-weapon-name")
- ]
- [
- (Html.text (Struct.Weapon.get_name weapon))
- ]
- ),
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-weapon-name")
- ]
- [
- (Html.text
- (
- "["
- ++ (toString (Struct.Statistics.get_damage_min stats))
- ++ ", "
- ++ (toString (Struct.Statistics.get_damage_max stats))
- ++ "] "
- ++
- (case (Struct.Weapon.get_damage_type weapon) of
- Struct.Weapon.Slash -> "slashing "
- Struct.Weapon.Pierce -> "piercing "
- Struct.Weapon.Blunt -> "bludgeoning "
- )
- ++
- (case (Struct.Weapon.get_range_type weapon) of
- Struct.Weapon.Ranged -> "ranged"
- Struct.Weapon.Melee -> "melee"
- )
- )
- )
- ]
- )
- ]
- )
-
-get_weapon_summary : (
- Struct.Weapon.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_weapon_summary weapon =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-weapon-summary")
- ]
- [
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-weapon-name")
- ]
- [
- (Html.text (Struct.Weapon.get_name weapon))
- ]
- ),
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-weapon-name")
- ]
- [
- (Html.text
- (
- (case (Struct.Weapon.get_damage_type weapon) of
- Struct.Weapon.Slash -> "Slashing "
- Struct.Weapon.Pierce -> "Piercing "
- Struct.Weapon.Blunt -> "Bludgeoning "
- )
- ++
- (case (Struct.Weapon.get_range_type weapon) of
- Struct.Weapon.Ranged -> "ranged"
- Struct.Weapon.Melee -> "melee"
- )
- )
- )
- ]
- )
- ]
- )
-
-get_armor_details : (
- Struct.Armor.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_armor_details armor =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-armor")
- ]
- [
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-armor-name")
- ]
- [
- (Html.text (Struct.Armor.get_name armor))
- ]
- ),
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-armor-stats")
- ]
- [
- (stat_name "Slash"),
- (stat_val
- (Struct.Armor.get_resistance_to Struct.Weapon.Slash armor)
- False
- ),
- (stat_name "Pierc."),
- (stat_val
- (Struct.Armor.get_resistance_to Struct.Weapon.Pierce armor)
- False
- ),
- (stat_name "Blund."),
- (stat_val
- (Struct.Armor.get_resistance_to Struct.Weapon.Blunt armor)
- False
- )
- ]
- )
- ]
- )
-
-stat_name : String -> (Html.Html Struct.Event.Type)
-stat_name name =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-stat-name")
- ]
- [
- (Html.text name)
- ]
- )
-
-stat_val : Int -> Bool -> (Html.Html Struct.Event.Type)
-stat_val val perc =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-stat-val")
- ]
- [
- (Html.text
- (
- (toString val)
- ++
- (
- if perc
- then
- "%"
- else
- ""
- )
- )
- )
- ]
- )
-
-att_dual_val : Int -> Int -> (Html.Html Struct.Event.Type)
-att_dual_val base active =
- let
- diff = (active - base)
- in
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-att-dual-val")
- ]
- [
- (Html.text
- (
- (toString base)
- ++ " ("
- ++
- (
- if (diff > 0)
- then
- ("+" ++ (toString diff))
- else
- if (diff == 0)
- then
- "~"
- else
- (toString diff)
- )
- ++ ")"
- )
- )
- ]
- )
-
-get_relevant_stats : (
- Struct.Character.Type ->
- Struct.Weapon.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_relevant_stats char weapon =
- let
- stats = (Struct.Character.get_statistics char)
- in
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-stats")
- ]
- [
- (stat_name "Dodge"),
- (stat_val (Struct.Statistics.get_dodges stats) True),
- (stat_name "Parry"),
- (stat_val
- (case (Struct.Weapon.get_range_type weapon) of
- Struct.Weapon.Ranged -> 0
- Struct.Weapon.Melee -> (Struct.Statistics.get_parries stats)
- )
- True
- ),
- (stat_name "Accu."),
- (stat_val (Struct.Statistics.get_accuracy stats) False),
- (stat_name "2xHit"),
- (stat_val (Struct.Statistics.get_double_hits stats) True),
- (stat_name "Crit."),
- (stat_val (Struct.Statistics.get_critical_hits stats) True)
- ]
- )
-
-get_attributes : (
- Struct.Character.Type ->
- Struct.Weapon.Type ->
- Struct.Armor.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_attributes char weapon armor =
- let
- base_atts = (Struct.Character.get_attributes char)
- active_atts =
- (Struct.Armor.apply_to_attributes
- armor
- (Struct.Weapon.apply_to_attributes weapon base_atts)
- )
- in
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-stats")
- ]
- [
- (stat_name "Con"),
- (att_dual_val
- (Struct.Attributes.get_constitution base_atts)
- (Struct.Attributes.get_constitution active_atts)
- ),
- (stat_name "Dex"),
- (att_dual_val
- (Struct.Attributes.get_dexterity base_atts)
- (Struct.Attributes.get_dexterity active_atts)
- ),
- (stat_name "Int"),
- (att_dual_val
- (Struct.Attributes.get_intelligence base_atts)
- (Struct.Attributes.get_intelligence active_atts)
- ),
- (stat_name "Min"),
- (att_dual_val
- (Struct.Attributes.get_mind base_atts)
- (Struct.Attributes.get_mind active_atts)
- ),
- (stat_name "Spe"),
- (att_dual_val
- (Struct.Attributes.get_speed base_atts)
- (Struct.Attributes.get_speed active_atts)
- ),
- (stat_name "Str"),
- (att_dual_val
- (Struct.Attributes.get_strength base_atts)
- (Struct.Attributes.get_strength active_atts)
- )
- ]
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_minimal_html : (
- Int ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_minimal_html player_ix char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card"),
- (Html.Attributes.class "battlemap-character-card-minimal")
- ]
- [
- (get_name char),
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-top")
- ]
- [
- (View.Character.get_portrait_html player_ix char),
- (get_health_bar char),
- (get_inactive_movement_bar char),
- (get_statuses char)
- ]
- )
- ]
- )
-
-get_summary_html : (
- Struct.CharacterTurn.Type ->
- Int ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_summary_html char_turn player_ix char =
- let
- weapon_set = (Struct.Character.get_weapons char)
- main_weapon = (Struct.WeaponSet.get_active_weapon weapon_set)
- char_statistics = (Struct.Character.get_statistics char)
- secondary_weapon = (Struct.WeaponSet.get_secondary_weapon weapon_set)
- in
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card")
- ]
- [
- (get_name char),
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-top")
- ]
- [
- (View.Character.get_portrait_html player_ix char),
- (get_health_bar char),
- (get_movement_bar char_turn char),
- (get_statuses char)
- ]
- ),
- (get_weapon_details char_statistics main_weapon),
- (get_armor_details (Struct.Character.get_armor char)),
- (get_relevant_stats char main_weapon),
- (get_weapon_summary secondary_weapon)
- ]
- )
-
-get_full_html : (
- Int ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_full_html player_ix char =
- let
- weapon_set = (Struct.Character.get_weapons char)
- main_weapon = (Struct.WeaponSet.get_active_weapon weapon_set)
- char_statistics = (Struct.Character.get_statistics char)
- secondary_weapon = (Struct.WeaponSet.get_secondary_weapon weapon_set)
- armor = (Struct.Character.get_armor char)
- in
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card")
- ]
- [
- (get_name char),
- (Html.div
- [
- (Html.Attributes.class "battlemap-character-card-top")
- ]
- [
- (View.Character.get_portrait_html player_ix char),
- (get_health_bar char),
- (get_inactive_movement_bar char),
- (get_statuses char)
- ]
- ),
- (get_weapon_details char_statistics main_weapon),
- (get_armor_details armor),
- (get_relevant_stats char main_weapon),
- (get_weapon_summary secondary_weapon),
- (get_attributes char main_weapon armor)
- ]
- )
diff --git a/src/battlemap/src/View/Controlled/ManualControls.elm b/src/battlemap/src/View/Controlled/ManualControls.elm
deleted file mode 100644
index 4e41e27..0000000
--- a/src/battlemap/src/View/Controlled/ManualControls.elm
+++ /dev/null
@@ -1,60 +0,0 @@
-module View.Controlled.ManualControls exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-import Html.Events
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Direction
-import Struct.Event
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-direction_button : (
- Struct.Direction.Type ->
- String ->
- (Html.Html Struct.Event.Type)
- )
-direction_button dir label =
- (Html.div
- [
- (Html.Attributes.class ("battlemap-manual-controls-" ++ label)),
- (Html.Attributes.class "clickable"),
- (Html.Events.onClick
- (Struct.Event.DirectionRequested dir)
- )
- ]
- []
- )
-
-go_button : (Html.Html Struct.Event.Type)
-go_button =
- (Html.button
- [
- (Html.Attributes.class "battlemap-manual-controls-go"),
- (Html.Events.onClick Struct.Event.AttackWithoutMovingRequest)
- ]
- [
- (Html.text "Go")
- ]
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (Html.Html Struct.Event.Type)
-get_html =
- (Html.div
- [
- (Html.Attributes.class "battlemap-manual-controls")
- ]
- [
- (direction_button Struct.Direction.Left "left"),
- (direction_button Struct.Direction.Down "down"),
- (direction_button Struct.Direction.Up "up"),
- (direction_button Struct.Direction.Right "right"),
- (go_button)
- ]
- )
diff --git a/src/battlemap/src/View/Controlled/Targets.elm b/src/battlemap/src/View/Controlled/Targets.elm
deleted file mode 100644
index 5a7c605..0000000
--- a/src/battlemap/src/View/Controlled/Targets.elm
+++ /dev/null
@@ -1,69 +0,0 @@
-module View.SideBar.Targets exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Dict
-
-import Html
-import Html.Attributes
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Character
-import Struct.Event
-import Struct.Model
-import Struct.Statistics
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
-get_target_info_html : (
- Struct.Model.Type ->
- Struct.Character.Ref ->
- (Html.Html Struct.Event.Type)
- )
-get_target_info_html model char_ref =
- case (Dict.get char_ref model.characters) of
- Nothing -> (Html.text "Error: Unknown character selected.")
- (Just char) ->
- (Html.text
- (
- "Attacking "
- ++ char.name
- ++ " (player "
- ++ (toString (Struct.Character.get_player_ix char))
- ++ "): "
- ++
- (toString
- (Struct.Statistics.get_movement_points
- (Struct.Character.get_statistics char)
- )
- )
- ++ " movement points; "
- ++ "???"
- ++ " attack range. Health: "
- ++ (toString (Struct.Character.get_sane_current_health char))
- ++ "/"
- ++
- (toString
- (Struct.Statistics.get_max_health
- (Struct.Character.get_statistics char)
- )
- )
- )
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Struct.Model.Type ->
- Struct.Character.Ref ->
- (Html.Html Struct.Event.Type)
- )
-get_html model target_ref =
- (Html.div
- [
- (Html.Attributes.class "battlemap-side-bar-targets")
- ]
- [(get_target_info_html model target_ref)]
- )
diff --git a/src/battlemap/src/View/Gauge.elm b/src/battlemap/src/View/Gauge.elm
deleted file mode 100644
index a4c5974..0000000
--- a/src/battlemap/src/View/Gauge.elm
+++ /dev/null
@@ -1,76 +0,0 @@
-module View.Gauge exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_text_div: (
- String ->
- List (Html.Attribute Struct.Event.Type) ->
- (Html.Html Struct.Event.Type)
- )
-get_text_div text extra_txt_attr =
- (Html.div
- (
- [(Html.Attributes.class "battlemap-gauge-text")]
- ++ extra_txt_attr
- )
- [
- (Html.text text)
- ]
- )
-
-get_bar_div: (
- Float ->
- List (Html.Attribute Struct.Event.Type) ->
- (Html.Html Struct.Event.Type)
- )
-get_bar_div percent extra_bar_attr =
- (Html.div
- (
- [
- (Html.Attributes.style
- [
- ("width", ((toString percent) ++ "%"))
- ]
- ),
- (Html.Attributes.class
- "battlemap-gauge-bar"
- )
- ]
- ++
- extra_bar_attr
- )
- [
- ]
- )
-
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- String ->
- Float ->
- List (Html.Attribute Struct.Event.Type) ->
- List (Html.Attribute Struct.Event.Type) ->
- List (Html.Attribute Struct.Event.Type) ->
- (Html.Html Struct.Event.Type)
- )
-get_html text percent extra_div_attr extra_bar_attr extra_txt_attr =
- (Html.div
- (
- [(Html.Attributes.class "battlemap-gauge")]
- ++ extra_div_attr
- )
- [
- (get_text_div text extra_txt_attr),
- (get_bar_div percent extra_bar_attr)
- ]
- )
diff --git a/src/battlemap/src/View/MainMenu.elm b/src/battlemap/src/View/MainMenu.elm
deleted file mode 100644
index f301ea6..0000000
--- a/src/battlemap/src/View/MainMenu.elm
+++ /dev/null
@@ -1,38 +0,0 @@
-module View.MainMenu exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-import Html.Events
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.UI
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_menu_button_html : (
- Struct.UI.Tab ->
- (Html.Html Struct.Event.Type)
- )
-get_menu_button_html tab =
- (Html.button
- [ (Html.Events.onClick (Struct.Event.TabSelected tab)) ]
- [ (Html.text (Struct.UI.to_string tab)) ]
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (Html.Html Struct.Event.Type)
-get_html =
- (Html.div
- [
- (Html.Attributes.class "battlemap-main-menu")
- ]
- (List.map
- (get_menu_button_html)
- (Struct.UI.get_all_tabs)
- )
- )
diff --git a/src/battlemap/src/View/MessageBoard.elm b/src/battlemap/src/View/MessageBoard.elm
deleted file mode 100644
index 5de6e8d..0000000
--- a/src/battlemap/src/View/MessageBoard.elm
+++ /dev/null
@@ -1,30 +0,0 @@
-module View.MessageBoard exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-
--- Struct.Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.Model
-
-import View.MessageBoard.Animator
-import View.MessageBoard.Error
-import View.MessageBoard.Help
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type)
-get_html model =
- case (model.error) of
- (Just error) -> (View.MessageBoard.Error.get_html model error)
- Nothing ->
- case model.animator of
- (Just animator) ->
- (View.MessageBoard.Animator.get_html model animator)
-
- Nothing -> (View.MessageBoard.Help.get_html model)
diff --git a/src/battlemap/src/View/MessageBoard/Animator.elm b/src/battlemap/src/View/MessageBoard/Animator.elm
deleted file mode 100644
index 5c8938b..0000000
--- a/src/battlemap/src/View/MessageBoard/Animator.elm
+++ /dev/null
@@ -1,57 +0,0 @@
-module View.MessageBoard.Animator exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.Model
-import Struct.TurnResult
-import Struct.TurnResultAnimator
-
-import Util.Html
-
-import View.MessageBoard.Animator.Attack
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_turn_result_html : (
- Struct.Model.Type ->
- Struct.TurnResult.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_turn_result_html model turn_result =
- case turn_result of
- (Struct.TurnResult.Attacked attack) ->
- (View.MessageBoard.Animator.Attack.get_html
- model
- (Struct.TurnResult.get_actor_index turn_result)
- (Struct.TurnResult.get_attack_defender_index attack)
- (Struct.TurnResult.maybe_get_attack_next_step attack)
- )
-
- _ -> (Util.Html.nothing)
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Struct.Model.Type ->
- Struct.TurnResultAnimator.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_html model animator =
- case (Struct.TurnResultAnimator.get_current_animation animator) of
- (Struct.TurnResultAnimator.TurnResult turn_result) ->
- (get_turn_result_html model turn_result)
-
- (Struct.TurnResultAnimator.AttackSetup (attacker_id, defender_id)) ->
- (View.MessageBoard.Animator.Attack.get_html
- model
- attacker_id
- defender_id
- Nothing
- )
-
- _ -> (Util.Html.nothing)
diff --git a/src/battlemap/src/View/MessageBoard/Animator/Attack.elm b/src/battlemap/src/View/MessageBoard/Animator/Attack.elm
deleted file mode 100644
index 211ada4..0000000
--- a/src/battlemap/src/View/MessageBoard/Animator/Attack.elm
+++ /dev/null
@@ -1,297 +0,0 @@
-module View.MessageBoard.Animator.Attack exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Html
-import Html.Attributes
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Attack
-import Struct.Character
-import Struct.Event
-import Struct.Model
-
-import View.Controlled.CharacterCard
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_effect_text : Struct.Attack.Type -> String
-get_effect_text attack =
- (
- (
- case attack.precision of
- Struct.Attack.Hit -> " hit for "
- Struct.Attack.Graze -> " grazed for "
- Struct.Attack.Miss -> " missed."
- )
- ++
- (
- if (attack.precision == Struct.Attack.Miss)
- then
- ""
- else
- (
- ((toString attack.damage) ++ " damage")
- ++
- (
- if (attack.critical)
- then " (Critical Hit)."
- else "."
- )
- )
- )
- )
-
-get_empty_attack_html : (Html.Html Struct.Event.Type)
-get_empty_attack_html =
- (Html.div
- [
- (Html.Attributes.class "battlemap-message-attack-text")
- ]
- []
- )
-
-get_attack_html : (
- Struct.Character.Type ->
- Struct.Character.Type ->
- Struct.Attack.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_attack_html attacker defender attack =
- let
- attacker_name = (Struct.Character.get_name attacker)
- defender_name = (Struct.Character.get_name defender)
- in
- (Html.div
- [
- (Html.Attributes.class "battlemap-message-attack-text")
- ]
- [
- (Html.text
- (
- case (attack.order, attack.parried) of
- (Struct.Attack.Counter, True) ->
- (
- defender_name
- ++ " attempted to strike back, but "
- ++ attacker_name
- ++ " parried, and "
- ++ (get_effect_text attack)
- )
-
- (Struct.Attack.Counter, _) ->
- (
- defender_name
- ++ " striked back, and "
- ++ (get_effect_text attack)
- )
-
- (_, True) ->
- (
- attacker_name
- ++ " attempted a hit, but "
- ++ defender_name
- ++ " parried, and "
- ++ (get_effect_text attack)
- )
-
- (_, _) ->
- (attacker_name ++ " " ++ (get_effect_text attack))
- )
- )
- ]
- )
-
-get_attack_animation_class : (
- Struct.Attack.Type ->
- Struct.Character.Type ->
- String
- )
-get_attack_animation_class attack char =
- if (attack.critical)
- then
- "battlemap-animated-portrait-attack-critical"
- else
- "battlemap-animated-portrait-attacks"
-
-get_defense_animation_class : (
- Struct.Attack.Type ->
- Struct.Character.Type ->
- String
- )
-get_defense_animation_class attack char =
- if (attack.damage == 0)
- then
- if (attack.precision == Struct.Attack.Miss)
- then
- "battlemap-animated-portrait-dodges"
- else
- "battlemap-animated-portrait-undamaged"
- else if ((Struct.Character.get_current_health char) > 0)
- then
- if (attack.precision == Struct.Attack.Graze)
- then
- "battlemap-animated-portrait-grazed-damage"
- else
- "battlemap-animated-portrait-damaged"
- else
- if (attack.precision == Struct.Attack.Graze)
- then
- "battlemap-animated-portrait-grazed-death"
- else
- "battlemap-animated-portrait-dies"
-
-get_attacker_card : (
- (Maybe Struct.Attack.Type) ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_attacker_card maybe_attack char =
- (Html.div
- (case maybe_attack of
- Nothing ->
- if ((Struct.Character.get_current_health char) > 0)
- then
- [
- (Html.Attributes.class "battlemap-animated-portrait")
- ]
- else
- [
- (Html.Attributes.class "battlemap-animated-portrait-absent"),
- (Html.Attributes.class "battlemap-animated-portrait")
- ]
-
- (Just attack) ->
- [
- (Html.Attributes.class
- (case (attack.order, attack.parried) of
- (Struct.Attack.Counter, True) ->
- (get_attack_animation_class attack char)
-
- (Struct.Attack.Counter, _) ->
- (get_defense_animation_class attack char)
-
- (_, True) ->
- (get_defense_animation_class attack char)
-
- (_, _) ->
- (get_attack_animation_class attack char)
- )
- ),
- (Html.Attributes.class "battlemap-animated-portrait")
- ]
- )
- [
- (View.Controlled.CharacterCard.get_minimal_html
- (Struct.Character.get_player_ix char)
- char
- )
- ]
- )
-
-get_defender_card : (
- (Maybe Struct.Attack.Type) ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_defender_card maybe_attack char =
- (Html.div
- (case maybe_attack of
- Nothing ->
- if ((Struct.Character.get_current_health char) > 0)
- then
- [
- (Html.Attributes.class "battlemap-animated-portrait")
- ]
- else
- [
- (Html.Attributes.class "battlemap-animated-portrait-absent"),
- (Html.Attributes.class "battlemap-animated-portrait")
- ]
-
- (Just attack) ->
- [
- (Html.Attributes.class
- (case (attack.order, attack.parried) of
- (Struct.Attack.Counter, True) ->
- (get_defense_animation_class attack char)
-
- (Struct.Attack.Counter, _) ->
- (get_attack_animation_class attack char)
-
- (_, True) ->
- (get_attack_animation_class attack char)
-
- (_, _) ->
- (get_defense_animation_class attack char)
- )
- ),
- (Html.Attributes.class "battlemap-animated-portrait")
- ]
- )
- [
- (View.Controlled.CharacterCard.get_minimal_html -1 char)
- ]
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_placeholder_html : (
- (Array.Array Struct.Character.Type) ->
- Int ->
- Int ->
- (Maybe Struct.Attack.Type) ->
- (Html.Html Struct.Event.Type)
- )
-get_placeholder_html characters attacker_ix defender_ix maybe_attack =
- case
- (
- (Array.get attacker_ix characters),
- (Array.get defender_ix characters)
- )
- of
- ((Just atkchar), (Just defchar)) ->
- (Html.div
- [
- (Html.Attributes.class "battlemap-message-board"),
- (Html.Attributes.class "battlemap-message-attack")
- ]
- (
- [
- (get_attacker_card maybe_attack atkchar),
- (
- case maybe_attack of
- (Just attack) ->
- (get_attack_html atkchar defchar attack)
-
- Nothing ->
- (get_empty_attack_html)
- ),
- (get_defender_card maybe_attack defchar)
- ]
- )
- )
-
- _ ->
- (Html.div
- [
- ]
- [
- (Html.text "Error: Attack with unknown characters")
- ]
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Struct.Model.Type ->
- Int ->
- Int ->
- (Maybe Struct.Attack.Type) ->
- (Html.Html Struct.Event.Type)
- )
-get_html model attacker_ix defender_ix maybe_attack =
- (get_placeholder_html model.characters attacker_ix defender_ix maybe_attack)
diff --git a/src/battlemap/src/View/MessageBoard/Error.elm b/src/battlemap/src/View/MessageBoard/Error.elm
deleted file mode 100644
index 642634a..0000000
--- a/src/battlemap/src/View/MessageBoard/Error.elm
+++ /dev/null
@@ -1,33 +0,0 @@
-module View.MessageBoard.Error exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Error
-import Struct.Event
-import Struct.Model
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Struct.Model.Type ->
- Struct.Error.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_html model error =
- (Html.div
- [
- (Html.Attributes.class "battlemap-message-board"),
- (Html.Attributes.class "battlemap-error")
- ]
- [
- (Html.text (Struct.Error.to_string error))
- ]
- )
diff --git a/src/battlemap/src/View/MessageBoard/Help.elm b/src/battlemap/src/View/MessageBoard/Help.elm
deleted file mode 100644
index 15a33a5..0000000
--- a/src/battlemap/src/View/MessageBoard/Help.elm
+++ /dev/null
@@ -1,37 +0,0 @@
-module View.MessageBoard.Help exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.HelpRequest
-import Struct.Model
-
-import View.MessageBoard.Help.Guide
-import View.MessageBoard.Help.Rank
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type)
-get_html model =
- (Html.div
- [
- (Html.Attributes.class "battlemap-message-board"),
- (Html.Attributes.class "battlemap-message-board-help")
- ]
- (
- case model.help_request of
- Struct.HelpRequest.None ->
- (View.MessageBoard.Help.Guide.get_html_contents model)
-
- (Struct.HelpRequest.HelpOnRank rank) ->
- (View.MessageBoard.Help.Rank.get_html_contents rank)
- )
- )
diff --git a/src/battlemap/src/View/MessageBoard/Help/Guide.elm b/src/battlemap/src/View/MessageBoard/Help/Guide.elm
deleted file mode 100644
index a10b96e..0000000
--- a/src/battlemap/src/View/MessageBoard/Help/Guide.elm
+++ /dev/null
@@ -1,100 +0,0 @@
-module View.MessageBoard.Help.Guide exposing (get_html_contents)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-
--- Battlemap -------------------------------------------------------------------
-import Struct.CharacterTurn
-import Struct.Event
-import Struct.Model
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_header_html : (String -> (Html.Html Struct.Event.Type))
-get_header_html title =
- (Html.h1
- []
- [
- (Html.div
- [(Html.Attributes.class "battlemap-help-guide-icon")]
- []
- ),
- (Html.text title)
- ]
- )
-
-get_selected_character_html_contents : (List (Html.Html Struct.Event.Type))
-get_selected_character_html_contents =
- [
- (get_header_html "Controlling a Character"),
- (Html.text
- (
- "Click on a target tile to select a path or use the manual"
- ++ " controls (on the left panel) to make your own. Click on the"
- ++ " destination tile again to confirm (this can be reverted)."
- )
- )
- ]
-
-get_moved_character_html_contents : (List (Html.Html Struct.Event.Type))
-get_moved_character_html_contents =
- [
- (get_header_html "Selecting a Target"),
- (Html.text
- (
- "You can now choose a target in range. Dashed tiles indicate"
- ++ " where your character will not be able to defend themselves"
- ++ " against counter attacks."
- )
- )
- ]
-
-get_chose_target_html_contents : (List (Html.Html Struct.Event.Type))
-get_chose_target_html_contents =
- [
- (get_header_html "Finalizing the Character's Turn"),
- (Html.text
- (
- "If you are satisfied with your choices, you can end this"
- ++ " character's turn and see the results unfold. Otherwise, click"
- ++ " on the abort button to undo it all."
- )
- )
- ]
-
-get_default_html_contents : (List (Html.Html Struct.Event.Type))
-get_default_html_contents =
- [
- (get_header_html "Selecting a Character"),
- (Html.text
- (
- "Click once on a character to focus them. This will show you"
- ++ " their stats, equipment, and other infos. If they are in"
- ++ " your team and active (the pulsating characters),"
- ++ " clicking on them again will let you take control."
- )
- )
- ]
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html_contents : (
- Struct.Model.Type ->
- (List (Html.Html Struct.Event.Type))
- )
-get_html_contents model =
- case (Struct.CharacterTurn.get_state model.char_turn) of
- Struct.CharacterTurn.SelectedCharacter ->
- (get_selected_character_html_contents)
-
- Struct.CharacterTurn.MovedCharacter ->
- (get_moved_character_html_contents)
-
- Struct.CharacterTurn.ChoseTarget ->
- (get_chose_target_html_contents)
-
- _ ->
- (get_default_html_contents)
diff --git a/src/battlemap/src/View/MessageBoard/Help/Rank.elm b/src/battlemap/src/View/MessageBoard/Help/Rank.elm
deleted file mode 100644
index 95477d3..0000000
--- a/src/battlemap/src/View/MessageBoard/Help/Rank.elm
+++ /dev/null
@@ -1,97 +0,0 @@
-module View.MessageBoard.Help.Rank exposing (get_html_contents)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Character
-import Struct.Event
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_guide_icon_html : (Html.Html Struct.Event.Type)
-get_guide_icon_html =
- (Html.div
- [(Html.Attributes.class "battlemap-help-guide-icon")]
- []
- )
-
-get_header_with_icon_html : String -> String -> (Html.Html Struct.Event.Type)
-get_header_with_icon_html title rank_name =
- (Html.h1
- []
- [
- (get_guide_icon_html),
- (Html.text (title ++ " - ")),
- (Html.div
- [
- (Html.Attributes.class
- "battlemap-message-board-help-figure"
- ),
- (Html.Attributes.class
- ("battlemap-character-card-" ++ rank_name ++ "-status")
- )
- ]
- []
- )
- ]
- )
-
-get_target_help_message : (List (Html.Html Struct.Event.Type))
-get_target_help_message =
- [
- (get_header_with_icon_html "Protected Character" "target"),
- (Html.text
- (
- "Players that lose all of their Protected Characters are"
- ++ " eliminated."
- )
- )
- ]
-
-get_commander_help_message : (List (Html.Html Struct.Event.Type))
-get_commander_help_message =
- [
- (get_header_with_icon_html "Critical Character" "commander"),
- (Html.text
- (
- "Players that lose any of their Critical Characters are"
- ++ " eliminated."
- )
- )
- ]
-
-get_optional_help_message : (List (Html.Html Struct.Event.Type))
-get_optional_help_message =
- [
- (Html.h1
- []
- [
- (get_guide_icon_html),
- (Html.text "Reinforcement Character")
- ]
- ),
- (Html.text
- (
- "Unless it is their very last character, losing a"
- ++ " Reinforcement characters never causes a player to be"
- ++ " eliminated."
- )
- )
- ]
-
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html_contents : (
- Struct.Character.Rank ->
- (List (Html.Html Struct.Event.Type))
- )
-get_html_contents rank =
- case rank of
- Struct.Character.Target -> (get_target_help_message)
- Struct.Character.Commander -> (get_commander_help_message)
- Struct.Character.Optional -> (get_optional_help_message)
diff --git a/src/battlemap/src/View/SubMenu.elm b/src/battlemap/src/View/SubMenu.elm
deleted file mode 100644
index 8537452..0000000
--- a/src/battlemap/src/View/SubMenu.elm
+++ /dev/null
@@ -1,85 +0,0 @@
-module View.SubMenu exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Html
-import Html.Attributes
-import Html.Lazy
-
--- Battlemap -------------------------------------------------------------------
-import Struct.CharacterTurn
-import Struct.Event
-import Struct.Model
-import Struct.UI
-
-import Util.Html
-
-import View.Controlled.CharacterCard
-
-import View.SubMenu.Characters
-import View.SubMenu.Settings
-import View.SubMenu.Status
-import View.SubMenu.Timeline
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_inner_html : (
- Struct.Model.Type ->
- Struct.UI.Tab ->
- (Html.Html Struct.Event.Type)
- )
-get_inner_html model tab =
- case tab of
- Struct.UI.StatusTab ->
- (View.SubMenu.Status.get_html model)
-
- Struct.UI.CharactersTab ->
- (Html.Lazy.lazy2
- (View.SubMenu.Characters.get_html)
- model.characters
- model.player_ix
- )
-
- Struct.UI.SettingsTab ->
- (View.SubMenu.Settings.get_html model)
-
- Struct.UI.TimelineTab ->
- (View.SubMenu.Timeline.get_html model)
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type)
-get_html model =
- case (Struct.UI.try_getting_displayed_tab model.ui) of
- (Just tab) ->
- (Html.div
- [(Html.Attributes.class "battlemap-sub-menu")]
- [(get_inner_html model tab)]
- )
-
- Nothing ->
- case (Struct.CharacterTurn.try_getting_target model.char_turn) of
- (Just char_ref) ->
- case (Array.get char_ref model.characters) of
- (Just char) ->
- (Html.div
- [(Html.Attributes.class "battlemap-sub-menu")]
- [
- (Html.text "Targeting:"),
- (Html.Lazy.lazy3
- (View.Controlled.CharacterCard.get_summary_html)
- model.char_turn
- model.player_ix
- char
- )
- ]
- )
-
- Nothing ->
- (Util.Html.nothing)
-
- Nothing ->
- (Util.Html.nothing)
diff --git a/src/battlemap/src/View/SubMenu/Characters.elm b/src/battlemap/src/View/SubMenu/Characters.elm
deleted file mode 100644
index be5bac4..0000000
--- a/src/battlemap/src/View/SubMenu/Characters.elm
+++ /dev/null
@@ -1,69 +0,0 @@
-module View.SubMenu.Characters exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Html
-import Html.Attributes
-import Html.Events
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Character
-import Struct.Event
-
-import View.Controlled.CharacterCard
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_character_element_html : (
- Int ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_character_element_html player_ix char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-characters-element"),
- (
- if (Struct.Character.is_alive char)
- then
- (Html.Attributes.class "clickable")
- else
- (Html.Attributes.class "")
- ),
- (Html.Events.onClick
- (Struct.Event.LookingForCharacter (Struct.Character.get_index char))
- ),
- (
- if (Struct.Character.is_enabled char)
- then
- (Html.Attributes.class "battlemap-characters-element-active")
- else
- (Html.Attributes.class "battlemap-characters-element-inactive")
- )
- ]
- [
- (View.Controlled.CharacterCard.get_minimal_html player_ix char)
- ]
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- (Array.Array Struct.Character.Type) ->
- Int ->
- (Html.Html Struct.Event.Type)
- )
-get_html characters player_ix =
- (Html.div
- [
- (Html.Attributes.class "battlemap-tabmenu-content"),
- (Html.Attributes.class "battlemap-tabmenu-characters-tab")
- ]
- (List.map
- (get_character_element_html player_ix)
- (Array.toList characters)
- )
- )
diff --git a/src/battlemap/src/View/SubMenu/Settings.elm b/src/battlemap/src/View/SubMenu/Settings.elm
deleted file mode 100644
index 22aa99a..0000000
--- a/src/battlemap/src/View/SubMenu/Settings.elm
+++ /dev/null
@@ -1,59 +0,0 @@
-module View.SubMenu.Settings exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-import Html.Events
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.Model
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-scale_button : Float -> String -> (Html.Html Struct.Event.Type)
-scale_button mod label =
- (Html.button
- [
- (Html.Events.onClick
- (Struct.Event.ScaleChangeRequested mod)
- )
- ]
- [ (Html.text label) ]
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type)
-get_html model =
- (Html.div
- [
- (Html.Attributes.class "battlemap-tabmenu-content"),
- (Html.Attributes.class "battlemap-tabmenu-settings-tab")
- ]
- [
- (scale_button (0.75) "Zoom -"),
- (scale_button 0 "Zoom Reset"),
- (scale_button (1.15) "Zoom +"),
- (Html.button
- [
- (Html.Events.onClick Struct.Event.DebugTeamSwitchRequest)
- ]
- [ (Html.text "[DEBUG] Switch team") ]
- ),
- (Html.button
- [
- (Html.Events.onClick Struct.Event.DebugLoadBattlemapRequest)
- ]
- [ (Html.text "[DEBUG] Load battlemap") ]
- ),
- (Html.button
- [
- (Html.Events.onClick Struct.Event.DebugTestAnimation)
- ]
- [ (Html.text "[DEBUG] Test animations") ]
- )
- ]
- )
diff --git a/src/battlemap/src/View/SubMenu/Status.elm b/src/battlemap/src/View/SubMenu/Status.elm
deleted file mode 100644
index f67c85e..0000000
--- a/src/battlemap/src/View/SubMenu/Status.elm
+++ /dev/null
@@ -1,55 +0,0 @@
-module View.SubMenu.Status exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Html
-import Html.Attributes
-import Html.Lazy
-
--- Struct.Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.Location
-import Struct.Model
-import Struct.UI
-
-import View.SubMenu.Status.CharacterInfo
-import View.SubMenu.Status.TileInfo
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type)
-get_html model =
- (Html.div
- [
- (Html.Attributes.class "battlemap-footer-tabmenu-content"),
- (Html.Attributes.class "battlemap-footer-tabmenu-content-status")
- ]
- [
- (case (Struct.UI.get_previous_action model.ui) of
- (Just (Struct.UI.SelectedLocation loc)) ->
- (View.SubMenu.Status.TileInfo.get_html
- model
- (Struct.Location.from_ref loc)
- )
-
- (Just (Struct.UI.SelectedCharacter target_char)) ->
- case (Array.get target_char model.characters) of
- (Just char) ->
- (Html.Lazy.lazy2
- (View.SubMenu.Status.CharacterInfo.get_html)
- model.player_ix
- char
- )
-
- _ -> (Html.text "Error: Unknown character selected.")
-
- _ ->
- (Html.text "Nothing is being focused.")
- )
- ]
- )
diff --git a/src/battlemap/src/View/SubMenu/Status/CharacterInfo.elm b/src/battlemap/src/View/SubMenu/Status/CharacterInfo.elm
deleted file mode 100644
index a927158..0000000
--- a/src/battlemap/src/View/SubMenu/Status/CharacterInfo.elm
+++ /dev/null
@@ -1,34 +0,0 @@
-module View.SubMenu.Status.CharacterInfo exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
-
--- Struct.Battlemap -------------------------------------------------------------------
-import Struct.Character
-import Struct.Event
-
-import View.Controlled.CharacterCard
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Int ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_html player_ix char =
- (Html.div
- [
- (Html.Attributes.class "battlemap-tabmenu-character-info")
- ]
- [
- (Html.text ("Focusing:")),
- (View.Controlled.CharacterCard.get_full_html player_ix char)
- ]
- )
diff --git a/src/battlemap/src/View/SubMenu/Status/TileInfo.elm b/src/battlemap/src/View/SubMenu/Status/TileInfo.elm
deleted file mode 100644
index a009bc3..0000000
--- a/src/battlemap/src/View/SubMenu/Status/TileInfo.elm
+++ /dev/null
@@ -1,142 +0,0 @@
-module View.SubMenu.Status.TileInfo exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Dict
-
-import Html
-import Html.Attributes
-
--- Struct.Battlemap -------------------------------------------------------------------
-import Constants.IO
-import Constants.Movement
-
-import Struct.Battlemap
-import Struct.Event
-import Struct.Location
-import Struct.Model
-import Struct.Tile
-
-import Util.Html
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_icon : (Struct.Tile.Instance -> (Html.Html Struct.Event.Type))
-get_icon tile =
- (Html.div
- [
- (Html.Attributes.class "battlemap-tile-card-icon"),
- (Html.Attributes.class
- (
- "battlemap-tile-variant-"
- ++ (toString (Struct.Tile.get_variant_id tile))
- )
- ),
- (Html.Attributes.style
- [
- (
- "background-image",
- (
- "url("
- ++ Constants.IO.tile_assets_url
- ++ (Struct.Tile.get_icon_id tile)
- ++".svg)"
- )
- )
- ]
- )
- ]
- [
- ]
- )
-
-get_name : (
- Struct.Model.Type ->
- Struct.Tile.Instance ->
- (Html.Html Struct.Event.Type)
- )
-get_name model tile =
- case (Dict.get (Struct.Tile.get_type_id tile) model.tiles) of
- Nothing -> (Util.Html.nothing)
- (Just tile_type) ->
- (Html.div
- [
- (Html.Attributes.class "battlemap-tile-card-name")
- ]
- [
- (Html.text (Struct.Tile.get_name tile_type))
- ]
- )
-
-get_cost : (Struct.Tile.Instance -> (Html.Html Struct.Event.Type))
-get_cost tile =
- let
- cost = (Struct.Tile.get_instance_cost tile)
- text =
- if (cost > Constants.Movement.max_points)
- then
- "Obstructed"
- else
- ("Cost: " ++ (toString cost))
- in
- (Html.div
- [
- (Html.Attributes.class "battlemap-tile-card-cost")
- ]
- [
- (Html.text text)
- ]
- )
-
-get_location : (Struct.Tile.Instance -> (Html.Html Struct.Event.Type))
-get_location tile =
- let
- tile_location = (Struct.Tile.get_location tile)
- in
- (Html.div
- [
- (Html.Attributes.class "battlemap-tile-card-location")
- ]
- [
- (Html.text
- (
- "{x: "
- ++ (toString tile_location.x)
- ++ "; y: "
- ++ (toString tile_location.y)
- ++ "}"
- )
- )
- ]
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Struct.Model.Type ->
- Struct.Location.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_html model loc =
- case (Struct.Battlemap.try_getting_tile_at loc model.battlemap) of
- (Just tile) ->
- (Html.div
- [
- (Html.Attributes.class "battlemap-tile-card")
- ]
- [
- (get_name model tile),
- (Html.div
- [
- (Html.Attributes.class "battlemap-tile-card-top")
- ]
- [
- (get_icon tile),
- (get_location tile),
- (get_cost tile)
- ]
- )
- ]
- )
-
- Nothing -> (Html.text "Error: Unknown tile location selected.")
diff --git a/src/battlemap/src/View/SubMenu/Timeline.elm b/src/battlemap/src/View/SubMenu/Timeline.elm
deleted file mode 100644
index e6a449f..0000000
--- a/src/battlemap/src/View/SubMenu/Timeline.elm
+++ /dev/null
@@ -1,95 +0,0 @@
-module View.SubMenu.Timeline exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Html
-import Html.Attributes
---import Html.Events
-import Html.Lazy
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Character
-import Struct.Event
-import Struct.TurnResult
-import Struct.Model
-
-import View.SubMenu.Timeline.Attack
-import View.SubMenu.Timeline.Movement
-import View.SubMenu.Timeline.WeaponSwitch
-import View.SubMenu.Timeline.PlayerVictory
-import View.SubMenu.Timeline.PlayerDefeat
-import View.SubMenu.Timeline.PlayerTurnStart
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_turn_result_html : (
- (Array.Array Struct.Character.Type) ->
- Int ->
- Struct.TurnResult.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_turn_result_html characters player_ix turn_result =
- case turn_result of
- (Struct.TurnResult.Moved movement) ->
- (View.SubMenu.Timeline.Movement.get_html
- characters
- player_ix
- movement
- )
-
- (Struct.TurnResult.Attacked attack) ->
- (View.SubMenu.Timeline.Attack.get_html
- characters
- player_ix
- attack
- )
-
- (Struct.TurnResult.SwitchedWeapon weapon_switch) ->
- (View.SubMenu.Timeline.WeaponSwitch.get_html
- characters
- player_ix
- weapon_switch
- )
-
- (Struct.TurnResult.PlayerWon pvict) ->
- (View.SubMenu.Timeline.PlayerVictory.get_html pvict)
-
- (Struct.TurnResult.PlayerLost pdefeat) ->
- (View.SubMenu.Timeline.PlayerDefeat.get_html pdefeat)
-
- (Struct.TurnResult.PlayerTurnStarted pturns) ->
- (View.SubMenu.Timeline.PlayerTurnStart.get_html pturns)
-
-true_get_html : (
- (Array.Array Struct.Character.Type) ->
- Int ->
- (Array.Array Struct.TurnResult.Type) ->
- (Html.Html Struct.Event.Type)
- )
-true_get_html characters player_ix turn_results =
- (Html.div
- [
- (Html.Attributes.class "battlemap-tabmenu-content"),
- (Html.Attributes.class "battlemap-tabmenu-timeline-tab")
- ]
- (Array.toList
- (Array.map
- (get_turn_result_html characters player_ix)
- turn_results
- )
- )
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : Struct.Model.Type -> (Html.Html Struct.Event.Type)
-get_html model =
- (Html.Lazy.lazy3
- (true_get_html)
- model.characters
- model.player_ix
- model.timeline
- )
diff --git a/src/battlemap/src/View/SubMenu/Timeline/Attack.elm b/src/battlemap/src/View/SubMenu/Timeline/Attack.elm
deleted file mode 100644
index 875bc89..0000000
--- a/src/battlemap/src/View/SubMenu/Timeline/Attack.elm
+++ /dev/null
@@ -1,164 +0,0 @@
-module View.SubMenu.Timeline.Attack exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Html
-import Html.Attributes
---import Html.Events
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Attack
-import Struct.Event
-import Struct.TurnResult
-import Struct.Character
-
-import View.Character
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_title_html : (
- Struct.Character.Type ->
- Struct.Character.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_title_html attacker defender =
- (Html.div
- [
- (Html.Attributes.class "battlemap-timeline-attack-title")
- ]
- [
- (Html.text
- (
- (Struct.Character.get_name attacker)
- ++ " attacked "
- ++ (Struct.Character.get_name defender)
- ++ "!"
- )
- )
- ]
- )
-
-get_effect_text : Struct.Attack.Type -> String
-get_effect_text attack =
- (
- (
- case attack.precision of
- Struct.Attack.Hit -> " hit for "
- Struct.Attack.Graze -> " grazed for "
- Struct.Attack.Miss -> " missed."
- )
- ++
- (
- if (attack.precision == Struct.Attack.Miss)
- then
- ""
- else
- (
- ((toString attack.damage) ++ " damage")
- ++
- (
- if (attack.critical)
- then " (Critical Hit)."
- else "."
- )
- )
- )
- )
-
-get_attack_html : (
- Struct.Character.Type ->
- Struct.Character.Type ->
- Struct.Attack.Type ->
- (Html.Html Struct.Event.Type)
- )
-get_attack_html attacker defender attack =
- let
- attacker_name = (Struct.Character.get_name attacker)
- defender_name = (Struct.Character.get_name defender)
- in
- (Html.div
- []
- [
- (Html.text
- (
- case (attack.order, attack.parried) of
- (Struct.Attack.Counter, True) ->
- (
- defender_name
- ++ " attempted to strike back, but "
- ++ attacker_name
- ++ " parried, and "
- ++ (get_effect_text attack)
- )
-
- (Struct.Attack.Counter, _) ->
- (
- defender_name
- ++ " striked back, and "
- ++ (get_effect_text attack)
- )
-
- (_, True) ->
- (
- attacker_name
- ++ " attempted a hit, but "
- ++ defender_name
- ++ " parried, and "
- ++ (get_effect_text attack)
- )
-
- (_, _) ->
- (attacker_name ++ " " ++ (get_effect_text attack))
- )
- )
- ]
- )
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- (Array.Array Struct.Character.Type) ->
- Int ->
- Struct.TurnResult.Attack ->
- (Html.Html Struct.Event.Type)
- )
-get_html characters player_ix attack =
- case
- (
- (Array.get attack.attacker_index characters),
- (Array.get attack.defender_index characters)
- )
- of
- ((Just atkchar), (Just defchar)) ->
- (Html.div
- [
- (Html.Attributes.class "battlemap-timeline-element"),
- (Html.Attributes.class "battlemap-timeline-attack")
- ]
- (
- [
- (View.Character.get_portrait_html player_ix atkchar),
- (View.Character.get_portrait_html player_ix defchar),
- (get_title_html atkchar defchar)
- ]
- ++
- (List.map
- (get_attack_html atkchar defchar)
- attack.sequence
- )
- )
- )
-
- _ ->
- (Html.div
- [
- (Html.Attributes.class "battlemap-timeline-element"),
- (Html.Attributes.class "battlemap-timeline-attack")
- ]
- [
- (Html.text "Error: Attack with unknown characters")
- ]
- )
diff --git a/src/battlemap/src/View/SubMenu/Timeline/Movement.elm b/src/battlemap/src/View/SubMenu/Timeline/Movement.elm
deleted file mode 100644
index 2f7acd3..0000000
--- a/src/battlemap/src/View/SubMenu/Timeline/Movement.elm
+++ /dev/null
@@ -1,62 +0,0 @@
-module View.SubMenu.Timeline.Movement exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Html
-import Html.Attributes
---import Html.Events
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.TurnResult
-import Struct.Character
-
-import View.Character
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- (Array.Array Struct.Character.Type) ->
- Int ->
- Struct.TurnResult.Movement ->
- (Html.Html Struct.Event.Type)
- )
-get_html characters player_ix movement =
- case (Array.get movement.character_index characters) of
- (Just char) ->
- (Html.div
- [
- (Html.Attributes.class "battlemap-timeline-element"),
- (Html.Attributes.class "battlemap-timeline-movement")
- ]
- [
- (View.Character.get_portrait_html player_ix char),
- (Html.text
- (
- (Struct.Character.get_name char)
- ++ " moved to ("
- ++ (toString movement.destination.x)
- ++ ", "
- ++ (toString movement.destination.y)
- ++ ")."
- )
- )
- ]
- )
-
- _ ->
- (Html.div
- [
- (Html.Attributes.class "battlemap-timeline-element"),
- (Html.Attributes.class "battlemap-timeline-movement")
- ]
- [
- (Html.text "Error: Moving with unknown character")
- ]
- )
diff --git a/src/battlemap/src/View/SubMenu/Timeline/PlayerDefeat.elm b/src/battlemap/src/View/SubMenu/Timeline/PlayerDefeat.elm
deleted file mode 100644
index 7bbff11..0000000
--- a/src/battlemap/src/View/SubMenu/Timeline/PlayerDefeat.elm
+++ /dev/null
@@ -1,38 +0,0 @@
-module View.SubMenu.Timeline.PlayerDefeat exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
---import Html.Events
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.TurnResult
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Struct.TurnResult.PlayerDefeat ->
- (Html.Html Struct.Event.Type)
- )
-get_html pdefeat =
- (Html.div
- [
- (Html.Attributes.class "battlemap-timeline-element"),
- (Html.Attributes.class "battlemap-timeline-player-defeat")
- ]
- [
- (Html.text
- (
- "Player "
- ++ (toString pdefeat.player_index)
- ++ " has been eliminated."
- )
- )
- ]
- )
diff --git a/src/battlemap/src/View/SubMenu/Timeline/PlayerTurnStart.elm b/src/battlemap/src/View/SubMenu/Timeline/PlayerTurnStart.elm
deleted file mode 100644
index 11f639e..0000000
--- a/src/battlemap/src/View/SubMenu/Timeline/PlayerTurnStart.elm
+++ /dev/null
@@ -1,38 +0,0 @@
-module View.SubMenu.Timeline.PlayerTurnStart exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
---import Html.Events
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.TurnResult
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Struct.TurnResult.PlayerTurnStart ->
- (Html.Html Struct.Event.Type)
- )
-get_html pturns =
- (Html.div
- [
- (Html.Attributes.class "battlemap-timeline-element"),
- (Html.Attributes.class "battlemap-timeline-turn-start")
- ]
- [
- (Html.text
- (
- "Player "
- ++ (toString pturns.player_index)
- ++ "'s turn has started."
- )
- )
- ]
- )
diff --git a/src/battlemap/src/View/SubMenu/Timeline/PlayerVictory.elm b/src/battlemap/src/View/SubMenu/Timeline/PlayerVictory.elm
deleted file mode 100644
index 77494b6..0000000
--- a/src/battlemap/src/View/SubMenu/Timeline/PlayerVictory.elm
+++ /dev/null
@@ -1,38 +0,0 @@
-module View.SubMenu.Timeline.PlayerVictory exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Html
-import Html.Attributes
---import Html.Events
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.TurnResult
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- Struct.TurnResult.PlayerVictory ->
- (Html.Html Struct.Event.Type)
- )
-get_html pvict =
- (Html.div
- [
- (Html.Attributes.class "battlemap-timeline-element"),
- (Html.Attributes.class "battlemap-timeline-player-victory")
- ]
- [
- (Html.text
- (
- "Player "
- ++ (toString pvict.player_index)
- ++ " has won the battle."
- )
- )
- ]
- )
diff --git a/src/battlemap/src/View/SubMenu/Timeline/WeaponSwitch.elm b/src/battlemap/src/View/SubMenu/Timeline/WeaponSwitch.elm
deleted file mode 100644
index e66cfed..0000000
--- a/src/battlemap/src/View/SubMenu/Timeline/WeaponSwitch.elm
+++ /dev/null
@@ -1,58 +0,0 @@
-module View.SubMenu.Timeline.WeaponSwitch exposing (get_html)
-
--- Elm -------------------------------------------------------------------------
-import Array
-
-import Html
-import Html.Attributes
---import Html.Events
-
--- Battlemap -------------------------------------------------------------------
-import Struct.Event
-import Struct.TurnResult
-import Struct.Character
-
-import View.Character
-
---------------------------------------------------------------------------------
--- LOCAL -----------------------------------------------------------------------
---------------------------------------------------------------------------------
-
---------------------------------------------------------------------------------
--- EXPORTED --------------------------------------------------------------------
---------------------------------------------------------------------------------
-get_html : (
- (Array.Array Struct.Character.Type) ->
- Int ->
- Struct.TurnResult.WeaponSwitch ->
- (Html.Html Struct.Event.Type)
- )
-get_html characters player_ix weapon_switch =
- case (Array.get weapon_switch.character_index characters) of
- (Just char) ->
- (Html.div
- [
- (Html.Attributes.class "battlemap-timeline-element"),
- (Html.Attributes.class "battlemap-timeline-weapon-switch")
- ]
- [
- (View.Character.get_portrait_html player_ix char),
- (Html.text
- (
- (Struct.Character.get_name char)
- ++ " switched weapons."
- )
- )
- ]
- )
-
- _ ->
- (Html.div
- [
- (Html.Attributes.class "battlemap-timeline-element"),
- (Html.Attributes.class "battlemap-timeline-weapon-switch")
- ]
- [
- (Html.text "Error: Unknown character switched weapons")
- ]
- )
diff --git a/src/battlemap/www/index.html b/src/battlemap/www/index.html
deleted file mode 100644
index fcba44a..0000000
--- a/src/battlemap/www/index.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <link rel="stylesheet" type="text/css" href="../global/style.css">
- <link rel="stylesheet" type="text/css" href="../battlemap/style.css">
- <link rel="stylesheet" type="text/css" href="../asset/characters.css">
- <link rel="stylesheet" type="text/css" href="../asset/armors.css">
- <link rel="icon" type="image/x-icon" href="/favicon.ico">
- </head>
- <body>
- <script src="script/main.js"></script>
- <script src="../global/script/session.js"></script>
- <script src="../global/script/urlparams.js"></script>
- <script>
- tacticians_online.session.load();
-
- tacticians_online.app =
- Elm.Main.fullscreen
- (
- {
- user_id: tacticians_online.session.get_user_id(),
- token: tacticians_online.session.get_token(),
- url_params: tacticians_online.urlparams.get_parameters()
- }
- );
-
- tacticians_online.session.attach_to(tacticians_online.app);
- </script>
- </body>
-</html>
diff --git a/src/battlemap/www/style.css b/src/battlemap/www/style.css
deleted file mode 100644
index 33ff3db..0000000
--- a/src/battlemap/www/style.css
+++ /dev/null
@@ -1,1059 +0,0 @@
-/******************************************************************************/
-/** LAYOUT ********************************************************************/
-/******************************************************************************/
-.fullscreen-module {}
-
-
-.battlemap-main-menu
-{
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- height: 3em;
-
- display: flex;
-
- flex-direction: row;
- flex-wrap: wrap;
-
- border: 3px solid #502D16;
- border-top: none;
- border-radius: 0 0 15px 15px;
-
- padding: 0.5em;
-
- background-color: #917C6F;
-
- margin: 0 1em 0 1em;
-}
-
-.battlemap-message-board
-{
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
-
- height: 10em;
-
- border: 3px solid #502D16;
- border-radius: 15px 15px 0 0;
- border-bottom: none;
-
- padding: 0.5em;
- margin: 0 1em 0 1em;
-
- background-color: #917C6F;
-
- display: flex;
- flex-flow: row;
- justify-content: space-between;
-}
-
-.battlemap-container-centerer
-{
- position: absolute;
- top: 4em;
- left: 16em;
- right: 21em;
- bottom: 11em;
-
- display: flex;
-}
-
-.battlemap-container
-{
- display: inline-block;
- max-height: 100%;
- max-width: 100%;
- /*
- * 4em: main-menu + margin.
- * 11em: message-board + margin.
- */
- /*margin: 0 1em 0 1em; */
- overflow: scroll;
-
- margin: auto;
- resize: both;
-
- border: 3px solid #502D16;
- border-radius: 15px;
-}
-
-.battlemap-controlled
-{
- position: absolute;
- left: 0;
- top: 4em;
- width: 15em;
- /*
- * 4em: main-menu + margin.
- * 11em: message-board + margin.
- */
- height: calc(100% - 11em - 4em);
-
- display: flex;
- flex-flow: column;
-
- justify-content: space-between;
-
- padding: 0.5em;
-
- border: 3px solid #502D16;
- border-radius: 0 15px 15px 0;
- border-left: none;
-
- background-color: #917C6F;
-}
-
-.battlemap-sub-menu
-{
- position: absolute;
- right: 0;
- top: 4em;
- width: 20em;
- /*
- * 4em: main-menu + margin.
- * 11em: message-board + margin.
- */
- height: calc(100% - 11em - 4em);
- padding: 0.5em;
- overflow: auto;
-
- border: 3px solid #502D16;
- border-radius: 15px 0 0 15px;
- border-right: none;
-
- background-color: #917C6F;
-}
-
-/******************************************************************************/
-/** MESSAGE BOARD *************************************************************/
-/******************************************************************************/
-.battlemap-error
-{
- background-color: #550000;
-}
-
-.battlemap-message-board .battlemap-character-card
-{
- width: 16em;
-}
-
-.battlemap-message-attack-text
-{
- width: 100%;
- text-align: center;
- font-size: 1.2em;
-}
-
-.battlemap-message-board-help
-{
- display: block;
-}
-
-.battlemap-message-board-help h1
-{
- margin: 0;
- margin-bottom: 0.3em;
- font-size: 1.5em;
- text-align: center;
-}
-
-.battlemap-message-board-help-figure
-{
- width: 1.5em;
- height: 1.5em;
- background-size: 100%;
- display: inline-block;
- vertical-align: middle;
-}
-
-.battlemap-help-guide-icon
-{
- margin-right: 0.5em;
- width: 1.5em;
- height: 1.5em;
- background-image: url("/asset/svg/help-icon.svg");
- background-size: 100%;
- display: inline-block;
- vertical-align: middle;
-}
-
-/******************************************************************************/
-/** CONTROLLED PANEL **********************************************************/
-/******************************************************************************/
-.battlemap-controlled-actions
-{
- display: flex;
- flex-flow: row wrap;
-
- align-items: center;
- justify-content: center;
-}
-
-.battlemap-end-turn-button
-{
- animation-name: reverse-brown-alarm-bg;
- animation-duration: 2s;
- animation-iteration-count: infinite;
-}
-
-/** Character Card ************************************************************/
-.battlemap-character-card,
-.battlemap-tile-card
-{
- display: flex;
- flex-flow: column;
-}
-
-.battlemap-character-card-top,
-.battlemap-tile-card-top
-{
- margin-top: 0.5em;
- position: relative;
-}
-
-.battlemap-character-portrait
-{
- box-sizing: border-box;
- border-radius: 5px;
- background-size: 100% 100%;
- width: 100px;
- height: 100px;
- overflow: hidden;
-}
-
-.battlemap-character-portrait
-{
- cursor: pointer;
-}
-
-.battlemap-tile-card-icon
-{
- box-sizing: border-box;
- border-radius: 5px;
- background-size: 300% 300%;
- width: 80px;
- height: 80px;
-}
-
-.battlemap-character-portrait *
-{
- box-sizing: border-box;
- background-size: 100% 100%;
- width: inherit;
- height: inherit;
-}
-
-.battlemap-character-portrait-body
-{
- z-index: 1;
-}
-
-.battlemap-character-portrait-armor
-{
- position: relative;
- z-index: 1;
- top: -100%;
- background-size: 200% 100%;
-}
-
-.battlemap-character-card .battlemap-character-portrait,
-.battlemap-tile-card-icon
-{
- top: 0;
- left: 0;
- margin: 0;
- box-sizing: border-box;
- box-shadow:
- 1px 0px 2px #333,
- -1px 0px 2px #333,
- 0px 1px 2px #333,
- 0px -1px 2px #333;
-}
-
-.battlemap-character-portrait-team-0 { background-color: rgba(57, 106, 177, 0.3); }
-.battlemap-character-portrait-team-1 { background-color: rgba(204, 37, 41, 0.3); }
-.battlemap-character-portrait-team-2 { background-color: rgba(62, 150, 81, 0.3); }
-.battlemap-character-portrait-team-3 { background-color: rgba(218, 124, 48, 0.3); }
-.battlemap-character-portrait-team-4 { background-color: rgba(83, 81, 84, 0.3); }
-.battlemap-character-portrait-team-5 { background-color: rgba(107, 76, 154, 0.3); }
-.battlemap-character-portrait-team-6 { background-color: rgba(127, 167, 169, 0.3); }
-.battlemap-character-portrait-team-7 { background-color: rgba(231, 167, 169, 0.3); }
-
-.battlemap-tile-card-top
-{
- margin:0.3em;
-}
-
-.battlemap-character-card-name,
-.battlemap-tile-card-name,
-.battlemap-tile-card-cost,
-.battlemap-tile-card-location
-{
- display:flex;
- justify-content:center;
- align-items:center;
- border-radius: 5px;
- background-color: #6C5D53;
- width: 100%;
-}
-
-.battlemap-gauge
-{
- position: relative;
- border-radius: 5px;
- border: 2px solid #6C5D53;
- text-align: center;
- height: 2em;
-}
-
-.battlemap-gauge-text
-{
- position: absolute;
- top: 0;
- left: 0;
- height: 100%;
- width: 100%;
- z-index: 1;
-
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
-}
-
-.battlemap-gauge-bar
-{
- position: absolute;
- top: 0;
- left: 0;
- height: 100%;
- width: 100%;
- z-index: 0;
-
- border-radius: 5px;
- z-index: 0;
- transition: width 3s ease-in-out;
-}
-
-.battlemap-character-card-health,
-.battlemap-tile-card-cost
-{
- position: absolute;
- left: 100px;
- top: 0;
- margin-left: 0.5em;
- width: calc(100% - 100px - 0.5em);
-}
-
-
-.battlemap-character-card-health > .battlemap-gauge-bar
-{
- background-color: darkred;
-}
-
-.battlemap-character-card-movement,
-.battlemap-tile-card-location
-{
- position: absolute;
- left: 100px;
- top: calc(1.5em + 1em);
- margin-left: 0.5em;
- width: calc(100% - 100px - 0.5em);
-}
-
-.battlemap-character-card-statuses
-{
- position: absolute;
- left: 100px;
- top: calc(2*(1.5em + 0.5em) + 0.7em);
- margin-left: 0.5em;
- width: calc(100% - 100px - 0.5em);
- display: flex;
-}
-
-.battlemap-character-card-status
-{
- height: 1.5em;
- width: 1.5em;
- background-size: 100%;
-}
-
-.battlemap-character-card-target-status
-{
- background-image: url("/asset/svg/status/target.svg");
-}
-
-.battlemap-character-card-commander-status
-{
- background-image: url("/asset/svg/status/commander.svg");
-}
-
-.battlemap-character-card-movement > .battlemap-gauge-bar
-{
- background-color: darkgrey;
-}
-
-.battlemap-character-card-weapon,
-.battlemap-character-card-weapon-summary
-{
- display: grid;
-
- border-radius: 5px;
-
- padding: 0.3em;
- margin-top: 0.3em;
-}
-
-.battlemap-character-card-weapon
-{
- background-color: #6C5D53;
-}
-
-.battlemap-character-card-weapon-summary
-{
- background-color: #393939;
-}
-
-.battlemap-character-card-armor
-{
- display: grid;
- border-radius: 5px;
- background-color: #6C5D53;
-
- padding: 0.3em;
- margin-top: 0.3em;
-}
-
-.battlemap-character-card-armor-stats
-{
- display: grid;
- grid-template-columns: [col] 25% [col] 25% [col] 25% [col] 25%;
-}
-
-.battlemap-character-card-stats
-{
- display: grid;
- grid-template-columns: [col] 25% [col] 25% [col] 25% [col] 25%;
-
- border-radius: 5px;
- background-color: #6C5D53;
-
- padding: 0.3em;
- margin-top: 0.3em;
-}
-
-/** Manual Controls ***********************************************************/
-.battlemap-manual-controls
-{
- width: 96px;
- height: 96px;
- display: grid;
- grid-template:
- '. top .'
- 'left go right'
- '. bottom .';
- margin: auto;
-}
-
-.battlemap-manual-controls > div
-{
- width: 32px;
- height: 32px;
- background-image: url(/asset/svg/arrowhead.svg);
- background-size: 100%;
- transition: opacity 0.3s ease-out;
- opacity: 0.5;
-}
-
-.battlemap-manual-controls > div:hover
-{
- opacity: 1;
-}
-
-.battlemap-manual-controls-go
-{
- margin: auto;
- width: 28px;
- height: 28px;
- border-radius: 100em;
- grid-area: go;
-}
-
-.battlemap-manual-controls-up
-{
- transform: rotate(-90deg);
- grid-area: top;
-}
-
-.battlemap-manual-controls-down
-{
- transform: rotate(90deg);
- grid-area: bottom;
-}
-
-.battlemap-manual-controls-left
-{
- transform: rotate(180deg);
- grid-area: left;
-}
-
-.battlemap-manual-controls-right
-{
- grid-area: right;
-}
-
-/******************************************************************************/
-/** MAIN MENU *****************************************************************/
-/******************************************************************************/
-.battlemap-main-menu
-{
- display: flex;
- flex-direction: row;
- flex-wrap: wrap;
- justify-content: space-between;
-}
-
-.battlemap-main-menu button
-{
- flex: 1;
-
- text-transform: uppercase;
-}
-
-/******************************************************************************/
-/** SUB-MENU ******************************************************************/
-/******************************************************************************/
-.battlemap-tabmenu-characters-tab
-{
- display: flex;
- flex-grow: 1;
- flex-direction: column;
- flex-wrap: wrap;
-}
-
-.battlemap-characters-element-active
-{
- animation-name: brown-alarm-bg;
- animation-duration: 5s;
- animation-iteration-count: infinite;
-}
-
-
-
-.battlemap-timeline-element,
-.battlemap-characters-element
-{
- flex: 2;
- margin: 0.5em 0.5em 0 0.5em;
- text-align: center;
- border-radius: 5px;
- border: 1px solid #502D16;
- border-bottom-width: 2px;
- padding: 0.5em;
-}
-
-.battlemap-timeline-element .battlemap-character-portrait
-{
- display: inline-block;
- vertical-align: middle;
- width: 36px;
- height: 36px;
-}
-
-/******************************************************************************/
-/** Main View Elements ********************************************************/
-/******************************************************************************/
-.battlemap-actual
-{
- display: inline-block;
- transform-origin: top left;
-
- /*** Otherwise, it won't display correctly without 'transform: scale' ***/
- position: relative;
- background-color: #917C6F;
-}
-
-.battlemap-tiled
-{
- height: 32px;
- width: 32px;
- /** Fixes odd behavior of table cell being resized. **/
- /* min-width: 32px; */
- /* max-width: 32px; */
-}
-
-.battlemap-tile-variant-0 {background-position: 0 0;}
-.battlemap-tile-variant-1 {background-position: 100% 0;}
-.battlemap-tile-variant-2 {background-position: 200% 0;}
-.battlemap-tile-variant-3 {background-position: 0 100%;}
-.battlemap-tile-variant-4 {background-position: 100% 100%;}
-.battlemap-tile-variant-5 {background-position: 200% 100%;}
-.battlemap-tile-variant-6 {background-position: 0 200%;}
-.battlemap-tile-variant-7 {background-position: 100% 200%;}
-.battlemap-tile-variant-8 {background-position: 200% 200%;}
-
-.battlemap-tile-icon {z-index: 0; position: absolute; background-size: 300%;}
-.battlemap-path-icon-below-markers {z-index: 1;}
-.battlemap-marker-icon {z-index: 2;}
-.battlemap-path-icon-above-markers {z-index: 3;}
-.battlemap-character-icon {z-index: 4;}
-
-.battlemap-marker-icon,
-.battlemap-character-icon,
-.battlemap-path-icon
-{
- position: absolute;
-}
-.battlemap-tiles-layer
-{
- /*display: table; */
-}
-
-.battlemap-tiles-layer-row
-{
- /* display: table-row; */
-}
-
-.battlemap-character-icon
-{
- border-radius: 5px;
- height: 38px;
- margin-top: -6px;
-}
-
-.battlemap-character-icon *
-{
- position: absolute;
- left: 0;
- top: 0;
- background-size: 100% 100%;
- width: inherit;
- height: inherit;
-}
-
-.battlemap-character-icon-enabled
-{
- animation-name: pulsating;
- animation-duration: 1.5s;
- animation-iteration-count: infinite;
- transform-origin: center;
-}
-
-.battlemap-character-icon-banner { z-index: 2; }
-.battlemap-character-icon-head { z-index: 1; }
-.battlemap-character-icon-body { z-index: 0; }
-
-.battlemap-character-ally
-{
-}
-
-.battlemap-character-enemy
-{
- transform: scale(-1, 1);
-}
-
-/** Navigator Markers *********************************************************/
-.battlemap-marker-icon.battlemap-navigator-non-interactive
-{
- box-sizing: border-box;
- width: 12px;
- height: 12px;
- background-size: 100%;
- margin: 10px;
-}
-
-.battlemap-marker-icon.battlemap-navigator-interactive
-{
- box-sizing: border-box;
- width: 24px;
- /*min-width: 24px;
- max-width: 24px; */
- margin: 4px 0 0 4px;
- height: 24px;
- border-radius: 4px;
- border: none;
- box-shadow:
- 1px 0px 2px #333,
- -1px 0px 2px #333,
- 0px 1px 2px #333,
- 0px -1px 2px #333;
-}
-
-.battlemap-can-go-to-can-defend-marker.battlemap-navigator-interactive
-{
- background-color: #FFF;
- opacity: 0.3;
- transition: opacity 0.3s ease-out;
-}
-
-.battlemap-can-go-to-cant-defend-marker.battlemap-navigator-interactive
-{
- background:
- repeating-linear-gradient(
- -55deg,
- rgb(255,255,255),
- rgb(255,255,255) 3px,
- rgba(0,0,0,0) 3px,
- rgba(0,0,0,0) 7px
- );
- opacity: 0.3;
- transition: opacity 0.3s ease-out;
-}
-
-.battlemap-can-go-to-can-defend-marker.battlemap-navigator-interactive:hover,
-.battlemap-can-go-to-cant-defend-marker.battlemap-navigator-interactive:hover
-{
- opacity: 0.9;
-}
-
-.battlemap-can-attack-can-defend-marker.battlemap-navigator-interactive
-{
- background-color: #000;
- opacity: 0.7;
- width: 28px;
- /*min-width: 28px;
- max-width: 28px;*/
- height: 28px;
- margin: 2px 0 0 2px;
- border-radius: 0;
-}
-
-.battlemap-can-attack-cant-defend-marker.battlemap-navigator-interactive
-{
- background:
- repeating-linear-gradient(
- -55deg,
- rgba(255,255,255,0),
- rgba(255,255,255,0) 3px,
- rgb(0,0,0) 3px,
- rgb(0,0,0) 7px
- );
- width: 28px;
- /*min-width: 28px;
- max-width: 28px;*/
- opacity: 0.7;
- height: 28px;
- margin: 2px 0 0 2px;
- border-radius: 0;
-}
-
-.battlemap-can-attack-can-defend-marker.battlemap-navigator-non-interactive
-{
- z-index: 5;
- background-image: url(/asset/svg/marker/blade.svg);
-}
-
-.battlemap-can-attack-cant-defend-marker.battlemap-navigator-non-interactive
-{
- z-index: 5;
- background-image:
- url(/asset/svg/marker/blade.svg),
- url(/asset/svg/marker/brokenshield.svg);
-}
-
-.battlemap-can-go-to-cant-defend-marker.battlemap-navigator-non-interactive
-{
- background-image:
- url(/asset/svg/marker/pawprint.svg),
- url(/asset/svg/marker/brokenshield.svg);
-}
-
-.battlemap-can-attack-cant-defend-marker.battlemap-navigator-non-interactive,
-.battlemap-can-go-to-cant-defend-marker.battlemap-navigator-non-interactive
-{
- width: 24px;
- height: 24px;
- background-position: top left, bottom right;
- background-size: 50%, 50%;
- background-repeat: no-repeat, no-repeat;
- margin: 2px;
-}
-
-.battlemap-can-go-to-can-defend-marker.battlemap-navigator-non-interactive
-{
- background-image: url(/asset/svg/marker/pawprint.svg);
-}
-
-.battlemap-can-attack-can-defend-marker.battlemap-navigator-non-interactive,
-.battlemap-can-attack-cant-defend-marker.battlemap-navigator-non-interactive
-{
- z-index: 5;
-}
-
-.battlemap-can-go-to-can-defend-marker,
-.battlemap-can-go-to-cant-defend-marker
-{
- z-index: 3;
-}
-
-.battlemap-cant-defend-marker
-{
- background:
- repeating-linear-gradient(
- -55deg,
- rgba(255,255,255,0.3),
- rgba(255,255,255,0.3) 3px,
- rgba(0,0,0,0.3) 3px,
- rgba(0,0,0,0.3) 7px
- );
-}
-
-.battlemap-character-ally.battlemap-character-icon-disabled
-{
- filter: contrast(35%);
-}
-
-
-/**** Selection Classes *******************************************************/
-.battlemap-character-targeted
-{
- background-color: rgba(255,0,0,0.7);
- animation-name: red-alarm-bg;
- animation-duration: 5s;
- animation-iteration-count: infinite;
-}
-
-.battlemap-character-selected
-{
- animation-name: strongly-pulsating;
- animation-duration: 1.5s;
- animation-iteration-count: infinite;
-}
-
-/**** Path Icons **************************************************************/
-.battlemap-path-icon
-{
- background-image: url("/asset/svg/arrows.svg");
- background-size: 96px 32px;
-}
-
-.battlemap-path-icon-UR,
-.battlemap-path-icon-LD,
-.battlemap-path-icon-RD,
-.battlemap-path-icon-UL,
-.battlemap-path-icon-LU,
-.battlemap-path-icon-DR,
-.battlemap-path-icon-DL,
-.battlemap-path-icon-RU
-{
- /*** Default is -^ ***/
- background-position: 64px 0;
-}
-/*** DL/RU ***/
-
-.battlemap-path-icon-LU,
-.battlemap-path-icon-DR
-{
- transform: rotate(90deg);
-}
-
-.battlemap-path-icon-RD,
-.battlemap-path-icon-UL
-{
- /*** ***/
- transform: scale(1, -1);
-}
-
-.battlemap-path-icon-UR,
-.battlemap-path-icon-LD
-{
- /*** <| ***/
- transform: rotate(180deg);
-}
-
-.battlemap-path-icon-RR,
-.battlemap-path-icon-LR,
-.battlemap-path-icon-RL,
-.battlemap-path-icon-LL
-{
- background-position: 0 0;
-}
-
-.battlemap-path-icon-markN,
-.battlemap-path-icon-NU,
-.battlemap-path-icon-ND,
-.battlemap-path-icon-NL,
-.battlemap-path-icon-NR
-{
- display: none;
-}
-
-.battlemap-path-icon-UU,
-.battlemap-path-icon-UD,
-.battlemap-path-icon-DU,
-.battlemap-path-icon-DD
-{
- background-position: 0 0;
- transform: rotate(90deg);
-}
-
-.battlemap-path-icon-markR,
-.battlemap-path-icon-markL,
-.battlemap-path-icon-markU,
-.battlemap-path-icon-markD
-{
- background-position: 32px 0;
-}
-
-.battlemap-path-icon-markL
-{
- transform: rotate(180deg);
-}
-
-.battlemap-path-icon-markD
-{
- transform: rotate(90deg);
-}
-
-.battlemap-path-icon-markU
-{
- transform: rotate(-90deg);
-}
-
-/******************************************************************************/
-/** Animations ****************************************************************/
-/******************************************************************************/
-@keyframes red-alarm-bg {
- 0% {background-color: rgba(255,0,0,0.25);}
- 25% {background-color: rgba(255,0,0,1);}
- 50% {background-color: rgba(255,0,0,1);}
- 100% {background-color: rgba(255,0,0,0.25);}
-}
-
-@keyframes pulsating {
- 0% { opacity: 1.0; transform: scale(1);}
- 25% { opacity: 1.0; transform: scale(1);}
- 30% { opacity: 0.8; transform: scale(1.1);}
- 50% { opacity: 1.0; transform: scale(1);}
- 100% { opacity: 1.0; transform: scale(1);}
-}
-
-@keyframes strongly-pulsating {
- 0% { opacity: 1.0; transform: scale(1);}
- 50% { opacity: 0.8; transform: scale(1.5);}
- 100% { opacity: 1.0; transform: scale(1);}
-}
-
-@keyframes brown-alarm-bg {
- 0% {background-color: #917C6F;}
- 25% {background-color: #AC9D93}
- 50% {background-color: #AC9D93}
- 100% {background-color: #917C6F;}
-}
-
-@keyframes reverse-brown-alarm-bg {
- 0% {background-color: #917C6F;}
- 50% {background-color: #502D16;}
- 100% {background-color: #917C6F;}
-}
-
-@keyframes blue-alarm-bg {
- 0% {background-color: rgba(0,0,255,0.2);}
- 25% {background-color: rgba(0,0,255,0.8);}
- 50% {background-color: rgba(0,0,255,0.8);}
- 100% {background-color: rgba(0,0,255,0.2);}
-}
-
-@keyframes blinking {
- to { visibility: hidden; }
-}
-
-@keyframes blinking2 {
- from { opacity: 1; }
- to { opacity: 0; }
-}
-
-@keyframes dodges {
- 0% { transform: translate(0, 0); }
- 50% { transform: translate(-75%, 0); }
- 100% { transform: translate(0, 0); }
-}
-
-@keyframes attacks {
- 0% { transform: translate(0, 0); }
- 25% { transform: translate(25%, 0); }
- 100% { transform: translate(0, 0); }
-}
-
-@keyframes parries {
- 0% { transform: translate(0, 0); }
- 25% { transform: translate(-25%, 0); }
- 50% { transform: translate(50%, 20%); }
- 100% { transform: translate(0, 0); }
-}
-
-@keyframes dies {
- from { transform: translate(0, 0) rotate(0); }
- to { transform: translate(0, 100%) rotate(25deg); }
-}
-
-@keyframes blue-alarm-bd {
- 0% {border-color: rgba(0,0,255,0.25);}
- 25% {border-color: rgba(0,0,255,1);}
- 100% {border-color: rgba(0,0,255,0.25);}
-}
-
-/******************************************************************************/
-/** Timeline Animations *******************************************************/
-/******************************************************************************/
-/**** Character Icon Animations ***********************************************/
-.battlemap-animated-character-icon
-{
- transition: top linear 0.3s, left linear 0.3s;
-}
-
-/**** Character Portrait Animations *******************************************/
-.battlemap-animated-portrait-damaged .battlemap-character-portrait > *
-{
- animation: blinking 0.2s steps(2, start) 8;
-}
-
-.battlemap-animated-portrait-absent .battlemap-character-portrait > *
-{
- visibility: hidden;
-}
-
-.battlemap-animated-portrait-dodges .battlemap-character-portrait,
-.battlemap-animated-portrait-dies .battlemap-character-portrait,
-.battlemap-animated-portrait-parries .battlemap-character-portrait,
-.battlemap-animated-portrait-attacks .battlemap-character-portrait
-{
- overflow: hidden;
-}
-
-.battlemap-animated-portrait
-{
-}
-
-.battlemap-animated-portrait-dodges .battlemap-character-portrait > *
-{
- animation-name: dodges;
- animation-duration: 1s;
- animation-iteration-count: 1;
-}
-
-.battlemap-animated-portrait-attacks .battlemap-character-portrait > *
-{
- animation-name: attacks;
- animation-duration: 1s;
- animation-iteration-count: 1;
-}
-
-.battlemap-animated-portrait-dies .battlemap-character-portrait > *
-{
- animation-name: blinking2, dies;
- animation-duration: 0.15s, 2s;
- animation-delay: 0s, 1s;
- animation-iteration-count: 8, 1;
-}
-
-.battlemap-animated-portrait-parries .battlemap-character-portrait > *
-{
- animation-name: parries;
- animation-duration: 1s;
- animation-iteration-count: 1;
-}