shared/domain/jig/
player.rsuse std::ops::Deref;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Debug)]
#[serde(rename_all = "camelCase")]
pub struct JigPlayerSettings {
#[serde(default)]
pub direction: TextDirection,
#[serde(default)]
pub scoring: bool,
#[serde(default)]
pub drag_assist: bool,
}
impl Default for JigPlayerSettings {
fn default() -> Self {
Self {
direction: TextDirection::default(),
scoring: false,
drag_assist: false,
}
}
}
#[derive(Serialize, Deserialize, Copy, Clone, Debug, PartialEq)]
#[cfg_attr(feature = "backend", derive(sqlx::Type))]
#[repr(i16)]
pub enum TextDirection {
#[serde(rename = "ltr")]
LeftToRight = 0,
#[serde(rename = "rtl")]
RightToLeft = 1,
}
impl Default for TextDirection {
fn default() -> Self {
Self::LeftToRight
}
}
impl TextDirection {
pub fn is_ltr(&self) -> bool {
self == &Self::LeftToRight
}
pub fn is_rtl(&self) -> bool {
self == &Self::RightToLeft
}
}
#[derive(Clone, Default, Serialize, Deserialize, Debug, Eq, PartialEq)]
pub struct ModuleConfig {
pub navigation_handler: PlayerNavigationHandler,
pub timer: Option<Seconds>,
}
#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
pub enum PlayerNavigationHandler {
Player,
Module,
}
impl Default for PlayerNavigationHandler {
fn default() -> Self {
Self::Player
}
}
#[derive(Clone, Serialize, Deserialize, Debug, Eq, PartialEq)]
pub struct Seconds(pub u32);
impl Deref for Seconds {
type Target = u32;
fn deref(&self) -> &Self::Target {
&self.0
}
}