Packages

Gleam/Lustre bindings for RCade's inputs

Current section

Files

Jump to
rcade_inputs src rcade inputs spinner.gleam
Raw

src/rcade/inputs/spinner.gleam

import rcade/player
/// State of a player's spinner (rotary encoder).
pub type Spinner {
Spinner(step_delta: Int, angle: Float, step_resolution: Int)
}
/// Read a player's spinner state. The step delta is is reset to 0 on read.
pub fn read(player: player.Player) -> Spinner {
do_read(player.to_int(player))
}
@external(javascript, "./spinner_ffi.mjs", "read_spinner")
fn do_read(player: Int) -> Spinner
/// Reset a player's spinner angle to 0.
pub fn reset_angle(player: player.Player) -> Nil {
do_reset_angle(player.to_int(player))
}
@external(javascript, "./spinner_ffi.mjs", "reset_angle")
fn do_reset_angle(player: Int) -> Nil
/// Whether the spinner hardware is connected.
@external(javascript, "./spinner_ffi.mjs", "connected")
pub fn connected() -> Bool