rpg_base/rpg_components/src/config/abilities.rs
2025-02-28 08:43:35 +01:00

182 lines
3.4 KiB
Rust

use assetpath::AssetPath;
use engine::prelude::*;
create_settings_section!(
AbilityIcons,
"Icons",
{
// ability book
book: AssetPath,
// ability add ons
damage: AssetPath,
projectile_speed: AssetPath,
bounce: AssetPath,
explosion: AssetPath,
size: AssetPath,
additional_projectiles: AssetPath,
cool_down: AssetPath,
distance: AssetPath,
addon_background: AssetPath,
}
);
create_settings_section!(
AbilityLevel,
"AbilityLevel",
{
starting_cost: u32,
cost_per_level: u32,
},
Serialize, Deserialize,
);
create_settings_section!(
AbilitySlotCount,
"RarityAddOnSlots",
{
common: u32,
uncommon: u32,
magical: u32,
rare: u32,
epic: u32,
legendary: u32,
}
);
impl_from_rarity!(AbilitySlotCount, u32);
create_settings_section!(
IntelligencePageRequirements,
"IntelligencePerAbilityPage",
{
first: u32,
second: u32,
third: u32,
fourth: u32,
}
);
create_settings_section!(
ProjectileSpeedSettings,
"ProjectileSpeed",
{
common: f32,
uncommon: f32,
magical: f32,
rare: f32,
epic: f32,
legendary: f32,
}
);
impl_from_rarity!(ProjectileSpeedSettings, f32);
create_settings_section!(
DamageSettings,
"Damage",
{
common: u32,
uncommon: u32,
magical: u32,
rare: u32,
epic: u32,
legendary: u32,
}
);
impl_from_rarity!(DamageSettings, u32);
create_settings_section!(
ExplosionSettings,
"Explosion",
{
common: f32,
uncommon: f32,
magical: f32,
rare: f32,
epic: f32,
legendary: f32,
}
);
impl_from_rarity!(ExplosionSettings, f32);
create_settings_section!(
SizeSettings,
"Size",
{
common: f32,
uncommon: f32,
magical: f32,
rare: f32,
epic: f32,
legendary: f32,
}
);
impl_from_rarity!(SizeSettings, f32);
create_settings_section!(
AdditionalProjectilesSettings,
"AdditionalProjectiles",
{
common: u32,
uncommon: u32,
magical: u32,
rare: u32,
epic: u32,
legendary: u32,
}
);
impl_from_rarity!(AdditionalProjectilesSettings, u32);
create_settings_section!(
CoolDownReductionSettings,
"CoolDownReduction",
{
common: f32,
uncommon: f32,
magical: f32,
rare: f32,
epic: f32,
legendary: f32,
}
);
impl_from_rarity!(CoolDownReductionSettings, f32);
create_settings_section!(
DistanceSettings,
"Distance",
{
common: f32,
uncommon: f32,
magical: f32,
rare: f32,
epic: f32,
legendary: f32,
}
);
impl_from_rarity!(DistanceSettings, f32);
create_settings_container!(
AbilitySettings,
{
icons: AbilityIcons,
level: AbilityLevel,
slot_count: AbilitySlotCount,
page_requirements: IntelligencePageRequirements,
projectile_speed: ProjectileSpeedSettings,
damage: DamageSettings,
explosion: ExplosionSettings,
size: SizeSettings,
additional_projectiles: AdditionalProjectilesSettings,
cool_down: CoolDownReductionSettings,
distance: DistanceSettings,
}
);