| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/battle')
| -rw-r--r-- | src/battle/src/Comm/AddPlayer.elm | 24 | ||||
| -rw-r--r-- | src/battle/src/Comm/Send.elm | 2 | ||||
| -rw-r--r-- | src/battle/src/Struct/Model.elm | 15 | ||||
| -rw-r--r-- | src/battle/src/Struct/Player.elm | 72 | ||||
| -rw-r--r-- | src/battle/src/Struct/ServerReply.elm | 2 | ||||
| -rw-r--r-- | src/battle/src/Update/HandleServerReply.elm | 13 | 
6 files changed, 128 insertions, 0 deletions
| diff --git a/src/battle/src/Comm/AddPlayer.elm b/src/battle/src/Comm/AddPlayer.elm new file mode 100644 index 0000000..b902825 --- /dev/null +++ b/src/battle/src/Comm/AddPlayer.elm @@ -0,0 +1,24 @@ +module Comm.AddPlayer exposing (decode) + +-- Elm ------------------------------------------------------------------------- +import Json.Decode + +-- Battle ---------------------------------------------------------------------- +import Struct.Player +import Struct.ServerReply + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +internal_decoder : Struct.Player.Type -> Struct.ServerReply.Type +internal_decoder pl = (Struct.ServerReply.AddPlayer pl) + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +decode : (Json.Decode.Decoder Struct.ServerReply.Type) +decode = (Json.Decode.map (internal_decoder) (Struct.Player.decoder)) diff --git a/src/battle/src/Comm/Send.elm b/src/battle/src/Comm/Send.elm index ae648cb..68dda5d 100644 --- a/src/battle/src/Comm/Send.elm +++ b/src/battle/src/Comm/Send.elm @@ -9,6 +9,7 @@ import Json.Encode  -- Battle ----------------------------------------------------------------------  import Comm.AddArmor  import Comm.AddPortrait +import Comm.AddPlayer  import Comm.AddChar  import Comm.AddTile  import Comm.AddWeapon @@ -34,6 +35,7 @@ internal_decoder reply_type =        "add_armor" -> (Comm.AddArmor.decode)        "add_char" -> (Comm.AddChar.decode)        "add_portrait" -> (Comm.AddPortrait.decode) +      "add_player" -> (Comm.AddPlayer.decode)        "add_weapon" -> (Comm.AddWeapon.decode)        "set_map" -> (Comm.SetMap.decode)        "turn_results" -> (Comm.TurnResults.decode) diff --git a/src/battle/src/Struct/Model.elm b/src/battle/src/Struct/Model.elm index 0512249..278c900 100644 --- a/src/battle/src/Struct/Model.elm +++ b/src/battle/src/Struct/Model.elm @@ -8,6 +8,7 @@ module Struct.Model exposing        add_weapon,        add_armor,        add_portrait, +      add_player,        add_tile,        invalidate,        initialize_animator, @@ -40,6 +41,7 @@ import Struct.Portrait  import Struct.Tile  import Struct.TurnResult  import Struct.TurnResultAnimator +import Struct.Player  import Struct.UI  import Struct.Weapon @@ -59,6 +61,7 @@ type alias Type =        armors: (Dict.Dict Struct.Armor.Ref Struct.Armor.Type),        portraits: (Dict.Dict Struct.Portrait.Ref Struct.Portrait.Type),        tiles: (Dict.Dict Struct.Tile.Ref Struct.Tile.Type), +      players: (Dict.Dict Struct.Player.Ref Struct.Player.Type),        error: (Maybe Struct.Error.Type),        player_id: String,        battle_id: String, @@ -95,6 +98,7 @@ new flags =              armors = (Dict.empty),              portraits = (Dict.empty),              tiles = (Dict.empty), +            players = (Dict.empty),              error = Nothing,              battle_id = "",              player_id = @@ -165,6 +169,17 @@ add_portrait pt model =           )     } +add_player : Struct.Player.Type -> Type -> Type +add_player pl model = +   {model | +      players = +         (Dict.insert +            (Struct.Player.get_index pl) +            pl +            model.players +         ) +   } +  add_tile : Struct.Tile.Type -> Type -> Type  add_tile tl model =     {model | diff --git a/src/battle/src/Struct/Player.elm b/src/battle/src/Struct/Player.elm new file mode 100644 index 0000000..ee14ebe --- /dev/null +++ b/src/battle/src/Struct/Player.elm @@ -0,0 +1,72 @@ +module Struct.Player exposing +   ( +      Type, +      Ref, +      get_id, +      get_index, +      get_incarnation_index, +      get_luck, +      set_luck, +      decoder, +      none +   ) + +-- Elm ------------------------------------------------------------------------- +import Json.Decode +import Json.Decode.Pipeline + +-- Battle ---------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- TYPES ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- +type alias Ref = Int + +type alias Type = +   { +      id : String, +      ix : Int, +      incarnation_ix : Int, +      luck : Int +   } + +-------------------------------------------------------------------------------- +-- LOCAL ----------------------------------------------------------------------- +-------------------------------------------------------------------------------- + +-------------------------------------------------------------------------------- +-- EXPORTED -------------------------------------------------------------------- +-------------------------------------------------------------------------------- +get_id : Type -> String +get_id pl = pl.id + +get_index : Type -> Int +get_index pl = pl.ix + +get_incarnation_index : Type -> Int +get_incarnation_index pl = pl.incarnation_ix + +get_luck : Type -> Int +get_luck pl = pl.luck + +set_luck : Int -> Type -> Type +set_luck luck pl = {pl | luck = luck} + +decoder : (Json.Decode.Decoder Type) +decoder = +   (Json.Decode.succeed +      Type +      |> (Json.Decode.Pipeline.required "id" Json.Decode.string) +      |> (Json.Decode.Pipeline.required "ix" Json.Decode.int) +      |> (Json.Decode.Pipeline.required "iix" Json.Decode.int) +      |> (Json.Decode.Pipeline.required "luk" Json.Decode.int) +   ) + +none : Type +none = +   { +      id = "", +      ix = -1, +      incarnation_ix = -1, +      luck = 0 +   } diff --git a/src/battle/src/Struct/ServerReply.elm b/src/battle/src/Struct/ServerReply.elm index 59531aa..b26a579 100644 --- a/src/battle/src/Struct/ServerReply.elm +++ b/src/battle/src/Struct/ServerReply.elm @@ -5,6 +5,7 @@ module Struct.ServerReply exposing (Type(..))  -- Battle ----------------------------------------------------------------------  import Struct.Armor  import Struct.Portrait +import Struct.Player  import Struct.Map  import Struct.Character  import Struct.Tile @@ -20,6 +21,7 @@ type Type =     | Disconnected     | AddArmor Struct.Armor.Type     | AddPortrait Struct.Portrait.Type +   | AddPlayer Struct.Player.Type     | AddWeapon Struct.Weapon.Type     | AddCharacter Struct.Character.TypeAndEquipmentRef     | AddTile Struct.Tile.Type diff --git a/src/battle/src/Update/HandleServerReply.elm b/src/battle/src/Update/HandleServerReply.elm index 503831d..6bdc0bc 100644 --- a/src/battle/src/Update/HandleServerReply.elm +++ b/src/battle/src/Update/HandleServerReply.elm @@ -24,6 +24,7 @@ import Util.Http  import Constants.IO  import Struct.Armor +import Struct.Player  import Struct.Character  import Struct.Error  import Struct.Event @@ -129,6 +130,15 @@ add_weapon wp current_state =     let (model, cmds) = current_state in        ((Struct.Model.add_weapon wp model), cmds) +add_player : ( +      Struct.Player.Type -> +      (Struct.Model.Type, (List (Cmd Struct.Event.Type))) -> +      (Struct.Model.Type, (List (Cmd Struct.Event.Type))) +   ) +add_player pl current_state = +   let (model, cmds) = current_state in +      ((Struct.Model.add_player pl model), cmds) +  add_character : (        Struct.Character.TypeAndEquipmentRef ->        (Struct.Model.Type, (List (Cmd Struct.Event.Type))) -> @@ -232,6 +242,9 @@ apply_command command current_state =        (Struct.ServerReply.AddPortrait pt) ->           (add_portrait pt current_state) +      (Struct.ServerReply.AddPlayer pl) -> +         (add_player pl current_state) +        (Struct.ServerReply.AddTile tl) ->           (add_tile tl current_state) | 


