2024-09-29 17:45:53 -04:00
|
|
|
use serde::Serialize;
|
|
|
|
|
2025-03-31 17:02:30 -04:00
|
|
|
use crate::value::{
|
2025-04-28 15:39:46 -04:00
|
|
|
CityStateValue, ClassJobValue, GenderValue, GrandCompanyValue, GuardianValue, NamedayValue,
|
|
|
|
RaceValue, TribeValue, WorldValue,
|
2025-03-31 17:02:30 -04:00
|
|
|
};
|
|
|
|
|
2024-09-29 17:45:53 -04:00
|
|
|
#[derive(Default, Serialize)]
|
|
|
|
pub struct Currencies {
|
2024-10-05 12:26:12 -04:00
|
|
|
pub gil: u32,
|
2024-09-29 17:45:53 -04:00
|
|
|
}
|
|
|
|
|
2024-10-05 12:21:38 -04:00
|
|
|
#[derive(Default, Serialize)]
|
|
|
|
pub struct Appearance {
|
|
|
|
pub race: String,
|
|
|
|
pub gender: String,
|
2024-11-01 16:41:05 -04:00
|
|
|
pub model_type: i32,
|
2024-10-05 12:21:38 -04:00
|
|
|
pub height: i32,
|
2024-11-01 16:41:05 -04:00
|
|
|
pub tribe: String,
|
|
|
|
pub face_type: i32,
|
|
|
|
pub hair_style: i32,
|
|
|
|
pub has_highlights: bool,
|
|
|
|
pub skin_color: i32,
|
|
|
|
pub eye_color: i32,
|
|
|
|
pub hair_color: i32,
|
|
|
|
pub hair_color2: i32,
|
|
|
|
pub face_features: i32,
|
|
|
|
pub face_features_color: i32,
|
|
|
|
pub eyebrows: i32,
|
|
|
|
pub eye_color2: i32,
|
|
|
|
pub eye_shape: i32,
|
|
|
|
pub nose_shape: i32,
|
|
|
|
pub jaw_shape: i32,
|
|
|
|
pub lip_style: i32,
|
|
|
|
pub lip_color: i32,
|
|
|
|
pub race_feature_size: i32,
|
|
|
|
pub race_feature_type: i32,
|
|
|
|
pub bust_size: i32,
|
|
|
|
pub facepaint: i32,
|
|
|
|
pub facepaint_color: i32,
|
2024-10-05 12:21:38 -04:00
|
|
|
}
|
|
|
|
|
2024-09-29 17:45:53 -04:00
|
|
|
#[derive(Default, Serialize)]
|
|
|
|
pub struct CharacterData {
|
|
|
|
pub name: String,
|
2025-03-31 17:02:30 -04:00
|
|
|
pub world: WorldValue,
|
2024-09-29 17:45:53 -04:00
|
|
|
pub data_center: String,
|
2025-03-31 17:02:30 -04:00
|
|
|
pub city_state: CityStateValue,
|
|
|
|
pub nameday: NamedayValue,
|
|
|
|
pub guardian: GuardianValue,
|
|
|
|
pub race: RaceValue,
|
|
|
|
pub gender: GenderValue,
|
|
|
|
pub tribe: TribeValue,
|
2025-03-31 17:21:13 -04:00
|
|
|
pub classjob_levels: Vec<ClassJobValue>,
|
2025-04-28 15:39:46 -04:00
|
|
|
pub grand_company: GrandCompanyValue,
|
2025-04-28 15:47:00 -04:00
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub free_company: Option<String>,
|
2025-03-31 17:21:13 -04:00
|
|
|
|
2025-03-31 16:21:55 -04:00
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub currencies: Option<Currencies>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub playtime: Option<String>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub appearance: Option<Appearance>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub is_battle_mentor: Option<bool>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub is_trade_mentor: Option<bool>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub is_novice: Option<bool>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub is_returner: Option<bool>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub player_commendations: Option<i32>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub plate_title: Option<String>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub plate_classjob: Option<String>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub plate_classjob_level: Option<i32>,
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub search_comment: Option<String>,
|
2025-04-01 23:11:27 -04:00
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
pub voice: Option<i32>,
|
2024-09-29 17:45:53 -04:00
|
|
|
|
|
|
|
#[serde(skip)]
|
|
|
|
pub face_url: String,
|
|
|
|
#[serde(skip)]
|
|
|
|
pub portrait_url: String,
|
|
|
|
}
|