use {
indexmap::IndexMap,
serde::{Deserialize, Serialize},
};
#[derive(Debug, Deserialize, Serialize)]
pub struct Player {
pub data: Data,
pub datacrons: Vec<Datacron>,
pub mods: Vec<Mod>,
pub units: Vec<Unit>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Data {
pub ally_code: u64,
pub arena: Arena,
pub arena_leader_base_id: String,
pub arena_rank: u64,
pub character_galactic_power: u64,
pub division_image: String,
pub division_number: u64,
pub fleet_arena: FleetArena,
pub galactic_power: u64,
pub galactic_war_won: u64,
pub guild_contribution: u64,
pub guild_exchange_donations: u64,
pub guild_id: String,
pub guild_name: String,
pub guild_raid_won: u64,
pub guild_url: String,
pub last_updated: String,
pub league_blank_image: String,
pub league_frame_image: String,
pub league_image: String,
pub league_name: String,
pub level: u64,
pub mods: Vec<String>,
pub name: String,
pub portrait_image: String,
pub pve_battles_won: u64,
pub pve_hard_won: u64,
pub pvp_battles_won: u64,
pub season_banners_earned: u64,
pub season_full_clears: u64,
pub season_league_score: u64,
pub season_offensive_battles_won: u64,
pub season_promotions_earned: u64,
pub season_successful_defends: u64,
pub season_territories_defeated: u64,
pub season_undersized_squad_wins: u64,
pub ship_battles_won: u64,
pub ship_galactic_power: u64,
pub skill_rating: u64,
pub title: String,
pub url: String,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Arena {
pub leader: String,
pub members: Vec<String>,
pub rank: u64,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct FleetArena {
pub leader: String,
pub members: Vec<String>,
pub rank: u64,
pub reinforcements: Vec<String>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Datacron {
pub id: String,
pub locked: bool,
pub reroll_count: u64,
pub reroll_index: u64,
pub set_id: u64,
pub template_base_id: String,
pub tier: u64,
pub tiers: Vec<PlayerDatacronTier>,
pub url: String,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct PlayerDatacronTier {
pub ability_description: Option<String>,
pub ability_id: Option<String>,
pub required_relic_tier: u64,
pub required_unit_tier: u64,
pub scope_icon: String,
pub scope_identifier: u64,
pub scope_target_name: String,
pub stat_type: u64,
pub stat_value: f32,
pub target_rule_id: Option<String>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Mod {
pub character: String,
pub id: String,
pub level: u64,
pub primary_stat: ModPrimaryStat,
pub rarity: u64,
pub reroll_count: u64,
pub secondary_stats: Vec<ModSecondaryStat>,
pub set: String,
pub slot: u64,
pub tier: u64,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ModPrimaryStat {
pub display_value: String,
pub name: String,
pub stat_id: u64,
pub value: f32,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ModSecondaryStat {
pub display_value: String,
pub name: String,
pub roll: u64,
pub stat_id: u64,
pub stat_max: u64,
pub stat_min: u64,
pub stat_rolls: Vec<f32>,
pub unscaled_roll_values: Vec<u64>,
pub value: f32,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Unit {
pub data: UnitData,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct UnitData {
pub ability_data: Vec<AbilityData>,
pub base_id: String,
pub combat_type: u64,
pub gear: Vec<Gear>,
pub gear_level: u64,
pub has_ultimate: bool,
pub is_galactic_legend: bool,
pub level: u64,
pub mod_set_ids: Vec<String>,
pub name: String,
pub omicron_abilities: Vec<String>,
pub power: u64,
pub rarity: u64,
pub relic_tier: Option<u64>,
pub stat_diffs: IndexMap<String, f32>, pub stats: IndexMap<String, f32>, pub url: String,
pub zeta_abilities: Vec<String>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct AbilityData {
pub ability_tier: u64,
pub has_omicron_learned: bool,
pub has_zeta_learned: bool,
pub id: String,
pub is_omega: bool,
pub is_omicron: bool,
pub is_zeta: bool,
pub name: String,
pub tier_max: u64,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Gear {
pub base_id: String,
pub is_obtained: bool,
pub slot: u64,
}