| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'src/battlemap_instance.erl')
| -rw-r--r-- | src/battlemap_instance.erl | 53 | 
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). | 


