asobi_phase (asobi v0.35.4)
View SourceSummary
Types
-type phase_def() :: #{name := binary(), start => phase_start(), duration => pos_integer() | infinity, end_condition => fun((term()) -> boolean()), timers => [map()], config => map()}.
-type phase_event() :: {phase_started, binary()} | {phase_ended, binary()} | {all_phases_complete} | asobi_timer:timer_event().
-type phase_start() :: prev_ended | {players, pos_integer()} | {players_ratio, float()} | all_ready | {event, atom()} | {timer, pos_integer()}.
-opaque phase_state()
Functions
-spec config(phase_state()) -> map().
-spec current(phase_state()) -> binary() | undefined.
-spec info(phase_state()) -> map().
-spec init([phase_def()]) -> {[phase_event()], phase_state()}.
-spec is_complete(undefined | phase_state() | map()) -> boolean().
-spec notify(term(), phase_state()) -> {[phase_event()], phase_state()}.
-spec pause(phase_state()) -> phase_state().
-spec remaining(phase_state()) -> pos_integer() | infinity.
-spec resume(phase_state()) -> phase_state().
-spec tick(pos_integer(), phase_state()) -> {[phase_event()], phase_state()}.
-spec timers_info(phase_state()) -> #{binary() => map()}.