summaryrefslogtreecommitdiff |
diff options
author | nsensfel <SpamShield0@noot-noot.org> | 2017-11-22 15:53:46 +0100 |
---|---|---|
committer | nsensfel <SpamShield0@noot-noot.org> | 2017-11-22 15:53:46 +0100 |
commit | 15515f36d7bbd53c7049c597ea2c6f942dc39ded (patch) | |
tree | 7a258c5c2cf403efd9dfb8f4d0900281bd96d39a /src | |
parent | 2f07232e91383752345e9a316a038620b232e70f (diff) |
Working on player turns.
Diffstat (limited to 'src')
-rw-r--r-- | src/battlemap_instance.erl | 53 | ||||
-rw-r--r-- | src/timed_cache_data.hrl | 2 |
2 files changed, 53 insertions, 2 deletions
diff --git a/src/battlemap_instance.erl b/src/battlemap_instance.erl index b18fa4e..37811b3 100644 --- a/src/battlemap_instance.erl +++ b/src/battlemap_instance.erl @@ -4,7 +4,9 @@ [ get_char_instances/1, get_char_instance/2, - set_char_instance/3 + set_char_instance/3, + can_play_char_instance/3, + post_play_char_instance/2 ] ). @@ -17,6 +19,55 @@ get_char_instances (BattlemapInstance) -> dict:to_list(BattlemapInstance#battlemap_instance.chars) ). +can_play_char_instance +( + BattlemapInstance, + PlayerID, + CharInstID +) -> + ( + (array:get(BattlemapInstance#battlemap_instance.curr_player) =:= PlayerID) + and + lists:member(CharInstID, BattlemapInstance#battlemap_instance.rem_chars) + ). + +post_play_char_instance (BattlemapInstance, CharInstID) -> + case BattlemapInstance#battlemap_instance.rem_chars of + [CharInstID|[]] -> + NextPlayer = + ( + (BattlemapInstance#battlemap_instance.curr_player + 1) + rem + array:size(BattlemapInstance#battlemap_instance.players) + ), + BattlemapInstance#battlemap_instance + { + curr_player = NextPlayer, + rem_chars = + lists:filtermap + ( + fun ({K, V}) -> + case character_instance:get_owner(V) of + NextPlayer -> {true, K}; + _ -> false + end + end, + dict:to_list(BattlemapInstance#battlemap_instance.chars) + ) + }; + + _ -> + BattlemapInstance#battlemap_instance + { + rem_chars = + lists:delete + ( + CharInstID, + BattlemapInstance#battlemap_instance.rem_chars + ) + } + end. + get_char_instance (BattlemapInstance, CharInstID) -> dict:fetch(CharInstID, BattlemapInstance#battlemap_instance.chars). diff --git a/src/timed_cache_data.hrl b/src/timed_cache_data.hrl index e91be25..23441d3 100644 --- a/src/timed_cache_data.hrl +++ b/src/timed_cache_data.hrl @@ -1,6 +1,6 @@ %% TODO: add types. -record(battlemap, {id, width, height, content, instances}). --record(battlemap_instance, {id, chars, curr_player, rem_chars, last_turn}). +-record(battlemap_instance, {id, chars, curr_player, players, rem_chars, last_turn}). -record(character, {id, name, icon, portrait, mov_pts, atk_rg}). -record(character_turn, {id, path, target}). -record(player, {id, battlemaps, characters}). |