| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/struct/battlemap_instance.erl')
| -rw-r--r-- | src/struct/battlemap_instance.erl | 42 | 
1 files changed, 42 insertions, 0 deletions
| diff --git a/src/struct/battlemap_instance.erl b/src/struct/battlemap_instance.erl index 9a57d09..d031ccd 100644 --- a/src/struct/battlemap_instance.erl +++ b/src/struct/battlemap_instance.erl @@ -38,6 +38,13 @@     ]  ). +-export +( +   [ +      random/4 +   ] +). +  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -92,3 +99,38 @@ set_last_turns_effects (Effects, BattlemapInstance) ->     {        last_turns_effects = Effects     }. + +random (ID, PlayersAsList, Battlemap, Characters) -> +   BattlemapWidth = battlemap:get_width(Battlemap), +   BattlemapHeight = battlemap:get_height(Battlemap), +   CharacterInstancesAsList = +      lists:mapfoldl +      ( +         fun (Character, ForbiddenLocations) -> +            NewCharacterInstance = +               character_instance:random +               ( +                  Character, +                  BattlemapWidth, +                  BattlemapHeight, +                  ForbiddenLocations +               ), +            NewCharacterInstanceLocation = +               character_instance:get_location(NewCharacterInstance), +            { +               NewCharacterInstance, +               [NewCharacterInstanceLocation|ForbiddenLocations] +            } +         end, +         Characters +      ), + +   #battlemap_instance +   { +      id = ID, +      battlemap = Battlemap, +      character_instances = array:from_list(CharacterInstancesAsList), +      players = array:from_list(PlayersAsList), +      current_player_turn = player_turn:new(0, 0), +      last_turns_effects = [] +   }. | 


