osu_api/api_v1/models/
mod.rs

1mod beatmaps;
2mod de;
3mod recent;
4
5pub use beatmaps::{GetBeatmapsProps, GetBeatmapsResp};
6pub use recent::{GetUserRecentProp, GetUserRecentResp};
7
8use serde::{Deserialize, Serialize};
9
10#[derive(Debug, Serialize, Deserialize)]
11pub enum GameMode {
12  Standard,
13  Taiko,
14  CatchTheBeat,
15  Mania,
16}
17
18impl ToString for GameMode {
19  fn to_string(&self) -> String {
20    self.as_ref().to_string()
21  }
22}
23
24impl AsRef<str> for GameMode {
25  fn as_ref(&self) -> &str {
26    use GameMode::*;
27
28    match self {
29      Standard => "0",
30      Taiko => "1",
31      CatchTheBeat => "2",
32      Mania => "3",
33    }
34  }
35}
36
37#[derive(Debug)]
38pub enum UserId<'u> {
39  Id(u64),
40  Username(&'u str),
41}
42
43impl From<u64> for UserId<'_> {
44  fn from(id: u64) -> Self {
45    Self::Id(id)
46  }
47}
48
49impl<'a> From<&'a str> for UserId<'a> {
50  fn from(name: &'a str) -> Self {
51    Self::Username(name)
52  }
53}
54
55bitflags::bitflags! {
56  pub struct ModsFlag: u64 {
57    const NONE              = 0;
58    const NOFAIL            = 1;
59    const EASY              = 2;
60    const TOUCHDEVICE       = 4;
61    const HIDDEN            = 8;
62    const HARDROCK          = 16;
63    const SUDDENDEATH       = 32;
64    const DOUBLETIME        = 64;
65    const RELAX             = 128;
66    const HALFTIME          = 256;
67    const NIGHTCORE         = 512 | Self::DOUBLETIME.bits;
68    const FLASHLIGHT        = 1024;
69    const AUTOPLAY          = 2048;
70    const SPUNOUT           = 4096;
71    const RELAX2            = 8192;    // Autopilot
72    const PERFECT           = 16384 | Self::SUDDENDEATH.bits;
73    const KEY4              = 32768;
74    const KEY5              = 65536;
75    const KEY6              = 131072;
76    const KEY7              = 262144;
77    const KEY8              = 524288;
78    const FADEIN            = 1048576;
79    const RANDOM            = 2097152;
80    const CINEMA            = 4194304;
81    const TARGET            = 8388608;
82    const KEY9              = 16777216;
83    const KEYCOOP           = 33554432;
84    const KEY1              = 67108864;
85    const KEY3              = 134217728;
86    const KEY2              = 268435456;
87    const SCOREV2           = 536870912;
88    const MIRROR            = 1073741824;
89    const KEYMOD            = Self::KEY1.bits
90                            | Self::KEY2.bits
91                            | Self::KEY3.bits
92                            | Self::KEY4.bits
93                            | Self::KEY5.bits
94                            | Self::KEY6.bits
95                            | Self::KEY7.bits
96                            | Self::KEY8.bits
97                            | Self::KEY9.bits
98                            | Self::KEYCOOP.bits;
99    const FREEMODALLOWED    = Self::NOFAIL.bits
100                            | Self::EASY.bits
101                            | Self::HIDDEN.bits
102                            | Self::HARDROCK.bits
103                            | Self::SUDDENDEATH.bits
104                            | Self::FLASHLIGHT.bits
105                            | Self::FADEIN.bits
106                            | Self::RELAX.bits
107                            | Self::RELAX2.bits
108                            | Self::SPUNOUT.bits
109                            | Self::KEYMOD.bits;
110    const SCOREINCREASEMODS = Self::HIDDEN.bits
111                            | Self::HARDROCK.bits
112                            | Self::DOUBLETIME.bits
113                            | Self::FLASHLIGHT.bits
114                            | Self::FADEIN.bits;
115  }
116}