From 15515f36d7bbd53c7049c597ea2c6f942dc39ded Mon Sep 17 00:00:00 2001 From: nsensfel Date: Wed, 22 Nov 2017 15:53:46 +0100 Subject: Working on player turns. --- src/battlemap_instance.erl | 53 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) (limited to 'src/battlemap_instance.erl') 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). -- cgit v1.2.3-70-g09d2