swgoh-gg 1.0.0

API Bindings for swgoh.gg
Documentation
//! Types related to Players

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,
    /// as far as I can tell this one is no longer in use
    /// just ignore no
    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>, // TODO some value are integer
    pub stats: IndexMap<String, f32>,      // TODO some value are integer
    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,
}