summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2017-11-22 15:53:46 +0100
committernsensfel <SpamShield0@noot-noot.org>2017-11-22 15:53:46 +0100
commit15515f36d7bbd53c7049c597ea2c6f942dc39ded (patch)
tree7a258c5c2cf403efd9dfb8f4d0900281bd96d39a /src/battlemap_instance.erl
parent2f07232e91383752345e9a316a038620b232e70f (diff)
Working on player turns.
Diffstat (limited to 'src/battlemap_instance.erl')
-rw-r--r--src/battlemap_instance.erl53
1 files changed, 52 insertions, 1 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).