summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-04-07 04:18:47 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2020-04-07 04:18:47 +0200
commit10a0fb62557c0a39056aa546ae338a489d19e280 (patch)
treeaa3a0feab9a6f56084a4ad14c29a25e8e73e4ef4
parentdbae105aedf8ae8f58be235f31bb3c5e00a6e248 (diff)
...
-rw-r--r--src/battle/src/Comm/AddChar.elm11
-rw-r--r--src/battle/src/Comm/Send.elm43
-rw-r--r--src/battle/src/Struct/Character.elm8
-rw-r--r--src/battle/src/Update/HandleServerReply.elm2
4 files changed, 37 insertions, 27 deletions
diff --git a/src/battle/src/Comm/AddChar.elm b/src/battle/src/Comm/AddChar.elm
index 9137d17..bf9e45b 100644
--- a/src/battle/src/Comm/AddChar.elm
+++ b/src/battle/src/Comm/AddChar.elm
@@ -21,4 +21,13 @@ internal_decoder ref = (Struct.ServerReply.AddCharacter ref)
-- EXPORTED --------------------------------------------------------------------
--------------------------------------------------------------------------------
decode : (Json.Decode.Decoder Struct.ServerReply.Type)
-decode = (Json.Decode.map (internal_decoder) (Struct.Character.decoder))
+decode =
+ (Json.Decode.andThen
+ (\ix ->
+ (Json.Decode.map
+ (internal_decoder)
+ (Json.Decode.field "cha" (Struct.Character.decoder ix))
+ )
+ )
+ (Json.Decode.field "ix" (Json.Decode.int))
+ )
diff --git a/src/battle/src/Comm/Send.elm b/src/battle/src/Comm/Send.elm
index f67a151..d7d05fc 100644
--- a/src/battle/src/Comm/Send.elm
+++ b/src/battle/src/Comm/Send.elm
@@ -7,15 +7,10 @@ import Json.Decode
import Json.Encode
-- Battle Characters -----------------------------------------------------------
-import BattleCharacters.Comm.AddArmor
-import BattleCharacters.Comm.AddGlyph
-import BattleCharacters.Comm.AddGlyphBoard
-import BattleCharacters.Comm.AddPortrait
-import BattleCharacters.Comm.AddSkill
-import BattleCharacters.Comm.AddWeapon
+import BattleCharacters.Comm.AddDataSetItem
-- Battle Map ------------------------------------------------------------------
-import BattleMap.Comm.AddTile
+import BattleMap.Comm.AddDataSetItem
import BattleMap.Comm.SetMap
-- Local Module ----------------------------------------------------------------
@@ -38,16 +33,8 @@ import Struct.Model
internal_decoder : String -> (Json.Decode.Decoder Struct.ServerReply.Type)
internal_decoder reply_type =
case reply_type of
- "add_tile" -> (BattleMap.Comm.AddTile.decode)
"set_map" -> (BattleMap.Comm.SetMap.decode)
- "add_armor" -> (BattleCharacters.Comm.AddArmor.decode)
- "add_glyph" -> (BattleCharacters.Comm.AddGlyph.decode)
- "add_glyph_board" -> (BattleCharacters.Comm.AddGlyphBoard.decode)
- "add_portrait" -> (BattleCharacters.Comm.AddPortrait.decode)
- "add_skill" -> (BattleCharacters.Comm.AddSkill.decode)
- "add_weapon" -> (BattleCharacters.Comm.AddWeapon.decode)
-
"add_char" -> (Comm.AddChar.decode)
"add_player" -> (Comm.AddPlayer.decode)
"set_timeline" -> (Comm.SetTimeline.decode)
@@ -57,13 +44,27 @@ internal_decoder reply_type =
"okay" -> (Json.Decode.succeed Struct.ServerReply.Okay)
other ->
- (Json.Decode.fail
- (
- "Unknown server command \""
- ++ other
- ++ "\""
- )
+ if
+ (String.startsWith
+ (BattleCharacters.Comm.AddDataSetItem.prefix)
+ reply_type
)
+ then (BattleCharacters.Comm.AddDataSetItem.get_decoder_for reply_type)
+ else
+ if
+ (String.startsWith
+ (BattleMap.Comm.AddDataSetItem.prefix)
+ reply_type
+ )
+ then (BattleMap.Comm.AddDataSetItem.get_decoder_for reply_type)
+ else
+ (Json.Decode.fail
+ (
+ "Unknown server command \""
+ ++ other
+ ++ "\""
+ )
+ )
decode : (Json.Decode.Decoder Struct.ServerReply.Type)
decode =
diff --git a/src/battle/src/Struct/Character.elm b/src/battle/src/Struct/Character.elm
index 254f6a2..37fe798 100644
--- a/src/battle/src/Struct/Character.elm
+++ b/src/battle/src/Struct/Character.elm
@@ -282,13 +282,13 @@ reset_extra_display_effects viewer_ix char =
)
}
-decoder : (Json.Decode.Decoder Unresolved)
-decoder =
+decoder : Int -> (Json.Decode.Decoder Unresolved)
+decoder ix =
(Json.Decode.succeed
Unresolved
- |> (Json.Decode.Pipeline.required "ix" Json.Decode.int)
+ |> (Json.Decode.Pipeline.hardcoded ix)
|> (Json.Decode.Pipeline.required "lc" BattleMap.Struct.Location.decoder)
- |> (Json.Decode.Pipeline.required "hea" Json.Decode.int)
+ |> (Json.Decode.Pipeline.required "he" Json.Decode.int)
|> (Json.Decode.Pipeline.required "sp" Json.Decode.int)
|>
(Json.Decode.Pipeline.required
diff --git a/src/battle/src/Update/HandleServerReply.elm b/src/battle/src/Update/HandleServerReply.elm
index 4372257..3bea958 100644
--- a/src/battle/src/Update/HandleServerReply.elm
+++ b/src/battle/src/Update/HandleServerReply.elm
@@ -168,7 +168,7 @@ set_map map current_state =
(Struct.Battle.set_map
(BattleMap.Struct.Map.solve_tiles
model.map_data_set
- (Struct.Battle.get_map model.battle)
+ map
)
model.battle
)