summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/struct/battlemap_instance.erl')
-rw-r--r--src/struct/battlemap_instance.erl42
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 = []
+ }.