screeps_rust_api/
model.rs

1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5use crate::{
6    EncodedRoomTerrain, MyInfo, RoomStatus, RoomTerrain, ShardInfo, UserInfo,
7    types::{RoomObject, UserWithId},
8};
9
10/// 响应的基础数据,每个接口返回的数据结构都继承自该结构
11#[derive(Serialize, Deserialize, Debug)]
12pub struct BaseData {
13    /// 1 成功,0 失败
14    pub ok: Option<i32>,
15    /// 错误信息
16    pub error: Option<String>,
17}
18
19/// auth 认证返回 token 数据
20#[derive(Serialize, Deserialize, Debug)]
21pub struct TokenData {
22    #[serde(flatten)]
23    pub base_data: BaseData,
24    /// token
25    pub token: Option<String>,
26}
27
28/// 我的信息数据
29#[derive(Serialize, Deserialize, Debug)]
30pub struct MyInfoData {
31    #[serde(flatten)]
32    pub base_data: BaseData,
33    #[serde(flatten)]
34    pub user: Option<MyInfo>,
35}
36
37/// 其他用户信息数据
38#[derive(Serialize, Deserialize, Debug)]
39pub struct UserInfoData {
40    #[serde(flatten)]
41    pub base_data: BaseData,
42    pub user: Option<UserInfo>,
43}
44
45/// 我的名字数据
46#[derive(Serialize, Deserialize, Debug)]
47pub struct MyNameData {
48    #[serde(flatten)]
49    pub base_data: BaseData,
50    pub username: Option<String>,
51}
52
53/// 玩家的所有房间
54#[derive(Serialize, Deserialize, Debug)]
55pub struct UserAllRoomsData {
56    #[serde(flatten)]
57    pub base_data: BaseData,
58    /// 占有的房间
59    pub shards: Option<HashMap<String, Vec<String>>>,
60    /// 预定房间
61    pub reservations: Option<HashMap<String, Vec<String>>>,
62}
63
64/// 房间对象数据
65#[derive(Serialize, Deserialize, Debug)]
66pub struct RoomObjectsData {
67    #[serde(flatten)]
68    pub base_data: BaseData,
69    pub objects: Option<Vec<RoomObject>>,
70    pub users: Option<HashMap<String, UserWithId>>,
71}
72
73/// 房间地形数据
74#[derive(Serialize, Deserialize, Debug)]
75pub struct RoomTerrainData {
76    #[serde(flatten)]
77    pub base_data: BaseData,
78    pub terrain: Option<Vec<RoomTerrain>>,
79}
80
81/// 编码后的房间数据
82#[derive(Serialize, Deserialize, Debug)]
83pub struct EncodedRoomTerrainData {
84    #[serde(flatten)]
85    pub base_data: BaseData,
86    pub terrain: Option<Vec<EncodedRoomTerrain>>,
87}
88
89/// 房间状态数据
90#[derive(Serialize, Deserialize, Debug)]
91pub struct RoomStatusData {
92    #[serde(flatten)]
93    pub base_data: BaseData,
94    pub rooms: Option<RoomStatus>,
95}
96
97/// 所有 shard 信息
98#[derive(Serialize, Deserialize, Debug)]
99pub struct AllShardData {
100    #[serde(flatten)]
101    pub base_data: BaseData,
102    pub shards: Option<Vec<ShardInfo>>,
103}
104
105/// shard 时间数据
106#[derive(Serialize, Deserialize, Debug)]
107pub struct ShardTimeData {
108    #[serde(flatten)]
109    pub base_data: BaseData,
110    pub time: Option<u64>,
111}