| summaryrefslogtreecommitdiff | 
diff options
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}). | 


