defmodule SimpleTable do
def init() do
%{
cards: SimplePoker.init_cards,
creator: nil,
seat_map: %{},
seat_order: []
}
end
def seat_count(table), do: table.seat_order |> Enum.count
def seat_order(table), do: table.seat_order
def find_seat(table, %{} = player), do: find_seat(table, player |> Player.get_id)
def find_seat(table, player_id), do: table.seat_map[player_id]
def add_seat(table, player) do
seat = Seat.init(player)
seat_id = seat |> Seat.get_id
table = put_in(table.seat_map[seat_id], seat)
add_to_order(table, seat_id)
end
def add_to_order(table, seat_id), do: update_in(table.seat_order, &(&1 ++ [seat_id]))
def remove_seat(table, %{} = player), do: remove_seat(table, player |> Player.get_id)
def remove_seat(table, player_id) do
table = update_in(table.seat_map, fn m -> Map.delete(m, player_id) end)
update_in(table.seat_order, fn o -> List.delete(o, player_id) end)
end
end