From d16cfd2494724774543a66fe83e9454622b21338 Mon Sep 17 00:00:00 2001 From: yuvlian <51725554+yuvlian@users.noreply.github.com> Date: Sat, 14 Feb 2026 17:25:23 +0700 Subject: [PATCH] . --- .gitignore | 2 + resource_api/Cargo.toml | 7 ++ resource_api/src/main.rs | 7 ++ resource_api/src/res_parser/mod.rs | 1 + resource_api/src/singleton/mod.rs | 1 + resource_api/src/types/character.rs | 49 +++++++++++++ resource_api/src/types/common.rs | 92 ++++++++++++++++++++++++ resource_api/src/types/enemy.rs | 1 + resource_api/src/types/game_mode/aa.rs | 1 + resource_api/src/types/game_mode/apoc.rs | 1 + resource_api/src/types/game_mode/moc.rs | 1 + resource_api/src/types/game_mode/mod.rs | 11 +++ resource_api/src/types/game_mode/pf.rs | 1 + resource_api/src/types/item.rs | 12 ++++ resource_api/src/types/lightcone.rs | 32 +++++++++ resource_api/src/types/mod.rs | 15 ++++ resource_api/src/types/relic.rs | 25 +++++++ 17 files changed, 259 insertions(+) create mode 100644 .gitignore create mode 100644 resource_api/Cargo.toml create mode 100644 resource_api/src/main.rs create mode 100644 resource_api/src/res_parser/mod.rs create mode 100644 resource_api/src/singleton/mod.rs create mode 100644 resource_api/src/types/character.rs create mode 100644 resource_api/src/types/common.rs create mode 100644 resource_api/src/types/enemy.rs create mode 100644 resource_api/src/types/game_mode/aa.rs create mode 100644 resource_api/src/types/game_mode/apoc.rs create mode 100644 resource_api/src/types/game_mode/moc.rs create mode 100644 resource_api/src/types/game_mode/mod.rs create mode 100644 resource_api/src/types/game_mode/pf.rs create mode 100644 resource_api/src/types/item.rs create mode 100644 resource_api/src/types/lightcone.rs create mode 100644 resource_api/src/types/mod.rs create mode 100644 resource_api/src/types/relic.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b852a7e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +**/target +**/*.lock diff --git a/resource_api/Cargo.toml b/resource_api/Cargo.toml new file mode 100644 index 0000000..b7e78ad --- /dev/null +++ b/resource_api/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "resource_api" +version = "0.1.0" +edition = "2024" + +[dependencies] +serde = { version = "1.0.228", features = ["derive"] } diff --git a/resource_api/src/main.rs b/resource_api/src/main.rs new file mode 100644 index 0000000..b798090 --- /dev/null +++ b/resource_api/src/main.rs @@ -0,0 +1,7 @@ +mod res_parser; +mod singleton; +mod types; + +fn main() { + println!("Hello, world!"); +} diff --git a/resource_api/src/res_parser/mod.rs b/resource_api/src/res_parser/mod.rs new file mode 100644 index 0000000..70b786d --- /dev/null +++ b/resource_api/src/res_parser/mod.rs @@ -0,0 +1 @@ +// TODO diff --git a/resource_api/src/singleton/mod.rs b/resource_api/src/singleton/mod.rs new file mode 100644 index 0000000..70b786d --- /dev/null +++ b/resource_api/src/singleton/mod.rs @@ -0,0 +1 @@ +// TODO diff --git a/resource_api/src/types/character.rs b/resource_api/src/types/character.rs new file mode 100644 index 0000000..8219fe8 --- /dev/null +++ b/resource_api/src/types/character.rs @@ -0,0 +1,49 @@ +use super::common::{ + Ascension, Count, Desc, Element, Id, Level, Path, Rarity, StatType, StatValue, Uri, +}; +use super::item::ItemMini; +use serde::{Deserialize, Serialize}; +use std::collections::{BTreeMap, HashMap}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct Eidolon { + pub name: String, + pub desc: Desc, + pub img_url: Uri, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct CharacterSearch(pub BTreeMap); + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct CharacterMini { + pub name: String, + pub path: Path, + pub rarity: Rarity, + pub element: Element, + pub img_url: Uri, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct CharacterDetail(pub HashMap); + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct CharacterFull { + pub name: String, + pub path: Path, + pub rarity: Rarity, + pub element: Element, + pub img_url: String, + pub max_hp: StatValue, + pub max_def: StatValue, + pub max_atk: StatValue, + pub speed: StatValue, + pub aggro: StatValue, + pub c_rate: StatValue, + pub c_dmg: StatValue, + pub eidolons: BTreeMap, + pub minor_traces: BTreeMap, + pub major_traces: BTreeMap, + pub skills: BTreeMap>, + pub max_mats: BTreeMap, +} diff --git a/resource_api/src/types/common.rs b/resource_api/src/types/common.rs new file mode 100644 index 0000000..db2402e --- /dev/null +++ b/resource_api/src/types/common.rs @@ -0,0 +1,92 @@ +use serde::{Deserialize, Serialize}; + +pub type Id = i32; +pub type Level = i32; +pub type Count = i32; +pub type Desc = String; +pub type Uri = String; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)] +pub enum StatValue { + Flat(f32), + Percent(f32), +} + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[repr(u8)] +pub enum StatType { + Aggro = 1, + AtkFlat = 2, + AtkPercent = 3, + BreakEffect = 4, + CritDamage = 5, + CritRate = 6, + DamageRes = 7, + DebuffRes = 8, + DefFlat = 9, + DefPercent = 10, + DmgBoost = 11, + DmgMitigation = 12, + EffectHitRate = 13, + EffectRes = 14, + Elation = 15, + Energy = 16, + EnergyRegenerationRate = 17, + HpFlat = 18, + HpPercent = 19, + Merrymake = 20, + OutgoingHealingBoost = 21, + Punchline = 22, + Speed = 23, + Toughness = 24, + Vulnerability = 25, +} + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[repr(u8)] +pub enum Ascension { + A2 = 1, + A4 = 2, + A6 = 3, +} + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[repr(u8)] +pub enum Path { + Destruction = 1, + Hunt = 2, + Erudition = 3, + Harmony = 4, + Nihility = 5, + Preservation = 6, + Abundance = 7, + Remembrance = 8, + Elation = 9, +} + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[repr(u8)] +pub enum Rarity { + ThreeStar = 3, + FourStar = 4, + FiveStar = 5, +} + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[repr(u8)] +pub enum Element { + Physical = 1, + Fire = 2, + Ice = 3, + Lightning = 4, + Wind = 5, + Quantum = 6, + Imaginary = 7, +} + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)] +#[repr(u8)] +pub enum RelicType { + Relic = 1, + Planar = 2, +} diff --git a/resource_api/src/types/enemy.rs b/resource_api/src/types/enemy.rs new file mode 100644 index 0000000..70b786d --- /dev/null +++ b/resource_api/src/types/enemy.rs @@ -0,0 +1 @@ +// TODO diff --git a/resource_api/src/types/game_mode/aa.rs b/resource_api/src/types/game_mode/aa.rs new file mode 100644 index 0000000..70b786d --- /dev/null +++ b/resource_api/src/types/game_mode/aa.rs @@ -0,0 +1 @@ +// TODO diff --git a/resource_api/src/types/game_mode/apoc.rs b/resource_api/src/types/game_mode/apoc.rs new file mode 100644 index 0000000..70b786d --- /dev/null +++ b/resource_api/src/types/game_mode/apoc.rs @@ -0,0 +1 @@ +// TODO diff --git a/resource_api/src/types/game_mode/moc.rs b/resource_api/src/types/game_mode/moc.rs new file mode 100644 index 0000000..70b786d --- /dev/null +++ b/resource_api/src/types/game_mode/moc.rs @@ -0,0 +1 @@ +// TODO diff --git a/resource_api/src/types/game_mode/mod.rs b/resource_api/src/types/game_mode/mod.rs new file mode 100644 index 0000000..d2fa826 --- /dev/null +++ b/resource_api/src/types/game_mode/mod.rs @@ -0,0 +1,11 @@ +#![allow(unused)] + +pub mod aa; +pub mod apoc; +pub mod moc; +pub mod pf; + +pub use aa::*; +pub use apoc::*; +pub use moc::*; +pub use pf::*; diff --git a/resource_api/src/types/game_mode/pf.rs b/resource_api/src/types/game_mode/pf.rs new file mode 100644 index 0000000..70b786d --- /dev/null +++ b/resource_api/src/types/game_mode/pf.rs @@ -0,0 +1 @@ +// TODO diff --git a/resource_api/src/types/item.rs b/resource_api/src/types/item.rs new file mode 100644 index 0000000..0a3412a --- /dev/null +++ b/resource_api/src/types/item.rs @@ -0,0 +1,12 @@ +use super::common::{Id, Uri}; +use serde::{Deserialize, Serialize}; +use std::collections::BTreeMap; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ItemSearch(pub BTreeMap); + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct ItemMini { + pub name: String, + pub img_url: Uri, +} diff --git a/resource_api/src/types/lightcone.rs b/resource_api/src/types/lightcone.rs new file mode 100644 index 0000000..375a09b --- /dev/null +++ b/resource_api/src/types/lightcone.rs @@ -0,0 +1,32 @@ +use super::common::{Count, Desc, Id, Level, Path, Rarity, StatValue, Uri}; +use super::item::ItemMini; +use serde::{Deserialize, Serialize}; +use std::collections::{BTreeMap, HashMap}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct LightconeSearch(pub BTreeMap); + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct LightconeMini { + pub name: String, + pub path: Path, + pub rarity: Rarity, + pub img_url: Uri, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct LightconeDetail(pub HashMap); + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct LightconeFull { + pub name: String, + pub path: Path, + pub rarity: Rarity, + pub img_url: Uri, + pub max_hp: StatValue, + pub max_def: StatValue, + pub max_atk: StatValue, + // superimpose -> desc + pub skill: HashMap, + pub max_mats: BTreeMap, +} diff --git a/resource_api/src/types/mod.rs b/resource_api/src/types/mod.rs new file mode 100644 index 0000000..5522080 --- /dev/null +++ b/resource_api/src/types/mod.rs @@ -0,0 +1,15 @@ +#![allow(unused)] + +pub mod character; +pub mod common; +pub mod game_mode; +pub mod item; +pub mod lightcone; +pub mod relic; + +pub use character::*; +pub use common::*; +pub use game_mode::*; +pub use item::*; +pub use lightcone::*; +pub use relic::*; diff --git a/resource_api/src/types/relic.rs b/resource_api/src/types/relic.rs new file mode 100644 index 0000000..c62b5a4 --- /dev/null +++ b/resource_api/src/types/relic.rs @@ -0,0 +1,25 @@ +use super::common::{Desc, Id, RelicType, Uri}; +use serde::{Deserialize, Serialize}; +use std::collections::{BTreeMap, HashMap}; + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct RelicSearch(pub BTreeMap); + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct RelicMini { + pub name: String, + pub r#type: RelicType, + pub img_url: String, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct RelicDetail(pub HashMap); + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct RelicFull { + pub name: String, + pub r#type: RelicType, + pub img_url: Uri, + pub two_pc: Desc, + pub four_pc: Option, +}