From 6494b74a45e27085fd81836f7b8c969431e8ff3c Mon Sep 17 00:00:00 2001 From: nsensfel Date: Mon, 26 Feb 2018 17:16:08 +0100 Subject: Got it to work, I think. --- src/struct/battlemap.erl | 2 +- src/struct/battlemap_instance.erl | 36 +++++++++++++++++++++++++----------- src/struct/player_turn.erl | 10 +++++----- src/struct/weapon.erl | 11 +++++++---- 4 files changed, 38 insertions(+), 21 deletions(-) (limited to 'src/struct') diff --git a/src/struct/battlemap.erl b/src/struct/battlemap.erl index b999436..733f76c 100644 --- a/src/struct/battlemap.erl +++ b/src/struct/battlemap.erl @@ -68,5 +68,5 @@ random (ID, Width, Height) -> id = ID, width = Width, height = Height, - tile_ids = TileIDs + tile_ids = array:from_list(TileIDs) }. 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 = [] }. diff --git a/src/struct/player_turn.erl b/src/struct/player_turn.erl index b973135..e49156e 100644 --- a/src/struct/player_turn.erl +++ b/src/struct/player_turn.erl @@ -8,7 +8,7 @@ player_turn, { number, - player_id + player_ix } ). @@ -27,7 +27,7 @@ ( [ get_number/1, - get_player_id/1 + get_player_ix/1 ] ). @@ -39,13 +39,13 @@ %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% Accessors -new (Number, PlayerID) -> +new (Number, PlayerIX) -> #player_turn { number = Number, - player_id = PlayerID + player_ix = PlayerIX }. get_number (PlayerTurn) -> PlayerTurn#player_turn.number. -get_player_id (PlayerTurn) -> PlayerTurn#player_turn.player_id. +get_player_ix (PlayerTurn) -> PlayerTurn#player_turn.player_ix. diff --git a/src/struct/weapon.erl b/src/struct/weapon.erl index ca74ada..41f99f8 100644 --- a/src/struct/weapon.erl +++ b/src/struct/weapon.erl @@ -24,16 +24,17 @@ ( [ get_id/1, - random_id/0 + get_range_type/1, + get_ranges/1, + get_damages/1 ] ). -export ( [ + random_id/0, from_id/1, - get_ranges/1, - get_damages/1, apply_to_attributes/2 ] ). @@ -57,6 +58,8 @@ damages_of_type (melee, light) -> {15, 30}. %%%% Accessors get_id (Wp) -> Wp#weapon.id. +get_range_type (Wp) -> Wp#weapon.range_type. + get_ranges (Wp) -> ranges_of_type(Wp#weapon.range_type, Wp#weapon.range_mod). get_damages (Wp) -> @@ -293,7 +296,7 @@ random_id () -> apply_to_attributes (Attributes, Weapon) -> Dexterity = attributes:get_dexterity(Attributes), - Speed = attributes:get_dexterity(Attributes), + Speed = attributes:get_speed(Attributes), RangeModifier = Weapon#weapon.range_mod, DamageModifier = Weapon#weapon.damage_mod, WithRangeModifier = -- cgit v1.2.3-70-g09d2