| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2018-06-07 12:47:34 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2018-06-07 12:47:34 +0200 | 
| commit | 9b55ecea81edbc12196a5818077fd38421f8f1a8 (patch) | |
| tree | c6d590615695cacbb5a2a3f21fe20639292d134e /src/battlemap/game-logic/bm_next_turn.erl | |
| parent | d99f1e8b0efedf1286ab15c656a0ea874823865f (diff) | |
Now it seems to work perfectly.
Getting both nodes to start made some unexpected issues about the
hostnames appear, despite both using either "-name" or "-sname".
Diffstat (limited to 'src/battlemap/game-logic/bm_next_turn.erl')
| -rw-r--r-- | src/battlemap/game-logic/bm_next_turn.erl | 108 | 
1 files changed, 61 insertions, 47 deletions
| diff --git a/src/battlemap/game-logic/bm_next_turn.erl b/src/battlemap/game-logic/bm_next_turn.erl index abe286e..79cea14 100644 --- a/src/battlemap/game-logic/bm_next_turn.erl +++ b/src/battlemap/game-logic/bm_next_turn.erl @@ -16,20 +16,27 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec set_player_turn_to_next (bm_battle:type()) -> bm_battle:type(). +-spec set_player_turn_to_next (bm_battle:type()) +   -> {bm_battle:type(), sh_db_query:op()}.  set_player_turn_to_next (Battle) ->     Players = bm_battle:get_players(Battle),     CurrentPlayerTurn = bm_battle:get_current_player_turn(Battle),     NextPlayerTurn = bm_player_turn:next(array:size(Players), CurrentPlayerTurn), -   bm_battle:set_current_player_turn(NextPlayerTurn, Battle). +   UpdatedBattle = bm_battle:set_current_player_turn(NextPlayerTurn, Battle), --spec reset_next_player_timeline -   ( -      bm_battle:type() -   ) -   -> {bm_battle:type(), bm_player:type()}. +   DBQuery = +      sh_db_query:set_field +      ( +         bm_battle:get_current_player_turn_field(), +         NextPlayerTurn +      ), + +   {UpdatedBattle, DBQuery}. + +-spec reset_next_player_timeline (bm_battle:type()) +   -> {bm_battle:type(), bm_player:type(), sh_db_query:op()}.  reset_next_player_timeline (Battle) ->     NextPlayerTurn = bm_battle:get_current_player_turn(Battle),     NextPlayerIX = bm_player_turn:get_player_ix(NextPlayerTurn), @@ -39,21 +46,25 @@ reset_next_player_timeline (Battle) ->     UpdatedBattle =        bm_battle:set_player(NextPlayerIX, UpdatedNextPlayer, Battle), -   {UpdatedBattle, UpdatedNextPlayer}. +   DBQuery = +      sh_db_query:update_indexed +      ( +         bm_battle:get_players_field(), +         NextPlayerIX, +         [ sh_db_query:set_field(bm_player:get_timeline_field(), []) ] +      ), +   {UpdatedBattle, UpdatedNextPlayer, DBQuery}. --spec activate_next_players_characters -   ( -      bm_battle:type(), -      bm_player:type() -   ) -   -> {bm_battle:type(), list(non_neg_integer())}. + +-spec activate_next_players_characters (bm_battle:type(), bm_player:type()) +   -> {bm_battle:type(), list(sh_db_query:op())}.  activate_next_players_characters (Battle, NextPlayer) ->     NextPlayerID = bm_player:get_id(NextPlayer),     Characters = bm_battle:get_characters(Battle),     {UpdatedCharacters, ModifiedIXs} = -      array_util:mapiff +      sh_array_util:mapiff        (           fun (Character) ->              (bm_character:get_owner_id(Character) == NextPlayerID) @@ -64,33 +75,29 @@ activate_next_players_characters (Battle, NextPlayer) ->           Characters        ), -   UpdatedBattle = bm_battle:set_characters(UpdatedCharacters, Battle), +   DBQueries = +      lists:map +      ( +         fun (IX) -> +            sh_db_query:update_indexed +            ( +               bm_battle:get_characters_field(), +               IX, +               [ +                  sh_db_query:set_field +                  ( +                     bm_character:get_active_field(), +                     true +                  ) +               ] +            ) +         end, +         ModifiedIXs +      ), -   {UpdatedBattle, ModifiedIXs}. +   UpdatedBattle = bm_battle:set_characters(UpdatedCharacters, Battle), --spec add_activation_updates -   ( -      list(non_neg_integer()), -      bm_character_turn_update:type() -   ) -   -> bm_character_turn_update:type(). -add_activation_updates ([], Update) -> -   Update; -add_activation_updates ([IX|NextIXs], Update) -> -   add_activation_updates -   ( -      NextIXs, -      bm_character_turn_update:add_to_db -      ( -         sh_db_query:update_indexed -         ( -            bm_battle:get_characters_field(), -            IX, -            [sh_db_query:set_field(bm_character:get_active_field(), true)] -         ), -         Update -      ) -   ). +   {UpdatedBattle, DBQueries}.  -spec update     ( @@ -101,16 +108,23 @@ update (Update) ->     Data = bm_character_turn_update:get_data(Update),     Battle = bm_character_turn_data:get_battle(Data), -   S0Battle = set_player_turn_to_next(Battle), -   {S1Battle, NextPlayer} = reset_next_player_timeline(S0Battle), -   {S2Battle, ActivatedCharactersIX} = +   {S0Battle, DBQuery0} = set_player_turn_to_next(Battle), +   {S1Battle, NextPlayer, DBQuery1} = reset_next_player_timeline(S0Battle), +   {S2Battle, DBQueries} =        activate_next_players_characters(S1Battle, NextPlayer), -   S0Update = add_activation_updates(ActivatedCharactersIX, Update), +   S0Data = bm_character_turn_data:set_battle(S2Battle, Data), +   S0Update = bm_character_turn_update:set_data(S0Data, Update), -   UpdatedData = bm_character_turn_data:set_battle(S2Battle, Data), +   S1Update = +      lists:foldl +      ( +         fun bm_character_turn_update:add_to_db/2, +         S0Update, +         [DBQuery0|[DBQuery1|DBQueries]] +      ), -   bm_character_turn_update:set_data(UpdatedData, S0Update). +   S1Update.  -spec requires_update (bm_character_turn_update:type()) -> boolean().  requires_update (Update) -> @@ -118,7 +132,7 @@ requires_update (Update) ->     Battle = bm_character_turn_data:get_battle(Data),     Characters = bm_battle:get_characters(Battle), -   array_util:none(fun bm_character:get_is_active/1, Characters). +   sh_array_util:none(fun bm_character:get_is_active/1, Characters).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | 


