origin_sdk/protocol/
achievements.rs1use serde::{Deserialize, Serialize};
2
3use crate::protocol::common::Event;
4
5#[derive(Debug, Serialize, Deserialize)]
6pub struct Achievement {
7 #[serde(rename = "@Id")]
8 pub id: String,
9 #[serde(rename = "@Name")]
10 pub name: String,
11 #[serde(rename = "@Progress")]
12 pub progress: i32,
13 #[serde(rename = "@Total")]
14 pub total: i32,
15 #[serde(rename = "@Count")]
16 pub count: i32,
17 #[serde(rename = "@Description")]
18 pub description: String,
19 #[serde(rename = "@HowTo")]
20 pub how_to: String,
21 #[serde(rename = "@ImageId")]
22 pub image_id: String,
23 #[serde(rename = "@GrantDate")]
24 pub grant_date: String,
25 #[serde(rename = "@Expiration")]
26 pub expiration: String,
27}
28
29#[derive(Debug, Serialize, Deserialize)]
30pub struct AchievementSet {
31 #[serde(rename = "@Name")]
32 pub name: String,
33 #[serde(rename = "@GameName")]
34 pub game_name: String,
35 #[serde(rename = "Achievement", default)]
36 pub achievement: Vec<Achievement>,
37}
38
39#[derive(Debug, Serialize, Deserialize)]
40pub struct AchievementSets {
41 #[serde(rename = "AchievementSet", default)]
42 pub achievement_set: Vec<AchievementSet>,
43}
44
45#[derive(Debug, Serialize, Deserialize)]
46pub struct GrantAchievement {
47 #[serde(rename = "@UserId")]
48 pub user_id: u64,
49 #[serde(rename = "@PersonaId")]
50 pub persona_id: u64,
51 #[serde(rename = "@AchievementId")]
52 pub achievement_id: i32,
53 #[serde(rename = "@Progress")]
54 pub progress: i32,
55 #[serde(rename = "@AchievementCode")]
56 pub achievement_code: String,
57}
58
59#[derive(Debug, Serialize, Deserialize)]
60pub struct PostAchievementEvents {
61 #[serde(rename = "@UserId")]
62 pub user_id: u64,
63 #[serde(rename = "@PersonaId")]
64 pub persona_id: u64,
65 #[serde(rename = "Event", default)]
66 pub events: Vec<Event>,
67}
68
69#[derive(Debug, Serialize, Deserialize)]
70pub struct QueryAchievements {
71 #[serde(rename = "@UserId")]
72 pub user_id: u64,
73 #[serde(rename = "@PersonaId")]
74 pub persona_id: u64,
75 #[serde(rename = "@All")]
76 pub all: bool,
77 #[serde(rename = "GameId", default)]
78 pub game_id: Vec<String>,
79}