summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-10-27 21:14:25 +0100 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-10-27 21:14:25 +0100 |
commit | 95f112f827ffef5605c384b86a9d718c74e9bbbc (patch) | |
tree | e7304271b9226b2981dc8d89b5e4db33efc1fd93 /src/battle/struct/btl_condition.erl | |
parent | 86147b01bd6a240fa713dbf3368e324987664f7a (diff) |
...
Diffstat (limited to 'src/battle/struct/btl_condition.erl')
-rw-r--r-- | src/battle/struct/btl_condition.erl | 63 |
1 files changed, 50 insertions, 13 deletions
diff --git a/src/battle/struct/btl_condition.erl b/src/battle/struct/btl_condition.erl index 695830b..ee582d9 100644 --- a/src/battle/struct/btl_condition.erl +++ b/src/battle/struct/btl_condition.erl @@ -5,6 +5,13 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -include("tacticians/conditions.hrl"). +-type visibility() :: + ( + none + | {limited, ordsets:ordsets(non_neg_integer())} % PlayerIXs + | all + ). + -type update_action() :: ( none @@ -24,14 +31,15 @@ { category :: shr_condition:id(), triggers :: ordsets:ordset(shr_condition:trigger()), - parameters :: tuple() + parameters :: tuple(), + visibility :: visibility() } ). -opaque type() :: #btl_cond{}. -opaque collection() :: orddict:orddict(non_neg_integer(), type()). --export_type([type/0, ref/0, collection/0, update_action/0]). +-export_type([type/0, ref/0, visibility/0, collection/0, update_action/0]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -42,21 +50,26 @@ get_category/1, get_triggers/1, get_parameters/1, + get_visibility/1, - set_triggers/2, - set_parameters/2, + set_visibility/2, + ataxia_set_visibility/2, + set_triggers/2, ataxia_set_triggers/2, - ataxia_set_parameters/2, - ataxia_set_triggers/3, + + set_parameters/2, + ataxia_set_parameters/2, ataxia_set_parameters/3, + get_category_field/0, get_triggers_field/0, get_parameters_field/0, + get_visibility_field/0, - new/3, + new/4, new_collection/0 ] ). @@ -74,8 +87,7 @@ -export ( [ - encode/1, - encode_collection/1 + encode_collection_for/2 ] ). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -437,8 +449,33 @@ new (CondID, Triggers, Params) -> -spec new_collection () -> collection(). new_collection () -> orddict:new(). --spec encode (type()) -> {list({binary(), any()})}. -encode (Condition) -> {[]}. % TODO +-spec encode + ( + non_neg_integer(), + type() + ) + -> list({binary(), any()}). +encode (IX, Condition) -> todo. % TODO --spec encode_collection (collection()) -> {list({binary(), any()})}. -encode_collection (Conditions) -> {[]}. % TODO +-spec encode_collection_for + ( + non_neg_integer(), + collection() + ) + -> list({binary(), any()}). +encode_collection_for (PlayerIX, Conditions) -> + lists:filtermap + ( + fun ({IX, Condition}) -> + case Condition#btl_cond.visibility of + none -> false; + any -> encode(IX, Condition); + {limited, AllowedPlayerIXs} -> + case ordsets:is_element(PlayerIX, AllowedPlayerIXs) of + false -> false; + true -> {true, encode(IX, Condition)} + end + end + end, + orddict:to_list(Conditions) + ). |