| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src')
| -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). | 


