summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2019-11-18 17:42:48 +0100
committernsensfel <SpamShield0@noot-noot.org>2019-11-18 17:42:48 +0100
commitdbbff9e8555a30bbae2d22b17973216f00bd5b70 (patch)
tree9932367ef79a165029c30f9de7262a8df0d79bee
parent8d7c8ffee198155a70cf5131ec4bb1f3d70a5891 (diff)
...
-rw-r--r--src/battle/struct/btl_conditions.erl51
1 files changed, 11 insertions, 40 deletions
diff --git a/src/battle/struct/btl_conditions.erl b/src/battle/struct/btl_conditions.erl
index 69f1ac8..aa5aefc 100644
--- a/src/battle/struct/btl_conditions.erl
+++ b/src/battle/struct/btl_conditions.erl
@@ -140,30 +140,6 @@ apply_trigger (Context, IXtoRef, S0Update, RelevantIndices, Conditions) ->
{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 get_relevant_condition_indices
(
@@ -572,15 +548,12 @@ add (CondID, Triggers, Params, Conditions) ->
parameters = Params
},
- NewConditionIX = compute_next_index(Conditions),
+ Collection = Conditions#btl_conds.collection,
+
+ NewConditionIX =
+ shr_util_orddict:compute_next_non_neg_integer_index(Collection),
- UpdatedCollection =
- orddict:store
- (
- NewConditionIX,
- NewCondition,
- Conditions#btl_conds.collection
- ),
+ UpdatedCollection = orddict:store(NewConditionIX, NewCondition, Collection),
UpdatedFromTrigger =
ordsets:fold
@@ -623,16 +596,14 @@ ataxia_add (CondID, Triggers, Params, Conditions) ->
parameters = Params
},
- NewConditionIX = compute_next_index(Conditions),
+ Collection = Conditions#btl_conds.collection,
+
+ NewConditionIX =
+ shr_util_orddict:compute_next_non_neg_integer_index(Collection),
+
AtaxicNewConditionIX = ataxic:constant(NewConditionIX),
- UpdatedCollection =
- orddict:store
- (
- NewConditionIX,
- NewCondition,
- Conditions#btl_conds.collection
- ),
+ UpdatedCollection = orddict:store(NewConditionIX, NewCondition, Collection),
CollectionAtaxicUpdate =
ataxic:apply_function