summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/game-logic/btl_next_turn.erl')
-rw-r--r--src/battle/game-logic/btl_next_turn.erl67
1 files changed, 40 insertions, 27 deletions
diff --git a/src/battle/game-logic/btl_next_turn.erl b/src/battle/game-logic/btl_next_turn.erl
index a0ea499..ed6eadd 100644
--- a/src/battle/game-logic/btl_next_turn.erl
+++ b/src/battle/game-logic/btl_next_turn.erl
@@ -50,7 +50,7 @@ reset_next_player_timeline (Battle) ->
ataxic:update_field
(
btl_battle:get_players_field(),
- ataxic_sugar:update_array_cell
+ ataxic_sugar:update_orddict_element
(
NextPlayerIX,
ataxic:update_field
@@ -70,15 +70,36 @@ activate_next_players_characters (Battle, NextPlayer) ->
NextPlayerIX = btl_player:get_index(NextPlayer),
Characters = btl_battle:get_characters(Battle),
- {UpdatedCharacters, ModifiedIXs} =
- shr_array_util:mapiff
+ {UpdatedCharacters, AtaxicUpdates} =
+ orddict:fold
(
- fun (Character) ->
- (btl_character:get_player_index(Character) == NextPlayerIX)
- end,
- fun (Character) ->
- btl_character:set_is_active(true, Character)
+ fun (IX, Character, {Prev, Updates}) ->
+ case (btl_character:get_player_index(Character) == NextPlayerIX) of
+ true ->
+ {
+ orddict:store
+ (
+ IX,
+ btl_character:set_is_active(true, Character),
+ Prev
+ ),
+ [
+ ataxic_sugar:update_orddict_element
+ (
+ IX,
+ ataxic:update_field
+ (
+ btl_character:get_is_active_field(),
+ ataxic:constant(true)
+ )
+ )
+ ]
+ };
+
+ false -> {Prev, Updates}
+ end
end,
+ {Characters, []},
Characters
),
@@ -86,24 +107,7 @@ activate_next_players_characters (Battle, NextPlayer) ->
ataxic:update_field
(
btl_battle:get_characters_field(),
- ataxic:sequence
- (
- lists:map
- (
- fun (IX) ->
- ataxic_sugar:update_array_cell
- (
- IX,
- ataxic:update_field
- (
- btl_character:get_is_active_field(),
- ataxic:constant(true)
- )
- )
- end,
- ModifiedIXs
- )
- )
+ ataxic:sequence(AtaxicUpdates)
),
UpdatedBattle = btl_battle:set_characters(UpdatedCharacters, Battle),
@@ -154,7 +158,16 @@ requires_update (Update) ->
Battle = btl_character_turn_data:get_battle(Data),
Characters = btl_battle:get_characters(Battle),
- shr_array_util:none(fun btl_character:get_is_active/1, Characters).
+ (not
+ (lists:any
+ (
+ fun ({_IX, Char}) ->
+ btl_character:get_is_active(Char)
+ end,
+ orddict:to_list(Characters)
+ )
+ )
+ ).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%