summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-06-08 11:22:23 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-06-08 11:22:23 +0200
commitee08423dd686d707d3c5759804fab2ecadbddbb1 (patch)
treede9eb3bb3c65a9edd48092ee0087c442f974bc67
parent57fea6c1508231883180bd0480870292f2906eb4 (diff)
Fixes {armor,weapon} not being loaded before use.
-rw-r--r--src/battlemap/src/Comm/AddChar.elm24
-rw-r--r--src/battlemap/src/Comm/AddWeapon.elm2
-rw-r--r--src/battlemap/src/Comm/Send.elm4
-rw-r--r--src/battlemap/src/Struct/Armor.elm2
-rw-r--r--src/battlemap/src/Struct/Character.elm76
-rw-r--r--src/battlemap/src/Struct/ServerReply.elm2
-rw-r--r--src/battlemap/src/Struct/Weapon.elm2
-rw-r--r--src/battlemap/src/Update/HandleServerReply.elm49
8 files changed, 96 insertions, 65 deletions
diff --git a/src/battlemap/src/Comm/AddChar.elm b/src/battlemap/src/Comm/AddChar.elm
index 475600e..1b5cacd 100644
--- a/src/battlemap/src/Comm/AddChar.elm
+++ b/src/battlemap/src/Comm/AddChar.elm
@@ -1,16 +1,12 @@
module Comm.AddChar exposing (decode)
-- Elm -------------------------------------------------------------------------
-import Dict
-
import Json.Decode
-- Battlemap -------------------------------------------------------------------
-import Struct.Armor
import Struct.Character
import Struct.Model
import Struct.ServerReply
-import Struct.Weapon
--------------------------------------------------------------------------------
-- TYPES -----------------------------------------------------------------------
@@ -19,20 +15,12 @@ import Struct.Weapon
--------------------------------------------------------------------------------
-- 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
-internal_decoder : Struct.Character.Type -> Struct.ServerReply.Type
-internal_decoder char = (Struct.ServerReply.AddCharacter char)
+internal_decoder : (
+ (Struct.Character.Type, Int, Int, Int) ->
+ Struct.ServerReply.Type
+ )
+internal_decoder char_and_refs = (Struct.ServerReply.AddCharacter char_and_refs)
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
@@ -41,5 +29,5 @@ decode : (Struct.Model.Type -> (Json.Decode.Decoder Struct.ServerReply.Type))
decode model =
(Json.Decode.map
(internal_decoder)
- (Struct.Character.decoder (weapon_getter model) (armor_getter model))
+ (Struct.Character.decoder)
)
diff --git a/src/battlemap/src/Comm/AddWeapon.elm b/src/battlemap/src/Comm/AddWeapon.elm
index 4c74111..3a5c1f1 100644
--- a/src/battlemap/src/Comm/AddWeapon.elm
+++ b/src/battlemap/src/Comm/AddWeapon.elm
@@ -15,7 +15,7 @@ import Struct.ServerReply
--------------------------------------------------------------------------------
-- LOCAL -----------------------------------------------------------------------
--------------------------------------------------------------------------------
-internal_decoder : Struct.Armor.Type -> Struct.ServerReply.Type
+internal_decoder : Struct.Weapon.Type -> Struct.ServerReply.Type
internal_decoder wp = (Struct.ServerReply.AddWeapon wp)
--------------------------------------------------------------------------------
diff --git a/src/battlemap/src/Comm/Send.elm b/src/battlemap/src/Comm/Send.elm
index 485b9b9..1b83073 100644
--- a/src/battlemap/src/Comm/Send.elm
+++ b/src/battlemap/src/Comm/Send.elm
@@ -7,7 +7,9 @@ import Json.Decode
import Json.Encode
-- Battlemap -------------------------------------------------------------------
+import Comm.AddArmor
import Comm.AddChar
+import Comm.AddWeapon
import Comm.SetMap
import Comm.SetTimeline
import Comm.TurnResults
@@ -30,7 +32,9 @@ internal_decoder : (
)
internal_decoder model reply_type =
case reply_type of
+ "add_armor" -> (Comm.AddArmor.decode model)
"add_char" -> (Comm.AddChar.decode model)
+ "add_weapon" -> (Comm.AddWeapon.decode model)
"set_map" -> (Comm.SetMap.decode model)
"turn_results" -> (Comm.TurnResults.decode)
"set_timeline" -> (Comm.SetTimeline.decode)
diff --git a/src/battlemap/src/Struct/Armor.elm b/src/battlemap/src/Struct/Armor.elm
index d6dcd67..8374179 100644
--- a/src/battlemap/src/Struct/Armor.elm
+++ b/src/battlemap/src/Struct/Armor.elm
@@ -149,7 +149,7 @@ decoder =
|> (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 "coef" Json.Decode.float)
+ |> (Json.Decode.Pipeline.required "cf" Json.Decode.float)
)
)
diff --git a/src/battlemap/src/Struct/Character.elm b/src/battlemap/src/Struct/Character.elm
index 00abc52..522bcda 100644
--- a/src/battlemap/src/Struct/Character.elm
+++ b/src/battlemap/src/Struct/Character.elm
@@ -20,7 +20,8 @@ module Struct.Character exposing
set_enabled,
get_weapons,
set_weapons,
- decoder
+ decoder,
+ fill_missing_equipment
)
-- Elm -------------------------------------------------------------------------
@@ -75,34 +76,27 @@ type alias Ref = String
--------------------------------------------------------------------------------
-- LOCAL -----------------------------------------------------------------------
--------------------------------------------------------------------------------
-finish_decoding : (
- (Struct.Weapon.Ref -> Struct.Weapon.Type) ->
- (Struct.Armor.Ref -> Struct.Armor.Type) ->
- PartiallyDecoded ->
- Type
- )
-finish_decoding get_weapon get_armor add_char =
+finish_decoding : PartiallyDecoded -> (Type, Int, Int, Int)
+finish_decoding add_char =
let
- active_weapon = (get_weapon add_char.awp)
- secondary_weapon = (get_weapon add_char.swp)
- weapon_set = (Struct.WeaponSet.new active_weapon secondary_weapon)
- armor = (get_armor add_char.ar)
- act_atts = (Struct.Armor.apply_to_attributes armor add_char.att)
+ weapon_set = (Struct.WeaponSet.new Struct.Weapon.none Struct.Weapon.none)
+ almost_char =
+ {
+ id = (toString add_char.ix),
+ name = add_char.nam,
+ 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),
+ player_id = add_char.pla,
+ enabled = add_char.ena,
+ weapons = weapon_set,
+ armor = Struct.Armor.none
+ }
in
- {
- id = (toString add_char.ix),
- name = add_char.nam,
- icon = add_char.ico,
- portrait = add_char.prt,
- location = add_char.lc,
- health = add_char.hea,
- attributes = act_atts,
- statistics = (Struct.Statistics.new act_atts weapon_set),
- player_id = add_char.pla,
- enabled = add_char.ena,
- weapons = weapon_set,
- armor = armor
- }
+ (almost_char, add_char.awp, add_char.swp, add_char.ar)
--------------------------------------------------------------------------------
-- EXPORTED --------------------------------------------------------------------
@@ -170,14 +164,10 @@ set_weapons weapons char =
statistics = (Struct.Statistics.new char.attributes weapons)
}
-decoder : (
- (Struct.Weapon.Ref -> Struct.Weapon.Type) ->
- (Struct.Armor.Ref -> Struct.Armor.Type) ->
- (Json.Decode.Decoder Type)
- )
-decoder get_weapon get_armor =
+decoder : (Json.Decode.Decoder (Type, Int, Int, Int))
+decoder =
(Json.Decode.map
- (finish_decoding get_weapon get_armor)
+ (finish_decoding)
(Json.Decode.Pipeline.decode
PartiallyDecoded
|> (Json.Decode.Pipeline.required "ix" Json.Decode.int)
@@ -194,3 +184,21 @@ decoder get_weapon get_armor =
|> (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)
+ post_armor_atts = (Struct.Armor.apply_to_attributes ar char.attributes)
+ in
+ {char |
+ statistics = (Struct.Statistics.new post_armor_atts weapon_set),
+ weapons = weapon_set,
+ armor = ar
+ }
diff --git a/src/battlemap/src/Struct/ServerReply.elm b/src/battlemap/src/Struct/ServerReply.elm
index 1e79f93..ed9014e 100644
--- a/src/battlemap/src/Struct/ServerReply.elm
+++ b/src/battlemap/src/Struct/ServerReply.elm
@@ -17,7 +17,7 @@ type Type =
Okay
| AddArmor Struct.Armor.Type
| AddWeapon Struct.Weapon.Type
- | AddCharacter Struct.Character.Type
+ | AddCharacter (Struct.Character.Type, Int, Int, Int)
| SetMap Struct.Battlemap.Type
| TurnResults (List Struct.TurnResult.Type)
| SetTimeline (List Struct.TurnResult.Type)
diff --git a/src/battlemap/src/Struct/Weapon.elm b/src/battlemap/src/Struct/Weapon.elm
index 92b7bf4..0c8ad77 100644
--- a/src/battlemap/src/Struct/Weapon.elm
+++ b/src/battlemap/src/Struct/Weapon.elm
@@ -231,7 +231,7 @@ decoder =
|> (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 "coef" Json.Decode.float)
+ |> (Json.Decode.Pipeline.required "cf" Json.Decode.float)
)
)
diff --git a/src/battlemap/src/Update/HandleServerReply.elm b/src/battlemap/src/Update/HandleServerReply.elm
index c6e8461..5bafbe4 100644
--- a/src/battlemap/src/Update/HandleServerReply.elm
+++ b/src/battlemap/src/Update/HandleServerReply.elm
@@ -3,8 +3,12 @@ module Update.HandleServerReply exposing (apply_to)
-- Elm -------------------------------------------------------------------------
import Array
+import Dict
+
import Http
+import Debug
+
-- Battlemap -------------------------------------------------------------------
import Struct.Armor
import Struct.Battlemap
@@ -24,6 +28,20 @@ import Struct.Weapon
--------------------------------------------------------------------------------
-- 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)) ->
@@ -45,14 +63,27 @@ add_weapon wp current_state =
(model, _) -> ((Struct.Model.add_weapon wp model), Nothing)
add_character : (
- Struct.Character.Type ->
+ (Struct.Character.Type, Int, Int, Int) ->
(Struct.Model.Type, (Maybe Struct.Error.Type)) ->
(Struct.Model.Type, (Maybe Struct.Error.Type))
)
-add_character char current_state =
+add_character char_and_refs current_state =
case current_state of
(_, (Just _)) -> current_state
- (model, _) -> ((Struct.Model.add_character char model), Nothing)
+ (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 ->
@@ -126,22 +157,22 @@ apply_command : (
apply_command command current_state =
case command of
(Struct.ServerReply.AddWeapon wp) ->
- (add_weapon wp current_state)
+ (Debug.log "add_weapon" (add_weapon wp current_state))
(Struct.ServerReply.AddArmor ar) ->
- (add_armor ar current_state)
+ (Debug.log "add_armor" (add_armor ar current_state))
(Struct.ServerReply.AddCharacter char) ->
- (add_character char current_state)
+ (Debug.log "add_char" (add_character char current_state))
(Struct.ServerReply.SetMap map) ->
- (set_map map current_state)
+ (Debug.log "set_map" (set_map map current_state))
(Struct.ServerReply.TurnResults results) ->
- (add_to_timeline results current_state)
+ (Debug.log "add_to_tl" (add_to_timeline results current_state))
(Struct.ServerReply.SetTimeline timeline) ->
- (set_timeline timeline current_state)
+ (Debug.log "set_tl" (set_timeline timeline current_state))
Struct.ServerReply.Okay -> current_state