origin_sdk/protocol/
achievements.rs

1use 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}