summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/struct')
-rw-r--r--src/struct/battlemap.erl2
-rw-r--r--src/struct/battlemap_instance.erl36
-rw-r--r--src/struct/player_turn.erl10
-rw-r--r--src/struct/weapon.erl11
4 files changed, 38 insertions, 21 deletions
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 =