2024-08-23 11:22:09 +00:00
|
|
|
use engine::prelude::*;
|
|
|
|
|
2024-08-23 17:09:23 +00:00
|
|
|
use crate::items::{ItemAffix, Rarities};
|
2024-08-23 11:22:09 +00:00
|
|
|
|
|
|
|
use std::env::var;
|
|
|
|
|
|
|
|
#[cfg(target_os = "windows")]
|
2024-08-24 13:36:58 +00:00
|
|
|
pub fn save_game_dir(game: &str) -> String {
|
2024-08-23 11:22:09 +00:00
|
|
|
let b = var("LOCALAPPDATA").expect("couldn't get local appdata variable");
|
|
|
|
|
2024-08-24 13:36:58 +00:00
|
|
|
format!("{b}\\{game}\\saves\\")
|
2024-08-23 11:22:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[cfg(target_os = "linux")]
|
2024-08-24 13:36:58 +00:00
|
|
|
pub fn save_game_dir(game: &str) -> String {
|
2024-08-23 11:22:09 +00:00
|
|
|
let b = var("HOME").expect("couldn't get HOME variable");
|
|
|
|
|
2024-08-24 13:36:58 +00:00
|
|
|
format!("{b}/.local/share/{game}/saves/")
|
2024-08-23 11:22:09 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
General,
|
|
|
|
"General",
|
|
|
|
{
|
|
|
|
level: u32,
|
|
|
|
exp: u32,
|
|
|
|
name: String,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
HelmetSlot,
|
|
|
|
"Helmet",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
ChestPlateSlot,
|
|
|
|
"ChestPlate",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
BeltSlot,
|
|
|
|
"Belt",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
GlovesSlot,
|
|
|
|
"Gloves",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
BootsSlot,
|
|
|
|
"Boots",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
FirstRingSlot,
|
|
|
|
"Ring0",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
SecondRingSlot,
|
|
|
|
"Ring1",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
ThirdRingSlot,
|
|
|
|
"Ring2",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
FourthRingSlot,
|
|
|
|
"Ring3",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
FirstAmuletSlot,
|
|
|
|
"Amulet0",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
SecondAmuletSlot,
|
|
|
|
"Amulet1",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
MainHandSlot,
|
|
|
|
"MainHand",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
OffHandSlot,
|
|
|
|
"OffHand",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
level: u32,
|
|
|
|
strength: u32,
|
|
|
|
agility: u32,
|
|
|
|
intelligence: u32,
|
|
|
|
rarity: Rarities,
|
|
|
|
[affixes: ItemAffix],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
InventorySave,
|
|
|
|
"Inventory",
|
|
|
|
{
|
|
|
|
[items: String],
|
|
|
|
[addons: String],
|
|
|
|
[books: String],
|
|
|
|
[jewels: String],
|
|
|
|
[maps: String],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
FirstAbilitySlot,
|
|
|
|
"FirstAbilitySlot",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
name: String,
|
|
|
|
rarity: Rarities,
|
|
|
|
level: u32,
|
|
|
|
[addons: String],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
SecondAbilitySlot,
|
|
|
|
"SecondAbilitySlot",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
name: String,
|
|
|
|
rarity: Rarities,
|
|
|
|
level: u32,
|
|
|
|
[addons: String],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
ThirdAbilitySlot,
|
|
|
|
"ThirdAbilitySlot",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
name: String,
|
|
|
|
rarity: Rarities,
|
|
|
|
level: u32,
|
|
|
|
[addons: String],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
FourthAbilitySlot,
|
|
|
|
"FourthAbilitySlot",
|
|
|
|
{
|
|
|
|
used: bool,
|
|
|
|
name: String,
|
|
|
|
rarity: Rarities,
|
|
|
|
level: u32,
|
|
|
|
[addons: String],
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
CraftingMaterialInfo,
|
|
|
|
"CraftingMaterials",
|
|
|
|
{
|
|
|
|
common: u32,
|
|
|
|
uncommon: u32,
|
|
|
|
magical: u32,
|
|
|
|
rare: u32,
|
|
|
|
epic: u32,
|
|
|
|
legendary: u32,
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_section!(
|
|
|
|
PassivesInfo,
|
|
|
|
"Passives",
|
|
|
|
{
|
|
|
|
blood_mage: u32,
|
|
|
|
vampire: u32,
|
|
|
|
hermes: u32,
|
|
|
|
thick_skinned: u32,
|
|
|
|
super_brain: u32,
|
|
|
|
survivalist: u32,
|
|
|
|
soul_catcher: u32,
|
|
|
|
pyromancer: u32,
|
|
|
|
thunder_god: u32,
|
|
|
|
sea_monster: u32,
|
|
|
|
gladiator: u32,
|
|
|
|
lucky_devil: u32,
|
|
|
|
rogue: u32,
|
|
|
|
alchemist: u32,
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
create_settings_container!(
|
|
|
|
SaveGame,
|
|
|
|
{
|
|
|
|
general: General,
|
|
|
|
|
|
|
|
// items
|
|
|
|
helmet: HelmetSlot,
|
|
|
|
chest_plate: ChestPlateSlot,
|
|
|
|
belt: BeltSlot,
|
|
|
|
gloves: GlovesSlot,
|
|
|
|
boots: BootsSlot,
|
|
|
|
|
|
|
|
// rings
|
|
|
|
ring_0: FirstRingSlot,
|
|
|
|
ring_1: SecondRingSlot,
|
|
|
|
ring_2: ThirdRingSlot,
|
|
|
|
ring_3: FourthRingSlot,
|
|
|
|
|
|
|
|
// amulets
|
|
|
|
amulet_0: FirstAmuletSlot,
|
|
|
|
amulet_1: SecondAmuletSlot,
|
|
|
|
|
|
|
|
// hands
|
|
|
|
main_hand: MainHandSlot,
|
|
|
|
off_hand: OffHandSlot,
|
|
|
|
|
|
|
|
// inventory
|
|
|
|
inventory: InventorySave,
|
|
|
|
|
|
|
|
// abilities
|
|
|
|
ability_0: FirstAbilitySlot,
|
|
|
|
ability_1: SecondAbilitySlot,
|
|
|
|
ability_2: ThirdAbilitySlot,
|
|
|
|
ability_3: FourthAbilitySlot,
|
|
|
|
|
|
|
|
crafting_materials: CraftingMaterialInfo,
|
|
|
|
|
|
|
|
passives: PassivesInfo,
|
|
|
|
}
|
|
|
|
);
|