summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/battle-characters/BattleCharacters/Struct/GlyphBoard.elm')
-rw-r--r--src/shared/battle-characters/BattleCharacters/Struct/GlyphBoard.elm102
1 files changed, 102 insertions, 0 deletions
diff --git a/src/shared/battle-characters/BattleCharacters/Struct/GlyphBoard.elm b/src/shared/battle-characters/BattleCharacters/Struct/GlyphBoard.elm
new file mode 100644
index 0000000..7d08ec0
--- /dev/null
+++ b/src/shared/battle-characters/BattleCharacters/Struct/GlyphBoard.elm
@@ -0,0 +1,102 @@
+module BattleCharacters.Struct.GlyphBoard exposing
+ (
+ Type,
+ Ref,
+ get_name,
+ get_id,
+ get_slots,
+ get_omnimods,
+ get_omnimods_with_glyphs,
+ decoder,
+ none,
+ default
+ )
+
+-- Elm -------------------------------------------------------------------------
+import Array
+
+import List
+
+import Json.Decode
+import Json.Decode.Pipeline
+
+-- Battle ----------------------------------------------------------------------
+import Battle.Struct.Omnimods
+
+-- Battle Characters -----------------------------------------------------------
+import BattleCharacters.Struct.Glyph
+
+--------------------------------------------------------------------------------
+-- TYPES -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+type alias Type =
+ {
+ id : String,
+ name : String,
+ slots : (List Int),
+ omnimods : Battle.Struct.Omnimods.Type
+ }
+
+type alias Ref = String
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+get_id : Type -> String
+get_id g = g.id
+
+get_name : Type -> String
+get_name g = g.name
+
+get_slots : Type -> (List Int)
+get_slots g = g.slots
+
+get_omnimods : Type -> Battle.Struct.Omnimods.Type
+get_omnimods g = g.omnimods
+
+get_omnimods_with_glyphs : (
+ (Array.Array BattleCharacters.Struct.Glyph.Type) ->
+ Type ->
+ Battle.Struct.Omnimods.Type
+ )
+get_omnimods_with_glyphs glyphs board =
+ (List.foldl
+ (Battle.Struct.Omnimods.merge)
+ board.omnimods
+ (List.map2
+ (Battle.Struct.Omnimods.scale)
+ (List.map (\e -> ((toFloat e) / 100.0)) board.slots)
+ (List.map
+ (BattleCharacters.Struct.Glyph.get_omnimods) (Array.toList glyphs)
+ )
+ )
+ )
+
+decoder : (Json.Decode.Decoder Type)
+decoder =
+ (Json.Decode.succeed
+ Type
+ |> (Json.Decode.Pipeline.required "id" Json.Decode.string)
+ |> (Json.Decode.Pipeline.required "nam" Json.Decode.string)
+ |> (Json.Decode.Pipeline.required
+ "slot"
+ (Json.Decode.list (Json.Decode.int))
+ )
+ |> (Json.Decode.Pipeline.required "omni" Battle.Struct.Omnimods.decoder)
+ )
+
+none : Type
+none =
+ {
+ id = "",
+ name = "None",
+ slots = [],
+ omnimods = (Battle.Struct.Omnimods.none)
+ }
+
+default : Type
+default = (none)