summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-11-16 21:53:38 +0100 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-11-16 21:53:38 +0100 |
commit | f4bd9fdf0e9555837d5c1306fb629372c9a4c0f1 (patch) | |
tree | fadd79232d0b04ee7772c3915af516636738f678 | |
parent | efaf3ee3f4b2478079c7b9dde8f9e879956a460f (diff) |
Still pretty unsure what can and can't be done.
-rw-r--r-- | src/battlemap.erl | 22 | ||||
-rw-r--r-- | src/character.erl | 30 | ||||
-rw-r--r-- | src/handler.erl | 1 | ||||
-rw-r--r-- | src/timed_cache_data.hrl | 5 | ||||
-rw-r--r-- | www/handler/battlemap/character_turn.yaws | 3 | ||||
-rw-r--r-- | www/handler/battlemap/load_state.yaws | 99 |
6 files changed, 78 insertions, 82 deletions
diff --git a/src/battlemap.erl b/src/battlemap.erl deleted file mode 100644 index 4366852..0000000 --- a/src/battlemap.erl +++ /dev/null @@ -1,22 +0,0 @@ --module(battlemap). --export([encode_in_json/1]). - -encode_in_json ( - { - Width, - Height, - Tiles - } -) -> - jiffy:encode( - { - [ - {<<"width">>, Width}, - {<<"height">>, Height}, - { - <<"content">>, - lists:map((fun ({ID, Cost}) -> [ID, Cost] end), Tiles) - } - ] - } - ). diff --git a/src/character.erl b/src/character.erl deleted file mode 100644 index aa0d5f0..0000000 --- a/src/character.erl +++ /dev/null @@ -1,30 +0,0 @@ --module(character). --export([encode_in_json/1]). - -encode_in_json ( - { - ID, - Name, - Icon, - Portrait, - {X, Y}, - Team, - MovementPoints, - AttackRange - } -) -> - jiffy:encode( - { - [ - {<<"id">>, ID}, - {<<"name">>, Name}, - {<<"icon">>, Icon}, - {<<"portrait">>, Portrait}, - {<<"loc_x">>, X}, - {<<"loc_y">>, Y}, - {<<"team">>, Team}, - {<<"mov_pts">>, MovementPoints}, - {<<"atk_rg">>, AttackRange} - ] - } - ). diff --git a/src/handler.erl b/src/handler.erl index 9270aa4..5f6ced4 100644 --- a/src/handler.erl +++ b/src/handler.erl @@ -6,7 +6,6 @@ start(_YawsParams) -> gen_server:cast(Pid, {add, battlemap_db, none}), gen_server:cast(Pid, {add, battlemap_instance_db, none}), gen_server:cast(Pid, {add, character_db, none}), - gen_server:cast(Pid, {add, character_instance_db, none}), gen_server:cast(Pid, {add, character_turn_db, none}), gen_server:cast(Pid, {add, player_data_db, none}), ok. diff --git a/src/timed_cache_data.hrl b/src/timed_cache_data.hrl index b0d7ba6..e91be25 100644 --- a/src/timed_cache_data.hrl +++ b/src/timed_cache_data.hrl @@ -1,6 +1,9 @@ +%% TODO: add types. -record(battlemap, {id, width, height, content, instances}). -record(battlemap_instance, {id, chars, curr_player, rem_chars, last_turn}). -record(character, {id, name, icon, portrait, mov_pts, atk_rg}). --record(character_instance, {id, x, y, team}). -record(character_turn, {id, path, target}). -record(player, {id, battlemaps, characters}). + +%% Not stored in its own timed cache. +-record(character_instance, {x, y, team}). 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, |