1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5use super::{
6 item::{Item, ItemJewelData},
7 passives::PassiveNode,
8};
9
10#[derive(Debug, Clone, Deserialize, Serialize)]
11pub enum BanditChoice {
12 Kraityn,
13 Alira,
14 Oak,
15 Eramir,
16}
17
18#[derive(Debug, Clone, Deserialize, Serialize)]
19pub enum PantheonMajor {
20 TheBrineKing,
21 Arakaali,
22 Solaris,
23 Lunaris,
24}
25
26#[derive(Debug, Clone, Deserialize, Serialize)]
27pub enum PantheonMinor {
28 Abberath,
29 Grukthul,
30 Yugul,
31 Shakari,
32 Tukohama,
33 Ralakesh,
34 Garukhan,
35 Ryslatha,
36}
37
38#[derive(Default, Clone, Deserialize, Serialize)]
39pub struct Character {
40 pub id: String,
41 pub name: String,
42 pub realm: String,
43 pub class: String,
44 pub league: Option<String>,
45 pub level: usize,
46 pub experience: usize,
47 pub ruthless: Option<bool>,
48 pub expired: Option<bool>,
49 pub deleted: Option<bool>,
50 pub current: Option<bool>,
51 pub equipment: Option<Vec<Item>>,
52 pub inventory: Option<Vec<Item>>,
53 pub jewels: Option<Vec<Item>>,
54 pub passives: Option<CharacterPassives>,
55 pub metadata: Option<CharacterMetadata>,
56}
57
58#[derive(Default, Clone, Deserialize, Serialize)]
59pub struct CharacterPassives {
60 pub hashes: Vec<usize>,
61 pub hashes_ex: Vec<usize>,
62 pub mastery_effects: HashMap<String, i64>,
63 pub skill_overrides: HashMap<String, PassiveNode>,
64 pub bandit_choice: Option<BanditChoice>,
65 pub pantheon_major: Option<PantheonMajor>,
66 pub pantheon_minor: Option<PantheonMinor>,
67 pub jewel_data: HashMap<String, ItemJewelData>,
68}
69
70#[derive(Debug, Default, Clone, Deserialize, Serialize)]
71pub struct CharacterMetadata {
72 pub version: String,
73}