summaryrefslogtreecommitdiff |
diff options
-rw-r--r-- | src/battle/query/btl_load.erl | 3 | ||||
-rw-r--r-- | src/map/query/map_load.erl | 5 | ||||
-rw-r--r-- | src/shared/reply/shr_set_map.erl | 6 | ||||
-rw-r--r-- | src/shared/struct/map/shr_map_marker.erl | 72 |
4 files changed, 53 insertions, 33 deletions
diff --git a/src/battle/query/btl_load.erl b/src/battle/query/btl_load.erl index 456f468..f0eeceb 100644 --- a/src/battle/query/btl_load.erl +++ b/src/battle/query/btl_load.erl @@ -81,7 +81,6 @@ fetch_data (Input) -> -spec generate_reply(query_state(), input()) -> binary(). generate_reply (QueryState, Input) -> PlayerID = Input#input.player_id, - PUser = ataxia_security:user_from_id(PlayerID), Battle = QueryState#query_state.battle, RelevantInventory = btl_battle:get_related_inventory(Battle), Players = btl_battle:get_players(Battle), @@ -106,7 +105,7 @@ generate_reply (QueryState, Input) -> SetMap = shr_set_map:generate ( - PUser, + PlayerIX, fun (_TriggerName) -> false end, btl_battle:get_map(Battle) ), diff --git a/src/map/query/map_load.erl b/src/map/query/map_load.erl index b07ffe8..6384118 100644 --- a/src/map/query/map_load.erl +++ b/src/map/query/map_load.erl @@ -77,11 +77,10 @@ fetch_data (Input) -> }. -spec generate_reply (input(), query_state()) -> binary(). -generate_reply (Input, QueryState) -> - PUser = ataxia_security:user_from_id(Input#input.player_id), +generate_reply (_Input, QueryState) -> Map = QueryState#query_state.map, - SetMap = shr_set_map:generate(PUser, fun (_TriggerName) -> true end, Map), + SetMap = shr_set_map:generate(0, fun (_TriggerName) -> true end, Map), Output = jiffy:encode([SetMap]), Output. diff --git a/src/shared/reply/shr_set_map.erl b/src/shared/reply/shr_set_map.erl index f0af1cf..170f73c 100644 --- a/src/shared/reply/shr_set_map.erl +++ b/src/shared/reply/shr_set_map.erl @@ -18,12 +18,12 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec generate ( - ataxia_security:user(), + non_neg_integer(), fun ((shr_tile_instance:trigger_name()) -> boolean()), shr_map:type() ) -> {list(any())}. -generate (User, TriggerVisibilityFun, Map) -> +generate (PlayerIX, TriggerVisibilityFun, Map) -> { [ {<<"msg">>, <<"set_map">>}, @@ -43,7 +43,7 @@ generate (User, TriggerVisibilityFun, Map) -> lists:foldl ( fun ({Key, Value}, Acc) -> - case shr_map_marker:can_access(User, Value) of + case shr_map_marker:player_can_see(PlayerIX, Value) of true -> [{ Key, shr_map_marker:encode(Value) }|Acc]; false -> Acc end diff --git a/src/shared/struct/map/shr_map_marker.erl b/src/shared/struct/map/shr_map_marker.erl index 3899c23..e272dff 100644 --- a/src/shared/struct/map/shr_map_marker.erl +++ b/src/shared/struct/map/shr_map_marker.erl @@ -3,10 +3,29 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-record +( + matk_mrk, + { + character_ix :: non_neg_integer() + } +). + +-record +( + spawn_mrk, + { + player_ix :: non_neg_integer() + } +). + -type name() :: binary(). --type type() :: {ataxia_security:permission(), list(shr_location:type())}. +-opaque melee_attack_zone() :: #matk_mrk{}. +-opaque spawn_zone() :: #spawn_mrk{}. +-opaque type() :: + {list(shr_location:type()), (melee_attack_zone() | spawn_zone())}. --export_type([name/0, type/0]). +-export_type([name/0, type/0, melee_attack_zone/0, spawn_zone/0]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -14,7 +33,7 @@ -export ( [ - can_access/2, + player_can_see/2, get_locations/1 ] ). @@ -34,36 +53,39 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec can_access (ataxia_security:user(), type()) -> boolean(). -can_access (User, {Permission, _Locations}) -> - ataxia_security:can_access(User, Permission). - --spec get_locations (type()) -> boolean(). -get_locations ({_Permission, Locations}) -> - Locations. +-spec get_locations (type()) -> list(shr_location:type()). +get_locations ({L, _}) -> L. -spec encode (type()) -> {list(any())}. -encode ({Permission, Locations}) -> +encode ({L, MarkerData}) when is_record(MarkerData, matk_mrk) -> + { + [ + { <<"t">>, <<"matk">> }, + { <<"cix">>, MarkerData#matk_mrk.character_ix }, + { <<"l">>, lists:map(fun shr_location:encode/1, L) } + ] + }; +encode ({L, MarkerData}) when is_record(MarkerData, spawn_mrk) -> { [ - { - <<"p">>, - ataxia_security:permission_to_json(fun (E) -> E end, Permission) - }, - { <<"l">>, lists:map(fun shr_location:encode/1, Locations) } + { <<"t">>, <<"spawn">> }, + { <<"pix">>, MarkerData#spawn_mrk.player_ix }, + { <<"l">>, lists:map(fun shr_location:encode/1, L) } ] }. -spec decode (map()) -> type(). decode (Map) -> - EncodedPermission = maps:get("p", Map), - EncodedLocations = maps:get("l", Map), - - Permission = - ataxia_security:permission_from_json(fun (E) -> E end, EncodedPermission), - Locations = lists:map(fun shr_location:decode/1, EncodedLocations), - + Data = maps:get(<<"d">>, Map), { - Permission, - Locations + lists:map(fun shr_location:decode/1, maps:get(<<"l">>, Map)), + ( + case maps:get(<<"t">>, Data) of + <<"mtak">> -> #matk_mrk{ character_ix = maps:get(<<"cix">>, Data) }; + <<"spawn">> -> #spawn_mrk{ player_ix = maps:get(<<"pix">>, Data) } + end + ) }. + +-spec player_can_see (integer(), type()) -> boolean(). +player_can_see (IX, _Marker) -> (IX >= 0). |