summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/struct/battlemap_instance.erl')
-rw-r--r-- | src/struct/battlemap_instance.erl | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/src/struct/battlemap_instance.erl b/src/struct/battlemap_instance.erl index d031ccd..bae7a4a 100644 --- a/src/struct/battlemap_instance.erl +++ b/src/struct/battlemap_instance.erl @@ -10,7 +10,7 @@ id, battlemap, character_instances, - players, + player_ids, current_player_turn, last_turns_effects } @@ -26,13 +26,13 @@ get_id/1, get_battlemap/1, get_character_instances/1, - get_players/1, + get_player_ids/1, get_current_player_turn/1, get_last_turns_effects/1, set_battlemap/2, set_character_instances/2, - set_players/2, + set_player_ids/2, set_current_player_turn/2, set_last_turns_effects/2 ] @@ -61,8 +61,8 @@ get_battlemap (BattlemapInstance) -> get_character_instances (BattlemapInstance) -> BattlemapInstance#battlemap_instance.character_instances. -get_players (BattlemapInstance) -> - BattlemapInstance#battlemap_instance.players. +get_player_ids (BattlemapInstance) -> + BattlemapInstance#battlemap_instance.player_ids. get_current_player_turn (BattlemapInstance) -> BattlemapInstance#battlemap_instance.current_player_turn. @@ -82,10 +82,10 @@ set_character_instances (CharacterInstances, BattlemapInstance) -> character_instances = CharacterInstances }. -set_players (Players, BattlemapInstance) -> +set_player_ids (Players, BattlemapInstance) -> BattlemapInstance#battlemap_instance { - players = Players + player_ids = Players }. set_current_player_turn (PlayerTurn, BattlemapInstance) -> @@ -103,10 +103,11 @@ set_last_turns_effects (Effects, BattlemapInstance) -> random (ID, PlayersAsList, Battlemap, Characters) -> BattlemapWidth = battlemap:get_width(Battlemap), BattlemapHeight = battlemap:get_height(Battlemap), - CharacterInstancesAsList = + {CharacterInstancesAsList, _ForbiddenLocations} = lists:mapfoldl ( fun (Character, ForbiddenLocations) -> + CharacterOwner = character:get_owner_id(Character), NewCharacterInstance = character_instance:random ( @@ -115,13 +116,26 @@ random (ID, PlayersAsList, Battlemap, Characters) -> BattlemapHeight, ForbiddenLocations ), + NewCharacterInstanceActive = + case CharacterOwner of + <<"0">> -> + character_instance:set_is_active + ( + true, + NewCharacterInstance + ); + + _ -> + NewCharacterInstance + end, NewCharacterInstanceLocation = - character_instance:get_location(NewCharacterInstance), + character_instance:get_location(NewCharacterInstanceActive), { - NewCharacterInstance, + NewCharacterInstanceActive, [NewCharacterInstanceLocation|ForbiddenLocations] } end, + [], Characters ), @@ -130,7 +144,7 @@ random (ID, PlayersAsList, Battlemap, Characters) -> id = ID, battlemap = Battlemap, character_instances = array:from_list(CharacterInstancesAsList), - players = array:from_list(PlayersAsList), + player_ids = array:from_list(PlayersAsList), current_player_turn = player_turn:new(0, 0), last_turns_effects = [] }. |