2025-03-13 00:02:37 -04:00
|
|
|
use binrw::binrw;
|
2025-03-09 09:40:11 -04:00
|
|
|
use serde_json::{Value, json};
|
|
|
|
|
2025-03-13 00:02:37 -04:00
|
|
|
#[binrw]
|
|
|
|
#[derive(Debug, Clone, Default)]
|
2025-03-16 15:39:44 -04:00
|
|
|
pub struct CustomizeData {
|
2025-03-14 00:30:37 -04:00
|
|
|
pub race: u8,
|
|
|
|
pub gender: u8,
|
|
|
|
pub age: u8,
|
|
|
|
pub height: u8,
|
|
|
|
pub subrace: u8,
|
|
|
|
pub face: u8,
|
|
|
|
pub hair: u8,
|
|
|
|
pub enable_highlights: u8,
|
|
|
|
pub skin_tone: u8,
|
|
|
|
pub right_eye_color: u8,
|
|
|
|
pub hair_tone: u8,
|
|
|
|
pub highlights: u8,
|
|
|
|
pub facial_features: u8,
|
|
|
|
pub facial_feature_color: u8,
|
|
|
|
pub eyebrows: u8,
|
|
|
|
pub left_eye_color: u8,
|
|
|
|
pub eyes: u8,
|
|
|
|
pub nose: u8,
|
|
|
|
pub jaw: u8,
|
|
|
|
pub mouth: u8,
|
|
|
|
pub lips_tone_fur_pattern: u8,
|
|
|
|
pub race_feature_size: u8,
|
|
|
|
pub race_feature_type: u8,
|
|
|
|
pub bust: u8,
|
|
|
|
pub face_paint: u8,
|
|
|
|
pub face_paint_color: u8,
|
2025-03-09 09:40:11 -04:00
|
|
|
}
|
|
|
|
|
2025-03-30 18:51:11 -04:00
|
|
|
impl From<physis::chardat::CustomizeData> for CustomizeData {
|
|
|
|
fn from(value: physis::chardat::CustomizeData) -> Self {
|
|
|
|
Self {
|
2025-03-31 17:26:56 -04:00
|
|
|
race: value.race as u8,
|
2025-03-30 18:51:11 -04:00
|
|
|
gender: value.gender as u8,
|
|
|
|
age: value.age,
|
|
|
|
height: value.height,
|
2025-03-31 17:26:56 -04:00
|
|
|
subrace: value.tribe as u8,
|
2025-03-30 18:51:11 -04:00
|
|
|
face: value.face,
|
|
|
|
hair: value.hair,
|
|
|
|
enable_highlights: value.enable_highlights as u8,
|
|
|
|
skin_tone: value.skin_tone,
|
|
|
|
right_eye_color: value.right_eye_color,
|
|
|
|
hair_tone: value.hair_tone,
|
|
|
|
highlights: value.highlights,
|
|
|
|
facial_features: value.facial_features,
|
|
|
|
facial_feature_color: value.facial_feature_color,
|
|
|
|
eyebrows: value.eyebrows,
|
|
|
|
left_eye_color: value.left_eye_color,
|
|
|
|
eyes: value.eyes,
|
|
|
|
nose: value.nose,
|
|
|
|
jaw: value.jaw,
|
|
|
|
mouth: value.mouth,
|
|
|
|
lips_tone_fur_pattern: value.lips_tone_fur_pattern,
|
|
|
|
race_feature_size: value.race_feature_size,
|
|
|
|
race_feature_type: value.race_feature_type,
|
|
|
|
bust: value.bust,
|
|
|
|
face_paint: value.face_paint,
|
|
|
|
face_paint_color: value.face_paint_color,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-03-16 15:39:44 -04:00
|
|
|
impl CustomizeData {
|
2025-03-09 09:40:11 -04:00
|
|
|
pub fn to_json(&self) -> Value {
|
|
|
|
json!([
|
|
|
|
self.race.to_string(),
|
|
|
|
self.gender.to_string(),
|
2025-03-14 00:30:37 -04:00
|
|
|
self.age.to_string(),
|
2025-03-09 09:40:11 -04:00
|
|
|
self.height.to_string(),
|
|
|
|
self.subrace.to_string(),
|
|
|
|
self.face.to_string(),
|
2025-03-14 00:30:37 -04:00
|
|
|
self.hair.to_string(),
|
2025-03-09 09:40:11 -04:00
|
|
|
self.enable_highlights.to_string(),
|
|
|
|
self.skin_tone.to_string(),
|
|
|
|
self.right_eye_color.to_string(),
|
|
|
|
self.hair_tone.to_string(),
|
|
|
|
self.highlights.to_string(),
|
|
|
|
self.facial_features.to_string(),
|
|
|
|
self.facial_feature_color.to_string(),
|
|
|
|
self.eyebrows.to_string(),
|
|
|
|
self.left_eye_color.to_string(),
|
|
|
|
self.eyes.to_string(),
|
|
|
|
self.nose.to_string(),
|
|
|
|
self.jaw.to_string(),
|
|
|
|
self.mouth.to_string(),
|
|
|
|
self.lips_tone_fur_pattern.to_string(),
|
|
|
|
self.race_feature_size.to_string(),
|
|
|
|
self.race_feature_type.to_string(),
|
|
|
|
self.bust.to_string(),
|
|
|
|
self.face_paint.to_string(),
|
|
|
|
self.face_paint_color.to_string(),
|
|
|
|
])
|
|
|
|
}
|
2025-03-13 23:30:48 -04:00
|
|
|
|
|
|
|
pub fn from_json(json: &Value) -> Self {
|
|
|
|
Self {
|
2025-03-14 00:30:37 -04:00
|
|
|
race: json[0].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
gender: json[1].as_str().unwrap().parse::<u8>().unwrap(),
|
2025-03-21 21:26:32 -04:00
|
|
|
age: json[2].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
height: json[3].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
subrace: json[4].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
face: json[5].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
hair: json[6].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
enable_highlights: json[7].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
skin_tone: json[8].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
right_eye_color: json[9].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
hair_tone: json[10].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
highlights: json[11].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
facial_features: json[12].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
facial_feature_color: json[13].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
eyebrows: json[14].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
left_eye_color: json[15].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
eyes: json[16].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
nose: json[17].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
jaw: json[18].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
mouth: json[19].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
lips_tone_fur_pattern: json[20].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
race_feature_size: json[21].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
race_feature_type: json[22].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
bust: json[23].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
face_paint: json[24].as_str().unwrap().parse::<u8>().unwrap(),
|
|
|
|
face_paint_color: json[25].as_str().unwrap().parse::<u8>().unwrap(),
|
2025-03-13 23:30:48 -04:00
|
|
|
}
|
|
|
|
}
|
2025-03-09 09:40:11 -04:00
|
|
|
}
|