1use crate::models;
2use serde::{Deserialize, Serialize};
3
4#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
5#[cfg_attr(feature = "specta", derive(specta::Type))]
6pub struct CharacterSchema {
7 #[serde(rename = "name")]
9 pub name: String,
10 #[serde(rename = "account")]
12 pub account: String,
13 #[serde(rename = "skin")]
15 pub skin: models::CharacterSkin,
16 #[serde(rename = "level")]
18 pub level: i32,
19 #[serde(rename = "xp")]
21 pub xp: i32,
22 #[serde(rename = "max_xp")]
24 pub max_xp: i32,
25 #[serde(rename = "gold")]
27 pub gold: i32,
28 #[serde(rename = "speed")]
30 pub speed: i32,
31 #[serde(rename = "mining_level")]
33 pub mining_level: i32,
34 #[serde(rename = "mining_xp")]
36 pub mining_xp: i32,
37 #[serde(rename = "mining_max_xp")]
39 pub mining_max_xp: i32,
40 #[serde(rename = "woodcutting_level")]
42 pub woodcutting_level: i32,
43 #[serde(rename = "woodcutting_xp")]
45 pub woodcutting_xp: i32,
46 #[serde(rename = "woodcutting_max_xp")]
48 pub woodcutting_max_xp: i32,
49 #[serde(rename = "fishing_level")]
51 pub fishing_level: i32,
52 #[serde(rename = "fishing_xp")]
54 pub fishing_xp: i32,
55 #[serde(rename = "fishing_max_xp")]
57 pub fishing_max_xp: i32,
58 #[serde(rename = "weaponcrafting_level")]
60 pub weaponcrafting_level: i32,
61 #[serde(rename = "weaponcrafting_xp")]
63 pub weaponcrafting_xp: i32,
64 #[serde(rename = "weaponcrafting_max_xp")]
66 pub weaponcrafting_max_xp: i32,
67 #[serde(rename = "gearcrafting_level")]
69 pub gearcrafting_level: i32,
70 #[serde(rename = "gearcrafting_xp")]
72 pub gearcrafting_xp: i32,
73 #[serde(rename = "gearcrafting_max_xp")]
75 pub gearcrafting_max_xp: i32,
76 #[serde(rename = "jewelrycrafting_level")]
78 pub jewelrycrafting_level: i32,
79 #[serde(rename = "jewelrycrafting_xp")]
81 pub jewelrycrafting_xp: i32,
82 #[serde(rename = "jewelrycrafting_max_xp")]
84 pub jewelrycrafting_max_xp: i32,
85 #[serde(rename = "cooking_level")]
87 pub cooking_level: i32,
88 #[serde(rename = "cooking_xp")]
90 pub cooking_xp: i32,
91 #[serde(rename = "cooking_max_xp")]
93 pub cooking_max_xp: i32,
94 #[serde(rename = "alchemy_level")]
96 pub alchemy_level: i32,
97 #[serde(rename = "alchemy_xp")]
99 pub alchemy_xp: i32,
100 #[serde(rename = "alchemy_max_xp")]
102 pub alchemy_max_xp: i32,
103 #[serde(rename = "hp")]
105 pub hp: i32,
106 #[serde(rename = "max_hp")]
108 pub max_hp: i32,
109 #[serde(rename = "haste")]
111 pub haste: i32,
112 #[serde(rename = "critical_strike")]
114 pub critical_strike: i32,
115 #[serde(rename = "wisdom")]
117 pub wisdom: i32,
118 #[serde(rename = "prospecting")]
120 pub prospecting: i32,
121 #[serde(rename = "initiative")]
123 pub initiative: i32,
124 #[serde(rename = "threat")]
126 pub threat: i32,
127 #[serde(rename = "attack_fire")]
129 pub attack_fire: i32,
130 #[serde(rename = "attack_earth")]
132 pub attack_earth: i32,
133 #[serde(rename = "attack_water")]
135 pub attack_water: i32,
136 #[serde(rename = "attack_air")]
138 pub attack_air: i32,
139 #[serde(rename = "dmg")]
141 pub dmg: i32,
142 #[serde(rename = "dmg_fire")]
144 pub dmg_fire: i32,
145 #[serde(rename = "dmg_earth")]
147 pub dmg_earth: i32,
148 #[serde(rename = "dmg_water")]
150 pub dmg_water: i32,
151 #[serde(rename = "dmg_air")]
153 pub dmg_air: i32,
154 #[serde(rename = "res_fire")]
156 pub res_fire: i32,
157 #[serde(rename = "res_earth")]
159 pub res_earth: i32,
160 #[serde(rename = "res_water")]
162 pub res_water: i32,
163 #[serde(rename = "res_air")]
165 pub res_air: i32,
166 #[serde(rename = "effects", skip_serializing_if = "Option::is_none")]
168 pub effects: Option<Vec<models::StorageEffectSchema>>,
169 #[serde(rename = "x")]
171 pub x: i32,
172 #[serde(rename = "y")]
174 pub y: i32,
175 #[serde(rename = "layer")]
177 pub layer: models::MapLayer,
178 #[serde(rename = "map_id")]
180 pub map_id: i32,
181 #[serde(rename = "cooldown")]
183 pub cooldown: i32,
184 #[serde(
186 rename = "cooldown_expiration",
187 skip_serializing_if = "Option::is_none"
188 )]
189 pub cooldown_expiration: Option<String>,
190 #[serde(rename = "weapon_slot")]
192 pub weapon_slot: String,
193 #[serde(rename = "rune_slot")]
195 pub rune_slot: String,
196 #[serde(rename = "shield_slot")]
198 pub shield_slot: String,
199 #[serde(rename = "helmet_slot")]
201 pub helmet_slot: String,
202 #[serde(rename = "body_armor_slot")]
204 pub body_armor_slot: String,
205 #[serde(rename = "leg_armor_slot")]
207 pub leg_armor_slot: String,
208 #[serde(rename = "boots_slot")]
210 pub boots_slot: String,
211 #[serde(rename = "ring1_slot")]
213 pub ring1_slot: String,
214 #[serde(rename = "ring2_slot")]
216 pub ring2_slot: String,
217 #[serde(rename = "amulet_slot")]
219 pub amulet_slot: String,
220 #[serde(rename = "artifact1_slot")]
222 pub artifact1_slot: String,
223 #[serde(rename = "artifact2_slot")]
225 pub artifact2_slot: String,
226 #[serde(rename = "artifact3_slot")]
228 pub artifact3_slot: String,
229 #[serde(rename = "utility1_slot")]
231 pub utility1_slot: String,
232 #[serde(rename = "utility1_slot_quantity")]
234 pub utility1_slot_quantity: u32,
235 #[serde(rename = "utility2_slot")]
237 pub utility2_slot: String,
238 #[serde(rename = "utility2_slot_quantity")]
240 pub utility2_slot_quantity: u32,
241 #[serde(rename = "bag_slot")]
243 pub bag_slot: String,
244 #[serde(rename = "task")]
246 pub task: String,
247 #[serde(rename = "task_type")]
249 pub task_type: String,
250 #[serde(rename = "task_progress")]
252 pub task_progress: i32,
253 #[serde(rename = "task_total")]
255 pub task_total: i32,
256 #[serde(rename = "inventory_max_items")]
258 pub inventory_max_items: i32,
259 #[serde(rename = "inventory", skip_serializing_if = "Option::is_none")]
261 pub inventory: Option<Vec<models::InventorySlot>>,
262}
263
264impl CharacterSchema {
265 pub fn new(
266 name: String,
267 account: String,
268 skin: models::CharacterSkin,
269 level: i32,
270 xp: i32,
271 max_xp: i32,
272 gold: i32,
273 speed: i32,
274 mining_level: i32,
275 mining_xp: i32,
276 mining_max_xp: i32,
277 woodcutting_level: i32,
278 woodcutting_xp: i32,
279 woodcutting_max_xp: i32,
280 fishing_level: i32,
281 fishing_xp: i32,
282 fishing_max_xp: i32,
283 weaponcrafting_level: i32,
284 weaponcrafting_xp: i32,
285 weaponcrafting_max_xp: i32,
286 gearcrafting_level: i32,
287 gearcrafting_xp: i32,
288 gearcrafting_max_xp: i32,
289 jewelrycrafting_level: i32,
290 jewelrycrafting_xp: i32,
291 jewelrycrafting_max_xp: i32,
292 cooking_level: i32,
293 cooking_xp: i32,
294 cooking_max_xp: i32,
295 alchemy_level: i32,
296 alchemy_xp: i32,
297 alchemy_max_xp: i32,
298 hp: i32,
299 max_hp: i32,
300 haste: i32,
301 critical_strike: i32,
302 wisdom: i32,
303 prospecting: i32,
304 initiative: i32,
305 threat: i32,
306 attack_fire: i32,
307 attack_earth: i32,
308 attack_water: i32,
309 attack_air: i32,
310 dmg: i32,
311 dmg_fire: i32,
312 dmg_earth: i32,
313 dmg_water: i32,
314 dmg_air: i32,
315 res_fire: i32,
316 res_earth: i32,
317 res_water: i32,
318 res_air: i32,
319 x: i32,
320 y: i32,
321 layer: models::MapLayer,
322 map_id: i32,
323 cooldown: i32,
324 weapon_slot: String,
325 rune_slot: String,
326 shield_slot: String,
327 helmet_slot: String,
328 body_armor_slot: String,
329 leg_armor_slot: String,
330 boots_slot: String,
331 ring1_slot: String,
332 ring2_slot: String,
333 amulet_slot: String,
334 artifact1_slot: String,
335 artifact2_slot: String,
336 artifact3_slot: String,
337 utility1_slot: String,
338 utility1_slot_quantity: u32,
339 utility2_slot: String,
340 utility2_slot_quantity: u32,
341 bag_slot: String,
342 task: String,
343 task_type: String,
344 task_progress: i32,
345 task_total: i32,
346 inventory_max_items: i32,
347 ) -> CharacterSchema {
348 CharacterSchema {
349 name,
350 account,
351 skin,
352 level,
353 xp,
354 max_xp,
355 gold,
356 speed,
357 mining_level,
358 mining_xp,
359 mining_max_xp,
360 woodcutting_level,
361 woodcutting_xp,
362 woodcutting_max_xp,
363 fishing_level,
364 fishing_xp,
365 fishing_max_xp,
366 weaponcrafting_level,
367 weaponcrafting_xp,
368 weaponcrafting_max_xp,
369 gearcrafting_level,
370 gearcrafting_xp,
371 gearcrafting_max_xp,
372 jewelrycrafting_level,
373 jewelrycrafting_xp,
374 jewelrycrafting_max_xp,
375 cooking_level,
376 cooking_xp,
377 cooking_max_xp,
378 alchemy_level,
379 alchemy_xp,
380 alchemy_max_xp,
381 hp,
382 max_hp,
383 haste,
384 critical_strike,
385 wisdom,
386 prospecting,
387 initiative,
388 threat,
389 attack_fire,
390 attack_earth,
391 attack_water,
392 attack_air,
393 dmg,
394 dmg_fire,
395 dmg_earth,
396 dmg_water,
397 dmg_air,
398 res_fire,
399 res_earth,
400 res_water,
401 res_air,
402 effects: None,
403 x,
404 y,
405 layer,
406 map_id,
407 cooldown,
408 cooldown_expiration: None,
409 weapon_slot,
410 rune_slot,
411 shield_slot,
412 helmet_slot,
413 body_armor_slot,
414 leg_armor_slot,
415 boots_slot,
416 ring1_slot,
417 ring2_slot,
418 amulet_slot,
419 artifact1_slot,
420 artifact2_slot,
421 artifact3_slot,
422 utility1_slot,
423 utility1_slot_quantity,
424 utility2_slot,
425 utility2_slot_quantity,
426 bag_slot,
427 task,
428 task_type,
429 task_progress,
430 task_total,
431 inventory_max_items,
432 inventory: None,
433 }
434 }
435}