| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/battle')
| -rw-r--r-- | src/battle/mechanic/btl_turn_progression.erl | 38 | ||||
| -rw-r--r-- | src/battle/struct/btl_battle.erl | 43 | ||||
| -rw-r--r-- | src/battle/struct/btl_player.erl | 11 | 
3 files changed, 63 insertions, 29 deletions
| diff --git a/src/battle/mechanic/btl_turn_progression.erl b/src/battle/mechanic/btl_turn_progression.erl index 6286cc1..ed181c5 100644 --- a/src/battle/mechanic/btl_turn_progression.erl +++ b/src/battle/mechanic/btl_turn_progression.erl @@ -12,7 +12,6 @@        handle/1     ]  ). -  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -20,7 +19,7 @@     (        btl_battle:type()     ) -   -> {btl_battle:type(), ataxic:basic()}. +   -> {non_neg_integer(), btl_battle:type(), ataxic:basic()}.  prepare_player_turn_for_next_player (Battle) ->     Players = btl_battle:get_players(Battle),     CurrentPlayerTurn = btl_battle:get_current_player_turn(Battle), @@ -36,16 +35,19 @@ prepare_player_turn_for_next_player (Battle) ->           Battle        ), -   {UpdatedBattle, BattleAtaxiaUpdate}. +   { +      btl_player_turn:get_player_ix(UpdatedPlayerTurn), +      UpdatedBattle, +      BattleAtaxiaUpdate +   }.  -spec reset_next_player_timeline     ( +      non_neg_integer(),        btl_battle:type()     ) -   -> {btl_battle:type(), btl_player:type(), ataxic:basic()}. -reset_next_player_timeline (Battle) -> -   NextPlayerTurn = btl_battle:get_current_player_turn(Battle), -   NextPlayerIX = btl_player_turn:get_player_ix(NextPlayerTurn), +   -> {btl_battle:type(), ataxic:basic()}. +reset_next_player_timeline (NextPlayerIX, Battle) ->     NextPlayer = btl_battle:get_player(NextPlayerIX, Battle),     {UpdatedNextPlayer, PlayerAtaxiaUpdate} = @@ -60,17 +62,16 @@ reset_next_player_timeline (Battle) ->           Battle        ), -   {UpdatedBattle, UpdatedNextPlayer, BattleAtaxiaUpdate}. +   {UpdatedBattle, BattleAtaxiaUpdate}.  -spec activate_next_players_characters     ( -      btl_battle:type(), -      btl_player:type() +      non_neg_integer(), +      btl_battle:type()     )     -> {btl_battle:type(), ataxic:basic()}. -activate_next_players_characters (Battle, NextPlayer) -> -   NextPlayerIX = btl_player:get_index(NextPlayer), +activate_next_players_characters (NextPlayerIX, Battle) ->     AllCharacters = btl_battle:get_characters(Battle),     {ResultingBattle, BattleAtaxicUpdates} = @@ -110,14 +111,14 @@ activate_next_players_characters (Battle, NextPlayer) ->  activate_next_player (Update) ->     {S0Update, Battle} = btl_character_turn_update:get_battle(Update), -   {S0Battle, BattleAtaxiaUpdate0} = +   {NextPlayerIX, S0Battle, BattleAtaxiaUpdate0} =        prepare_player_turn_for_next_player(Battle), -   {S1Battle, NextPlayer, BattleAtaxiaUpdate1} = -      reset_next_player_timeline(S0Battle), +   {S1Battle, BattleAtaxiaUpdate1} = +      reset_next_player_timeline(NextPlayerIX, S0Battle),     {S2Battle, BattleAtaxiaUpdate2} = -      activate_next_players_characters(S1Battle, NextPlayer), +      activate_next_players_characters(NextPlayerIX, S1Battle),     S1Update =        btl_character_turn_update:ataxia_set_battle @@ -138,10 +139,7 @@ activate_next_player (Update) ->     S2Update =        btl_character_turn_update:add_to_timeline        ( -         btl_turn_result:new_player_turn_started -         ( -            btl_player:get_index(NextPlayer) -         ), +         btl_turn_result:new_player_turn_started(NextPlayerIX),           S1Update        ), diff --git a/src/battle/struct/btl_battle.erl b/src/battle/struct/btl_battle.erl index 01ab65b..aedd8da 100644 --- a/src/battle/struct/btl_battle.erl +++ b/src/battle/struct/btl_battle.erl @@ -56,6 +56,9 @@        ataxia_set_character/3,        ataxia_set_character/4, +      add_character/2, +      ataxia_add_character/2, +        set_players/2,        ataxia_set_players/2,        ataxia_set_players/3, @@ -64,6 +67,9 @@        ataxia_set_player/3,        ataxia_set_player/4, +      add_player/2, +      ataxia_add_player/2, +        set_current_player_turn/2,        ataxia_set_current_player_turn/2,        ataxia_set_current_player_turn/3, @@ -243,6 +249,27 @@ set_character (IX, Character, Battle) ->        characters = orddict:store(IX, Character, Battle#battle.characters)     }. +-spec add_character +   ( +      btl_character:unresolved(), +      type() +   ) +   -> {non_neg_integer(), type()}. +add_character (Character, Battle) -> +   IX = orddict:size(Battle#battle.characters), +   {IX, set_character(IX, Character, Battle)}. + +-spec ataxia_add_character +   ( +      btl_character:unresolved(), +      type() +   ) +   -> {non_neg_integer(), type(), ataxic:basic()}. +ataxia_add_character (Character, Battle) -> +   IX = orddict:size(Battle#battle.characters), +   {S0Battle, AtaxicUpdate} = ataxia_set_character(IX, Character, Battle), +   {IX, S0Battle, AtaxicUpdate}. +  -spec ataxia_set_character     (        non_neg_integer(), @@ -373,6 +400,22 @@ ataxia_set_player (IX, Player, PlayerUpdate, Battle) ->        )     }. +-spec add_player (btl_player:type(), type()) -> {non_neg_integer(), type()}. +add_player (Player, Battle) -> +   IX = orddict:size(Battle#battle.players), +   {IX, set_player(IX, Player, Battle)}. + +-spec ataxia_add_player +   ( +      btl_player:type(), +      type() +   ) +   -> {non_neg_integer(), type(), ataxic:basic()}. +ataxia_add_player (Player, Battle) -> +   IX = orddict:size(Battle#battle.players), +   {S0Battle, AtaxicUpdate} = ataxia_set_player(IX, Player, Battle), +   {IX, S0Battle, AtaxicUpdate}. +  -spec set_current_player_turn (btl_player_turn:type(), type()) -> type().  set_current_player_turn (PlayerTurn, Battle) ->     Battle#battle diff --git a/src/battle/struct/btl_player.erl b/src/battle/struct/btl_player.erl index 604efca..d677790 100644 --- a/src/battle/struct/btl_player.erl +++ b/src/battle/struct/btl_player.erl @@ -8,7 +8,6 @@  (     player,     { -      ix :: non_neg_integer(),        id :: shr_player:id(),        character_ix :: non_neg_integer(),        timeline :: list(any()), @@ -29,7 +28,6 @@  (     [        get_id/1, -      get_index/1,        get_luck/1,        get_summary_index/1,        get_summary_category/1, @@ -59,7 +57,7 @@  -export  (     [ -      new/5 +      new/4     ]  ). @@ -73,9 +71,6 @@  -spec get_id (type()) -> shr_player:id().  get_id (Player) -> Player#player.id. --spec get_index (type()) -> non_neg_integer(). -get_index (Player) -> Player#player.ix. -  -spec get_luck (type()) -> integer().  get_luck (Player) -> Player#player.luck. @@ -166,15 +161,13 @@ ataxia_reset_timeline (Player) ->  -spec new     (        non_neg_integer(), -      non_neg_integer(),        shr_player:id(),        non_neg_integer(),        shr_battle_summary:category()     ) -> type(). -new (IX, CharacterIX, ID, SummaryIX, SummaryCategory) -> +new (CharacterIX, ID, SummaryIX, SummaryCategory) ->     #player     { -      ix = IX,        character_ix = CharacterIX,        id = ID,        is_active = true, | 


