use crate::common::message::{RoomId, RpsData};
use super::{move_kind::UserMoveKind, state::UserMoveMethods};
#[derive(Clone, Copy, Debug)]
pub enum SimpleUserMove {
JoinRoom(RoomId),
Play(RpsData),
ConfirmPlay,
BackToRoom,
}
impl From<&SimpleUserMove> for UserMoveKind {
fn from(value: &SimpleUserMove) -> Self {
match value {
SimpleUserMove::JoinRoom(_) => UserMoveKind::JoinRoom,
SimpleUserMove::Play(_) => UserMoveKind::Play,
SimpleUserMove::ConfirmPlay => UserMoveKind::ConfirmPlay,
SimpleUserMove::BackToRoom => UserMoveKind::BackToRoom,
}
}
}
impl UserMoveMethods for SimpleUserMove {
fn allowed_state(&self) -> super::state::RpsState {
Into::<UserMoveKind>::into(self).allowed_state()
}
fn resulting_state(&self) -> super::state::RpsState {
Into::<UserMoveKind>::into(self).resulting_state()
}
}