summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'www/handler/battlemap')
-rw-r--r--www/handler/battlemap/character_turn.yaws3
-rw-r--r--www/handler/battlemap/load_state.yaws99
2 files changed, 74 insertions, 28 deletions
diff --git a/www/handler/battlemap/character_turn.yaws b/www/handler/battlemap/character_turn.yaws
index c42e26b..ffcf0f9 100644
--- a/www/handler/battlemap/character_turn.yaws
+++ b/www/handler/battlemap/character_turn.yaws
@@ -5,7 +5,8 @@ handle (Req) ->
UserToken = maps:get(<<"user_token">>, JSON_Req_Map),
io:format("~nCharacter Turn for ~p...", [UserToken]),
%% ok = users_manager:ping(UserToken),
- jiffy:encode(
+ jiffy:encode
+ (
{
[
{<<"types">>, [<<"STATUS">>]},
diff --git a/www/handler/battlemap/load_state.yaws b/www/handler/battlemap/load_state.yaws
index fb7cda6..a9be563 100644
--- a/www/handler/battlemap/load_state.yaws
+++ b/www/handler/battlemap/load_state.yaws
@@ -1,42 +1,87 @@
<erl>
--record(input, {battlemap_id}).
+-record(input, {battlemap_id, instance_id}).
parse_input (Req) ->
JSONReqMap = jiffy:decode(Req, [return_maps]),
- #input {
- battlemap_id = maps:get(<<"battlemap_id">>, JSONReqMap)
+ #input
+ {
+ player_id = maps:get(<<"player_id">>, JSONReqMap),
+ battlemap_id = maps:get(<<"battlemap_id">>, JSONReqMap),
+ instance_id = maps:get(<<"instance_id">>, JSONReqMap)
}.
-fetch_battlemap (Input) ->
- {Battlemap, CharList} =
- timed_cache:fetch(
- battlemap_db,
- Input#input.battlemap_id
- ),
+generate_set_map (Battlemap) ->
+ jiffy:encode
+ (
+ {
+ [
+ {<<"width">>, Battlemap#battlemap.width},
+ {<<"height">>, Battlemap#battlemap.height},
+ {<<"content">>, array:to_list(Battlemap#battlemap.content)}
+ ]
+ }
+ ).
-handle (Req) ->
- Input = parse_input(Req),
- io:format("~nLoading Battlemap ~p...~n", [Input#input.battlemap_id]),
-%% ok = users_manager:ping(UserToken),
- jiffy:encode(
- [
+generate_add_char (Char, CharInstance) ->
+ jiffy:encode
+ (
+ {
[
- <<"set_map">>,
- battlemap:encode_in_json(Battlemap)
+ {<<"id">>, Char#character.id},
+ {<<"name">>, Char#character.name},
+ {<<"icon">>, Char#character.icon},
+ {<<"portrait">>, Char#character.portrait},
+ {<<"loc_x">>, CharInstance#character_instance.x},
+ {<<"loc_y">>, CharInstance#character_instance.y},
+ {<<"team">>, CharInstance#character_instance.team},
+ {<<"mov_pts">>, Char#character.mov_pts},
+ {<<"atk_rg">>, Char#character.atk_rg}
]
- |
- lists:map(
- fun (Char) ->
- [
- <<"add_char">>,
- character:encode_in_json(Char)
- ]
- end,
- CharList
- )
+ }
+ ).
+
+generate_reply (Battlemap, _BattlemapInstance, Characters) ->
+ jiffy:encode
+ (
+ [
+ <<"set_map">>,
+ generate_set_map(Battlemap)
]
+ |
+ lists:map
+ (
+ fun ({CharID, CharInstance}) ->
+ [
+ <<"add_char">>,
+ generate_add_char(CharID, CharInstance)
+ ]
+ end,
+ Characters
+ )
).
+handle (Req) ->
+ Input = parse_input(Req),
+ Battlemap = timed_cache:fetch(battlemap_db, Input#input.battlemap_id),
+ BattlemapInstance =
+ timed_cache:fetch
+ (
+ battlemap_instances_db,
+ {Input#input.battlemap_id, Input#input.battlemap_instance_id}
+ ),
+ Characters =
+ list:map
+ (
+ fun ({CharID, CharInst}) ->
+ {
+ timed_cache:fetch(character_db, CharID),
+ CharInst
+ }
+ end,
+ dict:to_list(BattlemapInstance#battlemap_instance.chars)
+ ),
+ generate_reply(Battlemap, BattlemapInstance, Characters).
+
out(A) ->
{
content,