DEVELOPMENT ENVIRONMENT

~liljamo/deck-builder

ref: cc99931ccdecdbc1dff5dc3850fd03b1f5a056b1 deck-builder/client/src/api/game/mod.rs -rw-r--r-- 1.4 KiB
cc99931c — skye feat(api): update gamestate when joining 1 year, 7 months ago
                                                                                
f2af0141 skye
f2af0141 skye
f2af0141 skye
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
 * This file is part of laurelin_client
 * Copyright (C) 2023 Jonni Liljamo <jonni@liljamo.com>
 *
 * Licensed under GPL-3.0-only.
 * See LICENSE for licensing information.
 */

use serde::{Deserialize, Serialize};

use super::user::User;

mod forming;
pub use forming::*;

mod my_games;
pub use my_games::*;

mod join;
pub use join::*;

mod create;
pub use create::*;

mod create_action;
pub use create_action::*;

mod details;
pub use details::*;

#[derive(Deserialize, Serialize, Clone)]
pub enum Command {
    /// draw N amount of cards from deck
    Draw { amount: u32 },
    /// discard card from hand in slot N
    Discard { index: u32 },
    /// shuffle discard pile to deck
    ShuffleDiscardToDeck { seed: u32 },
}

#[derive(Deserialize, Clone)]
pub struct Action {
    pub id: String,
    pub created_at: String,
    pub updated_at: String,
    pub game_id: String,
    pub invoker: String,
    pub target: String,
    pub command: Command,
}

#[derive(Deserialize, Clone)]
pub struct Game {
    pub id: String,
    pub created_at: String,
    pub updated_at: String,
    pub ended_at: String,
    pub host_id: String,
    pub host: Option<User>,
    pub guest_id: String,
    pub guest: Option<User>,
    pub state: u8,
    pub turn: u8,
    pub actions: Option<Vec<Action>>,
}

pub const GAMESTATE_FORMING: u8 = 0;
pub const GAMESTATE_INPROGRESS: u8 = 1;
pub const GAMESTATE_FINISHED: u8 = 2;
pub const GAMESTATE_CANCELLED: u8 = 3;