summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-02-26 17:16:08 +0100
committernsensfel <SpamShield0@noot-noot.org>2018-02-26 17:16:08 +0100
commit6494b74a45e27085fd81836f7b8c969431e8ff3c (patch)
treee344a24fa2e9a2ee198314c0552c46b235072009 /src/struct/battlemap_instance.erl
parentfd4d031ab5b31763d376c663cc049f62ee389243 (diff)
Got it to work, I think.
Diffstat (limited to 'src/struct/battlemap_instance.erl')
-rw-r--r--src/struct/battlemap_instance.erl36
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 = []
}.