zero_trust_rps/common/client/
simple_move.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use crate::common::message::{RoomId, RpsData};

use super::state::RpsState;

#[derive(Clone, Copy, Debug)]
pub enum SimpleUserMove {
    JoinRoom(RoomId),
    Play(RpsData),
    ConfirmPlay,
    BackToRoom,
}

impl SimpleUserMove {
    pub fn allowed_state(&self) -> RpsState {
        match self {
            SimpleUserMove::JoinRoom(_) => RpsState::BeforeRoom,
            SimpleUserMove::Play(_) => RpsState::InRoom,
            SimpleUserMove::ConfirmPlay => RpsState::Played,
            SimpleUserMove::BackToRoom => RpsState::Confirmed,
        }
    }
}