| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2019-04-24 19:11:58 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2019-04-24 19:11:58 +0200 | 
| commit | e68004ee70c9102d00df2925c05d1354a6315bc0 (patch) | |
| tree | 45d208c7b21144f7ae6a5b97288b147e8456f29f /src/battle/mechanic | |
| parent | e39c44eabaea7bafa58aa85593b80a6c55f907a3 (diff) | |
...
Diffstat (limited to 'src/battle/mechanic')
| -rw-r--r-- | src/battle/mechanic/btl_turn_progression.erl (renamed from src/battle/mechanic/btl_next_turn.erl) | 96 | 
1 files changed, 42 insertions, 54 deletions
| diff --git a/src/battle/mechanic/btl_next_turn.erl b/src/battle/mechanic/btl_turn_progression.erl index 886916d..c28719e 100644 --- a/src/battle/mechanic/btl_next_turn.erl +++ b/src/battle/mechanic/btl_turn_progression.erl @@ -1,4 +1,4 @@ --module(btl_next_turn). +-module(btl_turn_progression).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -9,7 +9,7 @@  -export  (     [ -      update_if_needed/1 +      handle/1     ]  ). @@ -64,71 +64,60 @@ reset_next_player_timeline (Battle) ->     {UpdatedBattle, UpdatedNextPlayer, DBQuery}. --spec activate_next_players_characters (btl_battle:type(), btl_player:type()) +-spec activate_next_players_characters +   ( +      btl_battle:type(), +      btl_player:type() +   )     -> {btl_battle:type(), ataxic:basic()}.  activate_next_players_characters (Battle, NextPlayer) ->     NextPlayerIX = btl_player:get_index(NextPlayer), -   Characters = btl_battle:get_characters(Battle), +   AllCharacters = btl_battle:get_characters(Battle), -   {UpdatedCharacters, AtaxicUpdates} = +   {ResultingBattle, BattleAtaxicUpdates} =        orddict:fold        ( -         fun (IX, Character, {Prev, Updates}) -> +         fun (IX, Character, {CurrentBattle, CurrentBattleUpdates}) ->              case (btl_character:get_player_index(Character) == NextPlayerIX) of                 true -> -                  { -                     orddict:store +                  {UpdatedCharacter, CharacterAtaxicUpdate} = +                     btl_character:ataxia_set_is_active(true, Character), + +                  {UpdatedBattle, BattleAtaxicUpdate} = +                     btl_battle:ataxia_set_character                       (                          IX, -                        btl_character:set_is_active(true, Character), -                        Prev +                        UpdatedCharacter, +                        CharacterAtaxicUpdate                       ), -                     [ -                        ataxic_sugar:update_orddict_element -                        ( -                           IX, -                           ataxic:update_field -                           ( -                              btl_character:get_is_active_field(), -                              ataxic:constant(true) -                           ) -                        )|Updates -                     ] -                  }; - -               false -> {Prev, Updates} + +                  {UpdatedBattle, [BattleAtaxicUpdate|CurrentBattleUpdates]}; + +               false -> {CurrentBattle, CurrentBattleUpdates}              end           end, -         {Characters, []}, -         Characters -      ), - -   DBQuery = -      ataxic:update_field -      ( -         btl_battle:get_characters_field(), -         ataxic:sequence(AtaxicUpdates) +         {Battle, []}, +         AllCharacters        ), -   UpdatedBattle = btl_battle:set_characters(UpdatedCharacters, Battle), - -   {UpdatedBattle, DBQuery}. +   {ResultingBattle, ataxic:optimize(ataxic:sequence(BattleAtaxicUpdates))}. --spec update +-spec activate_next_player     (        btl_character_turn_update:type()     )     -> btl_character_turn_update:type(). -update (Update) -> +activate_next_player (Update) ->     Data = btl_character_turn_update:get_data(Update),     Battle = btl_character_turn_data:get_battle(Data), -   {S0Battle, DBQuery0} = set_player_turn_to_next(Battle), +   {S0Battle, DBQuery0} = prepare_player_turn_for_next_player(Battle),     {S1Battle, NextPlayer, DBQuery1} = reset_next_player_timeline(S0Battle),     {S2Battle, DBQuery2} =        activate_next_players_characters(S1Battle, NextPlayer),     S0Data = btl_character_turn_data:set_battle(S2Battle, Data), +     S0Update =        btl_character_turn_update:add_to_timeline        ( @@ -152,33 +141,32 @@ update (Update) ->     S2Update. --spec requires_update (btl_character_turn_update:type()) -> boolean(). -requires_update (Update) -> +-spec has_active_characters_remaining +   ( +      btl_character_turn_update:type() +   ) +   -> boolean(). +has_active_characters_remaining (Update) ->     Data = btl_character_turn_update:get_data(Update),     Battle = btl_character_turn_data:get_battle(Data),     Characters = btl_battle:get_characters(Battle), -   (not -      (lists:any -         ( -            fun ({_IX, Char}) -> -               btl_character:get_is_active(Char) -            end, -            orddict:to_list(Characters) -         ) -      ) +   lists:any +   ( +      fun ({_IX, Char}) -> btl_character:get_is_active(Char) end, +      orddict:to_list(Characters)     ).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec update_if_needed +-spec handle     (        btl_character_turn_update:type()     )     -> btl_character_turn_update:type(). -update_if_needed (Update) -> -   case requires_update(Update) of -      true -> update(Update); +handle (Update) -> +   case has_active_characters_remaining(Update) of +      false -> activate_next_player(Update);        _ -> Update     end. | 


