summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2017-11-28 13:38:04 +0100 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2017-11-28 13:38:04 +0100 |
commit | 80358376b9300a0d73cb8b62dfa9fdd65240ca66 (patch) | |
tree | 6eb82383ba1fdfb33c68dbe699bc2a4b68763d24 /src | |
parent | 299a37b6d245dbb9806f4922cf492009775a8bf0 (diff) |
Starting to work on attacks.
I find it difficult to keep the code tidy in Erlang...
Diffstat (limited to 'src')
-rw-r--r-- | src/battlemap.erl | 5 | ||||
-rw-r--r-- | src/battlemap_instance.erl | 14 | ||||
-rw-r--r-- | src/character.erl | 7 | ||||
-rw-r--r-- | src/character_instance.erl | 17 | ||||
-rw-r--r-- | src/character_shim.erl | 1 | ||||
-rw-r--r-- | src/database_shim.erl | 3 | ||||
-rw-r--r-- | src/timed_cache_data.hrl | 4 |
7 files changed, 39 insertions, 12 deletions
diff --git a/src/battlemap.erl b/src/battlemap.erl index d8940e9..ba89733 100644 --- a/src/battlemap.erl +++ b/src/battlemap.erl @@ -1,5 +1,8 @@ -module(battlemap). - +-export([dist/2]). -include("timed_cache_data.hrl"). -include("battlemap/cross.erl"). + +dist ({OX, OY}, {DX, DY}) -> + (abs(OX - DX) + abs(OY + DY)). diff --git a/src/battlemap_instance.erl b/src/battlemap_instance.erl index 3f4b6cd..afe6e32 100644 --- a/src/battlemap_instance.erl +++ b/src/battlemap_instance.erl @@ -27,13 +27,13 @@ can_play_char_instance ) -> ( ( - array:get - ( - BattlemapInstance#battlemap_instance.curr_player, - BattlemapInstance#battlemap_instance.players - ) - =:= - PlayerID + array:get + ( + BattlemapInstance#battlemap_instance.curr_player, + BattlemapInstance#battlemap_instance.players + ) + =:= + PlayerID ) and lists:member(CharInstID, BattlemapInstance#battlemap_instance.rem_chars) diff --git a/src/character.erl b/src/character.erl index f596570..4da1684 100644 --- a/src/character.erl +++ b/src/character.erl @@ -2,10 +2,15 @@ -export ( [ - get_movement_points/1 + get_movement_points/1, + get_attack_range/1, + get_max_health/1 ] ). -include("timed_cache_data.hrl"). get_movement_points (Char) -> Char#character.mov_pts. +get_attack_range (Char) -> Char#character.atk_rg. + +get_max_health (Char) -> Char#character.health. diff --git a/src/character_instance.erl b/src/character_instance.erl index a38be5d..e1cf7fe 100644 --- a/src/character_instance.erl +++ b/src/character_instance.erl @@ -3,6 +3,8 @@ ( [ set_location/3, + mod_health/3, + is_dead/1, % is_alive is reserved. get_location/1, get_owner/1 ] @@ -17,6 +19,21 @@ set_location (CharInst, X, Y) -> y = Y }. +mod_health (CharInst, MaxHealth, HealthMod) -> + NewHealth = (CharInst#character_instance.health + HealthMod), + if + (NewHealth < 0) -> + CharInst#character_instance{ health = 0 }; + + (NewHealth > MaxHealth) -> + CharInst#character_instance{ health = MaxHealth }; + + true -> + CharInst#character_instance{ health = NewHealth } + end. + +is_dead (CharInst) -> (CharInst#character_instance.health == 0). + get_location (CharInst) -> {CharInst#character_instance.x, CharInst#character_instance.y}. diff --git a/src/character_shim.erl b/src/character_shim.erl index 0ab33cb..47d9cac 100644 --- a/src/character_shim.erl +++ b/src/character_shim.erl @@ -19,6 +19,7 @@ generate_char (N) -> name = IDAsString, % Name icon = IDAsString, % Icon portrait = IDAsString, % Portrait + health = (rand:uniform(5) + 1), mov_pts = (rand:uniform(10) + 10), % Movement Points atk_rg = (rand:uniform(5) - 1) % Attack Range }. diff --git a/src/database_shim.erl b/src/database_shim.erl index 1966b6b..c840009 100644 --- a/src/database_shim.erl +++ b/src/database_shim.erl @@ -41,7 +41,8 @@ generate_char_instances (Battlemap, Characters) -> { x = rand:uniform(Battlemap#battlemap.width - 1), y = rand:uniform(Battlemap#battlemap.height - 1), - team = (rand:uniform(2) - 1) + team = (rand:uniform(2) - 1), + health = Char#character.health } } end, diff --git a/src/timed_cache_data.hrl b/src/timed_cache_data.hrl index 23441d3..89e0f41 100644 --- a/src/timed_cache_data.hrl +++ b/src/timed_cache_data.hrl @@ -1,9 +1,9 @@ %% TODO: add types. -record(battlemap, {id, width, height, content, instances}). -record(battlemap_instance, {id, chars, curr_player, players, rem_chars, last_turn}). --record(character, {id, name, icon, portrait, mov_pts, atk_rg}). +-record(character, {id, name, icon, portrait, health, mov_pts, atk_rg}). -record(character_turn, {id, path, target}). -record(player, {id, battlemaps, characters}). %% Not stored in its own timed cache. --record(character_instance, {x, y, team}). +-record(character_instance, {x, y, health, team}). |