asobi_phase (asobi v0.35.4)

View Source

Summary

Types

phase_def/0

-type phase_def() ::
          #{name := binary(),
            start => phase_start(),
            duration => pos_integer() | infinity,
            end_condition => fun((term()) -> boolean()),
            timers => [map()],
            config => map()}.

phase_event/0

-type phase_event() ::
          {phase_started, binary()} |
          {phase_ended, binary()} |
          {all_phases_complete} |
          asobi_timer:timer_event().

phase_start/0

-type phase_start() ::
          prev_ended |
          {players, pos_integer()} |
          {players_ratio, float()} |
          all_ready |
          {event, atom()} |
          {timer, pos_integer()}.

phase_state/0

-opaque phase_state()

Functions

config(PS)

-spec config(phase_state()) -> map().

current(PS)

-spec current(phase_state()) -> binary() | undefined.

info(PS)

-spec info(phase_state()) -> map().

init(Phases)

-spec init([phase_def()]) -> {[phase_event()], phase_state()}.

is_complete(_)

-spec is_complete(undefined | phase_state() | map()) -> boolean().

notify(Event, PS)

-spec notify(term(), phase_state()) -> {[phase_event()], phase_state()}.

pause(PS)

-spec pause(phase_state()) -> phase_state().

remaining(PS)

-spec remaining(phase_state()) -> pos_integer() | infinity.

resume(PS)

-spec resume(phase_state()) -> phase_state().

tick(DeltaMs, PS)

-spec tick(pos_integer(), phase_state()) -> {[phase_event()], phase_state()}.

timers_info(_)

-spec timers_info(phase_state()) -> #{binary() => map()}.