pub struct OverlayResolver<R> {
base: R,
spell_overrides: IntMap<i32, SpellDataFlat>,
effect_overrides: FastMap<SpellEffectKey, SpellEffect>,
rotation_overrides: FastMap<String, String>,
}Expand description
Applies explicit spell, effect, and rotation overrides to a base resolver.
Fields§
§base: R§spell_overrides: IntMap<i32, SpellDataFlat>§effect_overrides: FastMap<SpellEffectKey, SpellEffect>§rotation_overrides: FastMap<String, String>Implementations§
Source§impl<R> OverlayResolver<R>
impl<R> OverlayResolver<R>
Sourcepub fn with_spell(self, spell: SpellDataFlat) -> Self
pub fn with_spell(self, spell: SpellDataFlat) -> Self
Adds or replaces a complete spell override.
Sourcepub fn with_effect(self, spell_id: i32, effect: SpellEffect) -> Self
pub fn with_effect(self, spell_id: i32, effect: SpellEffect) -> Self
Adds an effect override keyed by its one-based resolver index.
Sourcepub fn with_rotation_script(
self,
id: impl Into<String>,
script: impl Into<String>,
) -> Self
pub fn with_rotation_script( self, id: impl Into<String>, script: impl Into<String>, ) -> Self
Adds or replaces a rotation-script override.
fn override_effect( &self, spell_id: i32, effect_index: u8, ) -> Option<SpellEffect>
fn apply_effect_overrides(&self, spell_id: i32, effects: &mut [SpellEffect])
Trait Implementations§
Source§impl<R> DataResolver for OverlayResolver<R>where
R: DataResolver,
impl<R> DataResolver for OverlayResolver<R>where
R: DataResolver,
async fn get_spell( &self, spell_id: SpellId, ) -> Result<SpellDataFlat, ResolverError>
async fn get_spells( &self, spell_ids: &[SpellId], ) -> Result<Vec<SpellDataFlat>, ResolverError>
Source§async fn get_spell_effect(
&self,
spell_id: SpellId,
effect_index: u8,
) -> Result<SpellEffect, ResolverError>
async fn get_spell_effect( &self, spell_id: SpellId, effect_index: u8, ) -> Result<SpellEffect, ResolverError>
effect_index is 1-based (author-facing).async fn get_spell_effects( &self, spell_id: SpellId, ) -> Result<Vec<SpellEffect>, ResolverError>
async fn get_item(&self, item_id: i32) -> Result<ItemDataFlat, ResolverError>
Source§async fn find_consumable_items(
&self,
name_token: &str,
subclass: i32,
) -> Result<Vec<ItemDataFlat>, ResolverError>
async fn find_consumable_items( &self, name_token: &str, subclass: i32, ) -> Result<Vec<ItemDataFlat>, ResolverError>
Finds consumable items whose tokenized names contain
name_token.async fn get_scaling_data(&self) -> Result<Arc<ItemScalingData>, ResolverError>
async fn get_power_types(&self) -> Result<Vec<PowerTypeFlat>, ResolverError>
async fn get_spec(&self, spec_id: i32) -> Result<SpecDataFlat, ResolverError>
async fn get_trait_tree( &self, spec_id: i32, ) -> Result<TraitTreeFlat, ResolverError>
Source§async fn get_expansion_trait_tree(
&self,
expansion_id: i32,
system: &str,
) -> Result<ExpansionTraitTreeFlat, ResolverError>
async fn get_expansion_trait_tree( &self, expansion_id: i32, system: &str, ) -> Result<ExpansionTraitTreeFlat, ResolverError>
Fetch a class-agnostic expansion progression tree, such as Midnight’s Omnium Folio.
Source§async fn get_spell_overrides(
&self,
spec_id: i32,
) -> Result<Vec<(SpellId, SpellId)>, ResolverError>
async fn get_spell_overrides( &self, spec_id: i32, ) -> Result<Vec<(SpellId, SpellId)>, ResolverError>
Required for resolver parity: a backend with no override table returns
Ok(vec![]).Source§async fn get_specialization_spells(
&self,
spec_id: i32,
) -> Result<Vec<SpellId>, ResolverError>
async fn get_specialization_spells( &self, spec_id: i32, ) -> Result<Vec<SpellId>, ResolverError>
Every spell id assigned to the spec in
SpecializationSpells; a backend with no table returns Ok(vec![]).Source§async fn get_racial_spells(
&self,
race_id: i32,
class_id: i32,
) -> Result<Vec<SpellId>, ResolverError>
async fn get_racial_spells( &self, race_id: i32, class_id: i32, ) -> Result<Vec<SpellId>, ResolverError>
Every racial ability the race grants the class; a backend with no table returns
Ok(vec![]). Read moreSource§async fn get_expected_stats(
&self,
expansion_id: i32,
lvl: i32,
) -> Result<ExpectedStatFlat, ResolverError>
async fn get_expected_stats( &self, expansion_id: i32, lvl: i32, ) -> Result<ExpectedStatFlat, ResolverError>
Required for resolver parity: return
ExpectedStatsNotFound when a backend cannot source it.async fn get_rotation_script( &self, rotation_id: &str, ) -> Result<String, ResolverError>
Source§async fn get_item_damage_scaling(
&self,
item_level: i32,
weapon_type: &str,
) -> Result<ItemDamageScalingFlat, ResolverError>
async fn get_item_damage_scaling( &self, item_level: i32, weapon_type: &str, ) -> Result<ItemDamageScalingFlat, ResolverError>
Required for resolver parity: return
ItemDamageScalingNotFound when a backend cannot source it.Source§async fn get_enchantment(
&self,
enchantment_id: i32,
) -> Result<EnchantmentRow, ResolverError>
async fn get_enchantment( &self, enchantment_id: i32, ) -> Result<EnchantmentRow, ResolverError>
Required for resolver parity: return
EnchantmentNotFound when a backend cannot source it.Source§async fn find_permanent_enchant(
&self,
query: &PermanentEnchantQuery,
) -> Result<Option<PermanentEnchantFlat>, ResolverError>
async fn find_permanent_enchant( &self, query: &PermanentEnchantQuery, ) -> Result<Option<PermanentEnchantFlat>, ResolverError>
Resolves a named permanent enchant through the profession-derived
SimC index.Source§async fn search_spells(
&self,
query: &str,
limit: u32,
) -> Result<Vec<SpellSearchResult>, ResolverError>
async fn search_spells( &self, query: &str, limit: u32, ) -> Result<Vec<SpellSearchResult>, ResolverError>
Defaults to
Unsupported; a backend with no search index fails loud rather than returning empty.Source§async fn get_creature(
&self,
creature_id: i32,
) -> Result<CreatureFlat, ResolverError>
async fn get_creature( &self, creature_id: i32, ) -> Result<CreatureFlat, ResolverError>
Creature identity row (
Creature table) by NPC ID; defaults to Unsupported until a backend implements enemy resolution.Source§async fn get_creature_difficulties(
&self,
creature_id: i32,
) -> Result<Vec<CreatureDifficultyFlat>, ResolverError>
async fn get_creature_difficulties( &self, creature_id: i32, ) -> Result<Vec<CreatureDifficultyFlat>, ResolverError>
Every
CreatureDifficulty variant for a creature; defaults to Unsupported until a backend implements enemy resolution.Source§async fn get_content_tuning(
&self,
content_tuning_id: i32,
) -> Result<ContentTuningFlat, ResolverError>
async fn get_content_tuning( &self, content_tuning_id: i32, ) -> Result<ContentTuningFlat, ResolverError>
ContentTuning row by ID; defaults to Unsupported until a backend implements enemy resolution.Source§async fn get_content_tuning_x_difficulty(
&self,
content_tuning_id: i32,
) -> Result<Vec<ContentTuningXDifficultyFlat>, ResolverError>
async fn get_content_tuning_x_difficulty( &self, content_tuning_id: i32, ) -> Result<Vec<ContentTuningXDifficultyFlat>, ResolverError>
Every
ContentTuningXDifficulty mapping for a content tuning; defaults to Unsupported until a backend implements enemy resolution.Source§async fn get_content_tuning_x_expected(
&self,
content_tuning_id: i32,
) -> Result<Vec<ContentTuningXExpectedFlat>, ResolverError>
async fn get_content_tuning_x_expected( &self, content_tuning_id: i32, ) -> Result<Vec<ContentTuningXExpectedFlat>, ResolverError>
Every
ContentTuningXExpected mapping; row selection stays in the application layer.Source§async fn get_expected_stat_mod(
&self,
expected_stat_mod_id: i32,
) -> Result<ExpectedStatModFlat, ResolverError>
async fn get_expected_stat_mod( &self, expected_stat_mod_id: i32, ) -> Result<ExpectedStatModFlat, ResolverError>
ExpectedStatMod multiplier row by ID.Source§async fn get_challenge_mode_health(
&self,
keystone_level: i32,
) -> Result<ChallengeModeHealthFlat, ResolverError>
async fn get_challenge_mode_health( &self, keystone_level: i32, ) -> Result<ChallengeModeHealthFlat, ResolverError>
ChallengeModeHealth GameTable scalar by keystone level.Source§fn decode_traits(
&self,
spec_id: i32,
trait_string: &str,
) -> impl Future<Output = Result<TraitTreeWithSelections, ResolverError>> + Send
fn decode_traits( &self, spec_id: i32, trait_string: &str, ) -> impl Future<Output = Result<TraitTreeWithSelections, ResolverError>> + Send
Decode a loadout string against this spec’s tree into a raw selected tree; talent-tree interpretation is the caller’s job.
Auto Trait Implementations§
impl<R> Freeze for OverlayResolver<R>where
R: Freeze,
impl<R> RefUnwindSafe for OverlayResolver<R>where
R: RefUnwindSafe,
impl<R> Send for OverlayResolver<R>where
R: Send,
impl<R> Sync for OverlayResolver<R>where
R: Sync,
impl<R> Unpin for OverlayResolver<R>where
R: Unpin,
impl<R> UnsafeUnpin for OverlayResolver<R>where
R: UnsafeUnpin,
impl<R> UnwindSafe for OverlayResolver<R>where
R: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more