Current section

Files

Jump to
islands_engine lib islands engine board set.ex
Raw

lib/islands/engine/board/set.ex

defmodule Islands.Engine.Board.Set do
@moduledoc false
use PersistConfig
alias Islands.Engine.Board
@board_set_path Application.get_env(@app, :board_set_path)
@spec persist_board(Board.t()) :: :ok
def persist_board(%Board{} = board) do
@board_set_path
|> File.write!(
case File.read(@board_set_path) do
{:ok, binary} -> :erlang.binary_to_term(binary)
{:error, _reason} -> MapSet.new()
end
|> MapSet.put(board)
|> :erlang.term_to_binary()
)
end
@spec restore_board :: Board.t()
def restore_board do
@board_set_path
|> File.read!()
|> :erlang.binary_to_term()
|> MapSet.to_list()
|> Enum.random()
end
end