Packages

Elixir parser for BeatLeader replays

Current section

Files

Jump to
bsor lib wall.ex
Raw

lib/wall.ex

defmodule BSOR.WallArray do
defstruct [:count, :walls]
def decode(file) do
count = file |> BSOR.Data.decode_int()
%__MODULE__{count: count, walls: decode_walls(file, count)}
end
defp decode_walls(file, remaining_frames, frames \\ []) do
case remaining_frames do
0 -> frames |> Enum.reverse()
_ -> [BSOR.Wall.decode(file) | decode_walls(file, remaining_frames - 1, frames)]
end
end
end
defmodule BSOR.Wall do
defstruct [:id, :energy, :time, :spawn_time]
def decode(file) do
%__MODULE__{
id: file |> BSOR.Data.decode_int(),
energy: file |> BSOR.Data.decode_float(),
time: file |> BSOR.Data.decode_float(),
spawn_time: file |> BSOR.Data.decode_float()
}
end
end