summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/battle/struct')
-rw-r--r-- | src/battle/struct/btl_status_indicators.erl | 767 |
1 files changed, 148 insertions, 619 deletions
diff --git a/src/battle/struct/btl_status_indicators.erl b/src/battle/struct/btl_status_indicators.erl index 9c852d4..ec0b2d5 100644 --- a/src/battle/struct/btl_status_indicators.erl +++ b/src/battle/struct/btl_status_indicators.erl @@ -20,14 +20,14 @@ ( btl_sti, { - icon :: binary(), - extra :: binary(), + category :: binary(), + parameter :: binary(), visibility :: visibility() } ). --type single() :: #btl_cond{}. --type type () :: orddict:orddict(non_neg_integer(), single()), +-type single() :: #btl_sti{}. +-type type() :: orddict:orddict(non_neg_integer(), single()). -export_type ( @@ -47,26 +47,25 @@ [ get_status_indicator/2, - get_parameters/1, - set_parameters/3, % IX, Value, Conditions - ataxia_set_parameters/3, % IX, Value, Conditions - ataxia_set_parameters/4, % IX, Value, Conditions + get_parameter/1, + set_parameter/3, % IX, Value, StatusIndicators + ataxia_set_parameter/3, % IX, Value, StatusIndicators - get_triggers/1, - set_triggers/3, % IX, Value, Conditions - ataxia_set_triggers/3, % IX, Value, Conditions + get_category/1, + set_category/3, % IX, Value, StatusIndicators + ataxia_set_category/3, % IX, Value, StatusIndicators get_visibility/1, - set_visibility/3, % IX, Value, Conditions - ataxia_set_visibility/3 % IX, Value, Conditions + set_visibility/3, % IX, Value, StatusIndicators + ataxia_set_visibility/3 % IX, Value, StatusIndicators ] ). -export ( [ - add/5, - ataxia_add/5, + add/4, + ataxia_add/4, remove/2, ataxia_remove/2, new/0 @@ -76,14 +75,6 @@ -export ( [ - apply_to_character/5, - apply_to_battle/4 - ] -). - --export -( - [ encode_for/2 ] ). @@ -91,141 +82,45 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec apply_trigger - ( - shr_condition:context(_ReadOnlyDataType, VolatileDataType), - fun((non_neg_integer()) -> ref()), - btl_character_turn_update:type(), - ordsets:ordset(non_neg_integer()), - type() - ) - -> {VolatileDataType, btl_character_turn_update:type()}. -apply_trigger (Context, IXtoRef, S0Update, RelevantIndices, Conditions) -> - {Trigger, ReadOnlyData, S0VolatileData} = Context, - - ConditionCollection = Conditions#btl_conds.collection, - - {LastVolatileData, LastUpdate} = - ordsets:fold - ( - fun (IX, {CurrentVolatileData, CurrentUpdate}) -> - case orddict:find(IX, ConditionCollection) of - {ok, Condition} -> - Module = - shr_condition:get_module - ( - shr_condition:from_id(Condition#btl_cond.category) - ), - - {NextVolatileData, NextUpdate} = - erlang:apply - ( - Module, - apply, - [ - IXtoRef(IX), - CurrentUpdate, - {Trigger, ReadOnlyData, CurrentVolatileData} - ] - ), - - {NextVolatileData, NextUpdate}; - - error -> - % TODO: Remove the condition. - {CurrentVolatileData, CurrentUpdate} - end - end, - {S0VolatileData, S0Update, []}, - RelevantIndices - ), - - {LastVolatileData, LastUpdate}. - --spec compute_next_index (type()) -> non_neg_integer(). -compute_next_index (Conditions) -> - Collection = Conditions#btl_conds.collection, - CollectionSize = orddict:size(Collection), - Candidates = lists:seq(0, CollectionSize), - - Result = - lists:foldr - ( - fun (Candidate, CurrentResult) -> - case is_integer(CurrentResult) of - true -> CurrentResult; - false -> - case orddict:is_key(Candidate, Collection) of - true -> none; - false -> Candidate - end - end - end, - none, - Candidates - ), - - Result. - -spec encode_single (non_neg_integer(), single()) -> {list({binary(), any()})}. -encode_single (IX, Condition) -> - Module = - shr_condition:get_module - ( - shr_condition:from_id(Condition#btl_cond.category) - ), - - EncodedParameters = - erlang:apply - ( - Module, - encode_parameters, - [ - Condition#btl_cond.parameters - ] - ), +encode_single (IX, StatusIndicator) -> + Category = StatusIndicator#btl_sti.category, + Parameter = StatusIndicator#btl_sti.parameter, { [ - {<<"ix">>, IX}, - {<<"p">>, EncodedParameters} + % XXX: This exposes the presence of hidden status indicators + {<<"i">>, IX}, + {<<"c">>, Category}, + {<<"p">>, Parameter} ] }. --spec get_relevant_condition_indices - ( - shr_condition:trigger(), - type() - ) - -> ordsets:ordset(non_neg_integer()). -get_relevant_condition_indices(Trigger, Conditions) -> - case orddict:find(Trigger, Conditions#btl_conds.from_trigger) of - {ok, Result} -> Result; - _ -> ordsets:new() - end. - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% Accessors %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec get_condition +-spec get_status_indicator ( ref(), btl_character_turn_update:type() ) -> ({ok, single()} | none). -get_condition ({battle, IX}, Update) -> - Conditions = - btl_battle:get_conditions(btl_character_turn_update:get_battle(Update)), +get_status_indicator ({battle, IX}, Update) -> + StatusIndicators = + btl_battle:get_status_indicators + ( + btl_character_turn_update:get_battle(Update) + ), - case orddict:find(IX, Conditions#btl_conds.collection) of + case orddict:find(IX, StatusIndicators) of error -> none; Other -> Other end; -get_condition ({char, CharIX, CondIX}, Update) -> - Conditions = - btl_character:get_conditions +get_status_indicator ({char, CharIX, StatusIndicatorIX}, Update) -> + StatusIndicators = + btl_character:get_status_indicators ( btl_battle:get_character ( @@ -234,7 +129,7 @@ get_condition ({char, CharIX, CondIX}, Update) -> ) ), - case orddict:find(CondIX, Conditions#btl_conds.collection) of + case orddict:find(StatusIndicatorIX, StatusIndicators) of error -> none; Other -> Other end. @@ -243,22 +138,18 @@ get_condition ({char, CharIX, CondIX}, Update) -> %%%% Visibility %%%% %%%%%%%%%%%%%%%%%%%% -spec get_visibility (single()) -> visibility(). -get_visibility (Condition) -> Condition#btl_cond.visibility. +get_visibility (StatusIndicator) -> StatusIndicator#btl_sti.visibility. -spec set_visibility (non_neg_integer(), visibility(), type()) -> type(). -set_visibility (IX, NewVisibility, Conditions) -> - Conditions#btl_conds - { - collection = - orddict:update - ( - IX, - fun (Condition) -> - Condition#btl_cond{ visibility = NewVisibility } - end, - Conditions#btl_conds.collection - ) - }. +set_visibility (IX, NewVisibility, StatusIndicators) -> + orddict:update + ( + IX, + fun (StatusIndicator) -> + StatusIndicator#btl_sti{ visibility = NewVisibility } + end, + StatusIndicators + ). -spec ataxia_set_visibility ( @@ -267,362 +158,103 @@ set_visibility (IX, NewVisibility, Conditions) -> type() ) -> {type(), ataxic:basic()}. -ataxia_set_visibility (IX, NewVisibility, Conditions) -> +ataxia_set_visibility (IX, NewVisibility, StatusIndicators) -> { - set_visibility(IX, NewVisibility, Conditions), - ataxic:update_field + set_visibility(IX, NewVisibility, StatusIndicators), + ataxic_sugar:update_orddict_element ( - #btl_conds.collection, - ataxic_sugar:update_orddict_element + IX, + ataxic:update_field ( - IX, - ataxic:update_field - ( - #btl_cond.visibility, - ataxic:constant(NewVisibility) - ) + #btl_sti.visibility, + ataxic:constant(NewVisibility) ) ) }. %%%%%%%%%%%%%%%%%% -%%%% Triggers %%%% +%%%% Category %%%% %%%%%%%%%%%%%%%%%% --spec get_triggers (single()) -> ordsets:ordset(shr_condition:trigger()). -get_triggers (Condition) -> Condition#btl_cond.triggers. +-spec get_category (single()) -> binary(). +get_category (StatusIndicator) -> StatusIndicator#btl_sti.category. --spec set_triggers +-spec set_category ( non_neg_integer(), - ordsets:ordset(shr_condition:trigger()), + binary(), type() ) -> type(). -set_triggers (IX, NewTriggers, Conditions) -> - CurrentCondition = orddict:fetch(IX, Conditions#btl_conds.collection), - CurrentTriggers = CurrentCondition#btl_cond.triggers, - AddedTriggers = ordsets:subtract(NewTriggers, CurrentTriggers), - RemovedTriggers = ordsets:subtract(CurrentTriggers, NewTriggers), - - S0FromTrigger = - ordsets:fold - ( - fun (Trigger, FromTrigger) -> - orddict:update - ( - Trigger, - fun (ConditionIXs) -> - ordsets:del_element(IX, ConditionIXs) - end, - FromTrigger - ) - end, - Conditions#btl_conds.from_trigger, - RemovedTriggers - ), - - S1FromTrigger = - ordsets:fold - ( - fun (Trigger, FromTrigger) -> - orddict:update - ( - Trigger, - fun (ConditionIXs) -> - ordsets:add_element(IX, ConditionIXs) - end, - FromTrigger - ) - end, - S0FromTrigger, - AddedTriggers - ), - - Conditions#btl_conds - { - from_trigger = S1FromTrigger, - collection = - orddict:update - ( - IX, - fun (Condition) -> Condition#btl_cond{ triggers = NewTriggers } end, - Conditions#btl_conds.collection - ) - }. +set_category (IX, NewValue, StatusIndicators) -> + orddict:update + ( + IX, + fun (StatusIndicator) -> + StatusIndicator#btl_sti{ category = NewValue } + end, + StatusIndicators + ). --spec ataxia_set_triggers +-spec ataxia_set_category ( non_neg_integer(), - ordsets:ordset(shr_condition:trigger()), + binary(), type() ) -> {type(), ataxic:basic()}. -ataxia_set_triggers (IX, NewTriggers, Conditions) -> - CurrentCondition = orddict:fetch(IX, Conditions#btl_conds.collection), - CurrentTriggers = CurrentCondition#btl_cond.triggers, - AddedTriggers = ordsets:subtract(NewTriggers, CurrentTriggers), - RemovedTriggers = ordsets:subtract(CurrentTriggers, NewTriggers), - AtaxicFromTriggerParams = [ataxic:constant(IX), ataxic:current_value()], - - {S0FromTrigger, S0FromTriggerAtaxicUpdates} = - ordsets:fold - ( - fun (Trigger, {FromTrigger, PrevFromTriggerAtaxicUpdates}) -> - { - orddict:update - ( - Trigger, - fun (ConditionIXs) -> - ordsets:del_element(IX, ConditionIXs) - end, - FromTrigger - ), - [ - ataxic_sugar:update_orddict_element - ( - IX, - ataxic:apply_function - ( - ordsets, - del_element, - AtaxicFromTriggerParams - ) - ) - | PrevFromTriggerAtaxicUpdates - ] - } - end, - {Conditions#btl_conds.from_trigger, []}, - RemovedTriggers - ), - - {S1FromTrigger, S1FromTriggerAtaxicUpdates} = - ordsets:fold - ( - fun (Trigger, {FromTrigger, PrevFromTriggerAtaxicUpdates}) -> - { - orddict:update - ( - Trigger, - fun (ConditionIXs) -> - ordsets:add_element(IX, ConditionIXs) - end, - FromTrigger - ), - [ - ataxic_sugar:update_orddict_element - ( - IX, - ataxic:apply_function - ( - ordsets, - add_element, - AtaxicFromTriggerParams - ) - ) - | PrevFromTriggerAtaxicUpdates - ] - } - end, - {S0FromTrigger, S0FromTriggerAtaxicUpdates}, - AddedTriggers - ), - +ataxia_set_category (IX, NewValue, StatusIndicators) -> { - Conditions#btl_conds - { - from_trigger = S1FromTrigger, - collection = - orddict:update - ( - IX, - fun (Condition) -> - Condition#btl_cond{ triggers = NewTriggers } - end, - Conditions#btl_conds.collection - ) - }, - ataxic:sequence + set_category(IX, NewValue, StatusIndicators), + ataxic_sugar:update_orddict_element ( - [ - ataxic:update_field - ( - #btl_conds.collection, - ataxic_sugar:update_orddict_element - ( - IX, - ataxic:update_field - ( - #btl_cond.triggers, - ataxic:sequence - ( - [ - ataxic:apply_function - ( - ordsets, - subtract, - [ - ataxic:current_value(), - ataxic:constant(RemovedTriggers) - ] - ), - ataxic:apply_function - ( - ordsets, - union, - [ - ataxic:current_value(), - ataxic:constant(AddedTriggers) - ] - ) - ] - ) - ) - ) - ), - ataxic:update_field - ( - #btl_conds.from_trigger, - ataxic:sequence(S1FromTriggerAtaxicUpdates) - ) - ] + IX, + ataxic:update_field + ( + #btl_sti.category, + ataxic:const(NewValue) + ) ) }. + %%%%%%%%%%%%%%%%%%%% %%%% Parameters %%%% %%%%%%%%%%%%%%%%%%%% --spec get_parameters (single()) -> any(). -get_parameters (Condition) -> Condition#btl_cond.parameters. - --spec set_parameters (non_neg_integer(), any(), type()) -> type(). -set_parameters (IX, NewValue, Conditions) -> - Conditions#btl_conds - { - collection = - orddict:update - ( - IX, - fun (Condition) -> Condition#btl_cond{ parameters = NewValue } end, - Conditions#btl_conds.collection - ) - }. +-spec get_parameter (single()) -> binary(). +get_parameter (StatusIndicator) -> StatusIndicator#btl_sti.parameter. --spec ataxia_set_parameters +-spec set_parameter (non_neg_integer(), binary(), type()) -> type(). +set_parameter (IX, NewValue, StatusIndicators) -> + orddict:update ( - non_neg_integer(), - any(), - type() - ) - -> {type(), ataxic:basic()}. -ataxia_set_parameters (IX, NewValue, Conditions) -> - ataxia_set_parameters(IX, NewValue, ataxic:constant(NewValue), Conditions). + IX, + fun (StatusIndicator) -> + StatusIndicator#btl_sti{ parameter = NewValue } + end, + StatusIndicators + ). --spec ataxia_set_parameters +-spec ataxia_set_parameter ( non_neg_integer(), - any(), - ataxic:basic(), + binary(), type() ) -> {type(), ataxic:basic()}. -ataxia_set_parameters (IX, NewValue, ParamsAtaxicUpdate, Conditions) -> +ataxia_set_parameter (IX, NewValue, StatusIndicators) -> { - set_parameters(IX, NewValue, Conditions), - ataxic:update_field + set_parameter(IX, NewValue, StatusIndicators), + ataxic_sugar:update_orddict_element ( - #btl_conds.collection, - ataxic_sugar:update_orddict_element + IX, + ataxic:update_field ( - IX, - ataxic:update_field - ( - #btl_cond.parameters, - ParamsAtaxicUpdate - ) + #btl_sti.parameter, + ataxic:const(NewValue) ) ) }. -%%%% Apply %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec apply_to_character - ( - non_neg_integer(), - shr_condition:trigger(), - any(), - VolatileDataType, - btl_character_turn_update:type() - ) - -> {VolatileDataType, btl_character_turn_update:type()}. -apply_to_character -( - ActorIX, - Trigger, - ReadOnlyData, - S0VolatileData, - S0Update -) -> - S0Battle = btl_character_turn_update:get_battle(S0Update), - {S0Actor, S1Battle} = btl_battle:get_resolved_character(ActorIX, S0Battle), - S1Update = btl_character_turn_update:set_battle(S1Battle, S0Update), - - CharacterConditions = btl_character:get_conditions(S0Actor), - MatchingConditionIndices = - get_relevant_condition_indices(Trigger, CharacterConditions), - - case ordsets:is_empty(MatchingConditionIndices) of - true -> {S0VolatileData, S1Update}; - false -> - {S1VolatileContext, S2Update} = - apply_trigger - ( - {Trigger, ReadOnlyData, S0VolatileData}, - fun (IX) -> {char, ActorIX, IX} end, - S1Update, - MatchingConditionIndices, - CharacterConditions - ), - - {S1VolatileContext, S2Update} - end. - --spec apply_to_battle - ( - shr_condition:trigger(), - any(), - VolatileDataType, - btl_character_turn_update:type() - ) - -> {VolatileDataType, btl_character_turn_update:type()}. -apply_to_battle -( - Trigger, - ReadOnlyData, - S0VolatileData, - S0Update -) -> - S0Battle = btl_character_turn_update:get_battle(S0Update), - - BattleConditions = btl_battle:get_conditions(S0Battle), - MatchingConditionIndices = - get_relevant_condition_indices(Trigger, BattleConditions), - - case ordsets:is_empty(MatchingConditionIndices) of - true -> {S0VolatileData, S0Update}; - false -> - {S1VolatileContext, S1Update} = - apply_trigger - ( - {Trigger, ReadOnlyData, S0VolatileData}, - fun (IX) -> {battle, IX} end, - S0Update, - MatchingConditionIndices, - BattleConditions - ), - - {S1VolatileContext, S1Update} - end. - %%%% Add/Remove Elements %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% @@ -630,203 +262,104 @@ apply_to_battle %%%%%%%%%%%%% -spec add ( - shr_condition:id(), - ordsets:ordset(shr_condition:trigger()), - any(), + binary(), + binary(), visibility(), type() ) -> {type(), non_neg_integer()}. -add (CondID, Triggers, Params, Visibility, Conditions) -> - NewCondition = - #btl_cond +add (Category, Parameter, Visibility, S0StatusIndicators) -> + NewStatusIndicator = + #btl_sti { - category = CondID, - triggers = Triggers, - parameters = Params, + category = Category, + parameter = Parameter, visibility = Visibility }, - NewConditionIX = compute_next_index(Conditions), + NewStatusIndicatorIX = + shr_orddict_util:compute_next_non_neg_integer(S0StatusIndicators), - UpdatedCollection = + S1StatusIndicators = orddict:store ( - NewConditionIX, - NewCondition, - Conditions#btl_conds.collection - ), - - UpdatedFromTrigger = - ordsets:fold - ( - fun (Trigger, FromTrigger) -> - orddict:update - ( - Trigger, - fun (Set) -> ordsets:add_element(NewConditionIX, Set) end, - FromTrigger - ) - end, - Conditions#btl_conds.from_trigger, - Triggers + NewStatusIndicatorIX, + NewStatusIndicator, + S0StatusIndicators ), - { - Conditions#btl_conds - { - collection = UpdatedCollection, - from_trigger = UpdatedFromTrigger - }, - NewConditionIX - }. + S1StatusIndicators. -spec ataxia_add ( - shr_condition:id(), - ordsets:ordset(shr_condition:trigger()), - any(), + binary(), + binary(), visibility(), type() ) -> {type(), non_neg_integer(), ataxic:basic()}. -ataxia_add (CondID, Triggers, Params, Visibility, Conditions) -> - NewCondition = - #btl_cond +ataxia_add (Category, Parameter, Visibility, S0StatusIndicators) -> + NewStatusIndicator = + #btl_sti { - category = CondID, - triggers = Triggers, - parameters = Params, + category = Category, + parameter = Parameter, visibility = Visibility }, - NewConditionIX = compute_next_index(Conditions), - AtaxicNewConditionIX = ataxic:constant(NewConditionIX), + NewStatusIndicatorIX = + shr_orddict_util:compute_next_non_neg_integer(S0StatusIndicators), - UpdatedCollection = + S1StatusIndicators = orddict:store ( - NewConditionIX, - NewCondition, - Conditions#btl_conds.collection + NewStatusIndicatorIX, + NewStatusIndicator, + S0StatusIndicators ), - CollectionAtaxicUpdate = + + StatusIndicatorsAtaxicUpdate = ataxic:apply_function ( orddict, store, [ - AtaxicNewConditionIX, - ataxic:constant(NewCondition), - ataxic:current_value() - ] - ), - - SetAtaxicUpdate = - ataxic:apply_function - ( - ordsets, - add_element, - [ - AtaxicNewConditionIX, + ataxic:constant(NewStatusIndicatorIX), + ataxic:constant(NewStatusIndicator), ataxic:current_value() ] ), - {UpdatedFromTrigger, FromTriggerAtaxicUpdateList} = - ordsets:fold - ( - fun (Trigger, {FromTrigger, FromTriggerUpdates}) -> - { - orddict:update - ( - Trigger, - fun (Set) -> ordsets:add_element(NewConditionIX, Set) end, - FromTrigger - ), - [ - ataxic_sugar:update_orddict_element - ( - Trigger, - SetAtaxicUpdate - ) - | FromTriggerUpdates - ] - } - end, - Conditions#btl_conds.from_trigger, - Triggers - ), { - Conditions#btl_conds - { - collection = UpdatedCollection, - from_trigger = UpdatedFromTrigger - }, - NewConditionIX, - ataxic:sequence - ( - [ - ataxic:update_field - ( - #btl_conds.collection, - CollectionAtaxicUpdate - ), - ataxic:update_field - ( - #btl_conds.from_trigger, - ataxic:sequence(FromTriggerAtaxicUpdateList) - ) - ] - ) + S1StatusIndicators, + NewStatusIndicatorIX, + StatusIndicatorsAtaxicUpdate }. %%%%%%%%%%%%%%%% %%%% Remove %%%% %%%%%%%%%%%%%%%% -spec remove (non_neg_integer(), type()) -> type(). -remove (IX, S0Conditions) -> - S1Conditions = set_triggers(IX, ordsets:new(), S0Conditions), - S2Conditions = - S1Conditions#btl_conds - { - collection = orddict:erase(IX, S1Conditions#btl_conds.collection) - }, +remove (IX, S0StatusIndicators) -> + S1StatusIndicators = orddict:erase(IX, S0StatusIndicators), - S2Conditions. + S1StatusIndicators. -spec ataxia_remove (non_neg_integer(), type()) -> {type(), ataxic:basic()}. -ataxia_remove (IX, S0Conditions) -> - {S1Conditions, ConditionsAtaxicUpdate1} = - ataxia_set_triggers(IX, ordsets:new(), S0Conditions), - - S2Conditions = - S1Conditions#btl_conds - { - collection = orddict:erase(IX, S1Conditions#btl_conds.collection) - }, +ataxia_remove (IX, S0StatusIndicators) -> + S1StatusIndicators = orddict:erase(IX, S0StatusIndicators), { - S2Conditions, - ataxic:sequence + S1StatusIndicators, + ataxic:apply_function ( + orddict, + erase, [ - ConditionsAtaxicUpdate1, - ataxic:update_field - ( - #btl_conds.collection, - ataxic:apply_function - ( - orddict, - erase, - [ - ataxic:constant(IX), - ataxic:current_value() - ] - ) - ) + ataxic:constant(IX), + ataxic:current_value() ] ) }. @@ -834,26 +367,22 @@ ataxia_remove (IX, S0Conditions) -> %%%% Other %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec new () -> type(). new () -> - #btl_conds - { - collection = orddict:new(), - from_trigger = orddict:new() - }. + orddict:new(). -spec encode_for (non_neg_integer(), type()) -> list(any()). -encode_for (PlayerIX, Conditions) -> +encode_for (PlayerIX, StatusIndicators) -> lists:filtermap ( - fun ({IX, Condition}) -> - case Condition#btl_cond.visibility of + fun ({IX, StatusIndicator}) -> + case StatusIndicator#btl_sti.visibility of none -> false; - all -> encode_single(IX, Condition); + all -> encode_single(IX, StatusIndicator); {limited, AllowedPlayerIXs} -> case ordsets:is_element(PlayerIX, AllowedPlayerIXs) of false -> false; - true -> {true, encode_single(IX, Condition)} + true -> {true, encode_single(IX, StatusIndicator)} end end end, - orddict:to_list(Conditions#btl_conds.collection) + orddict:to_list(StatusIndicators) ). |