From 3ad227545a6aa883e7329f1bc945fdf039019c19 Mon Sep 17 00:00:00 2001 From: juliancoffee Date: Fri, 1 Mar 2024 12:55:06 +0200 Subject: [PATCH] Remove char_state from active_auxiliary_key --- common/src/comp/ability.rs | 46 +++++++++++++------------------------ server/agent/src/attack.rs | 6 ++--- voxygen/src/hud/diary.rs | 1 - voxygen/src/hud/hotbar.rs | 4 ---- voxygen/src/hud/mod.rs | 24 ++++--------------- voxygen/src/hud/skillbar.rs | 4 ++-- voxygen/src/hud/slots.rs | 3 +-- 7 files changed, 25 insertions(+), 63 deletions(-) diff --git a/common/src/comp/ability.rs b/common/src/comp/ability.rs index 98f1874095..22705bed8a 100644 --- a/common/src/comp/ability.rs +++ b/common/src/comp/ability.rs @@ -40,9 +40,7 @@ use super::shockwave::ShockwaveDodgeable; pub const BASE_ABILITY_LIMIT: usize = 5; -// FIXME: different AbilitySpec on same ToolKind share the same key -// FIXME: only really works with weapons, glider just fallback to (None, None), -// but maybe that's ok? +// NOTE: different AbilitySpec on same ToolKind share the same key /// Descriptor to pick the right (auxiliary) ability set pub type AuxiliaryKey = (Option, Option); @@ -136,38 +134,27 @@ impl ActiveAbilities { } } - pub fn active_auxiliary_key( - inv: Option<&Inventory>, - char_state: Option<&CharacterState>, - ) -> AuxiliaryKey { - let source = AbilitySource::determine(char_state); + pub fn active_auxiliary_key(inv: Option<&Inventory>) -> AuxiliaryKey { + let tool_kind = |slot| { + inv.and_then(|inv| inv.equipped(slot)) + .and_then(|item| match &*item.kind() { + ItemKind::Tool(tool) => Some(tool.kind), + _ => None, + }) + }; - match source { - AbilitySource::Weapons => { - let tool_kind = |slot| { - inv.and_then(|inv| inv.equipped(slot)) - .and_then(|item| match &*item.kind() { - ItemKind::Tool(tool) => Some(tool.kind), - _ => None, - }) - }; - - ( - tool_kind(EquipSlot::ActiveMainhand), - tool_kind(EquipSlot::ActiveOffhand), - ) - }, - AbilitySource::Glider => (None, None), - } + ( + tool_kind(EquipSlot::ActiveMainhand), + tool_kind(EquipSlot::ActiveOffhand), + ) } pub fn auxiliary_set( &self, inv: Option<&Inventory>, skill_set: Option<&SkillSet>, - char_state: Option<&CharacterState>, ) -> Cow> { - let aux_key = Self::active_auxiliary_key(inv, char_state); + let aux_key = Self::active_auxiliary_key(inv); self.auxiliary_sets .get(&aux_key) @@ -180,7 +167,6 @@ impl ActiveAbilities { input: AbilityInput, inventory: Option<&Inventory>, skill_set: Option<&SkillSet>, - char_state: Option<&CharacterState>, ) -> Ability { match input { AbilityInput::Guard => self.guard.into(), @@ -188,7 +174,7 @@ impl ActiveAbilities { AbilityInput::Secondary => self.secondary.into(), AbilityInput::Movement => self.movement.into(), AbilityInput::Auxiliary(index) => self - .auxiliary_set(inventory, skill_set, char_state) + .auxiliary_set(inventory, skill_set) .get(index) .copied() .map(|a| a.into()) @@ -208,7 +194,7 @@ impl ActiveAbilities { context: &AbilityContext, // bool is from_offhand ) -> Option<(CharacterAbility, bool, SpecifiedAbility)> { - let ability = self.get_ability(input, inv, Some(skill_set), char_state); + let ability = self.get_ability(input, inv, Some(skill_set)); let ability_set = |equip_slot| { inv.and_then(|inv| inv.equipped(equip_slot)) diff --git a/server/agent/src/attack.rs b/server/agent/src/attack.rs index 1f8010f25b..1644b1c096 100644 --- a/server/agent/src/attack.rs +++ b/server/agent/src/attack.rs @@ -434,8 +434,7 @@ impl<'a> AgentData<'a> { agent.combat_state.int_counters[IntCounters::Tactics as usize] = tactic as u8; - let auxiliary_key = - ActiveAbilities::active_auxiliary_key(Some(self.inventory), Some(self.char_state)); + let auxiliary_key = ActiveAbilities::active_auxiliary_key(Some(self.inventory)); let set_sword_ability = |controller: &mut Controller, slot, skill| { controller.push_event(ControlEvent::ChangeAbility { slot, @@ -1220,8 +1219,7 @@ impl<'a> AgentData<'a> { agent.combat_state.int_counters[IntCounters::Tactic as usize] = tactic as u8; - let auxiliary_key = - ActiveAbilities::active_auxiliary_key(Some(self.inventory), Some(self.char_state)); + let auxiliary_key = ActiveAbilities::active_auxiliary_key(Some(self.inventory)); let set_axe_ability = |controller: &mut Controller, slot, skill| { controller.push_event(ControlEvent::ChangeAbility { slot, diff --git a/voxygen/src/hud/diary.rs b/voxygen/src/hud/diary.rs index fd27dc68f6..ffb888aa47 100644 --- a/voxygen/src/hud/diary.rs +++ b/voxygen/src/hud/diary.rs @@ -855,7 +855,6 @@ impl<'a> Widget for Diary<'a> { AbilityInput::Auxiliary(i), Some(self.inventory), Some(self.skill_set), - Some(self.char_state), ) .ability_id( Some(self.char_state), diff --git a/voxygen/src/hud/hotbar.rs b/voxygen/src/hud/hotbar.rs index e38daf893f..f3fc7bab26 100644 --- a/voxygen/src/hud/hotbar.rs +++ b/voxygen/src/hud/hotbar.rs @@ -81,10 +81,6 @@ impl State { .state() .read_storage::() .get(info.viewpoint_entity), - client - .state() - .read_storage::() - .get(info.viewpoint_entity), ) .iter() .enumerate() diff --git a/voxygen/src/hud/mod.rs b/voxygen/src/hud/mod.rs index dbe3002a10..4bcd3a68c8 100755 --- a/voxygen/src/hud/mod.rs +++ b/voxygen/src/hud/mod.rs @@ -4005,20 +4005,12 @@ impl Hud { let me = info.viewpoint_entity; if let Some(active_abilities) = active_abilities.get(me) { let ability_a = active_abilities - .auxiliary_set( - inventories.get(me), - skill_sets.get(me), - char_states.get(me), - ) + .auxiliary_set(inventories.get(me), skill_sets.get(me)) .get(a) .copied() .unwrap_or(AuxiliaryAbility::Empty); let ability_b = active_abilities - .auxiliary_set( - inventories.get(me), - skill_sets.get(me), - char_states.get(me), - ) + .auxiliary_set(inventories.get(me), skill_sets.get(me)) .get(b) .copied() .unwrap_or(AuxiliaryAbility::Empty); @@ -4163,20 +4155,12 @@ impl Hud { let me = info.viewpoint_entity; if let Some(active_abilities) = active_abilities.get(me) { let ability_a = active_abilities - .auxiliary_set( - inventories.get(me), - skill_sets.get(me), - char_states.get(me), - ) + .auxiliary_set(inventories.get(me), skill_sets.get(me)) .get(a) .copied() .unwrap_or(AuxiliaryAbility::Empty); let ability_b = active_abilities - .auxiliary_set( - inventories.get(me), - skill_sets.get(me), - char_states.get(me), - ) + .auxiliary_set(inventories.get(me), skill_sets.get(me)) .get(b) .copied() .unwrap_or(AuxiliaryAbility::Empty); diff --git a/voxygen/src/hud/skillbar.rs b/voxygen/src/hud/skillbar.rs index 184c668e39..60bdfc21dd 100644 --- a/voxygen/src/hud/skillbar.rs +++ b/voxygen/src/hud/skillbar.rs @@ -1028,7 +1028,7 @@ impl<'a> Skillbar<'a> { // Helper let tooltip_text = |slot| { - let (hotbar, inventory, _, skill_set, active_abilities, _, contexts, _, char_state, _) = + let (hotbar, inventory, _, skill_set, active_abilities, _, contexts, _, _, _) = content_source; hotbar.get(slot).and_then(|content| match content { hotbar::SlotContents::Inventory(i, _) => inventory.get_by_hash(i).map(|item| { @@ -1039,7 +1039,7 @@ impl<'a> Skillbar<'a> { }), hotbar::SlotContents::Ability(i) => active_abilities .and_then(|a| { - a.auxiliary_set(Some(inventory), Some(skill_set), char_state) + a.auxiliary_set(Some(inventory), Some(skill_set)) .get(i) .and_then(|a| { Ability::from(*a).ability_id( diff --git a/voxygen/src/hud/slots.rs b/voxygen/src/hud/slots.rs index 743a8c2690..a1fed4fefa 100644 --- a/voxygen/src/hud/slots.rs +++ b/voxygen/src/hud/slots.rs @@ -165,7 +165,7 @@ impl<'a> SlotKey, HotbarImageSource<'a>> for HotbarSlot { }, hotbar::SlotContents::Ability(i) => { let ability_id = active_abilities.and_then(|a| { - a.auxiliary_set(Some(inventory), Some(skillset), *char_state) + a.auxiliary_set(Some(inventory), Some(skillset)) .get(i) .and_then(|a| { Ability::from(*a).ability_id( @@ -262,7 +262,6 @@ impl<'a> SlotKey, img_ids::Imgs> for AbilitySlot { AbilityInput::Auxiliary(*index), Some(inventory), Some(skillset), - *char_state, ) .ability_id(*char_state, Some(inventory), Some(skillset), contexts), Self::Ability(ability) => Ability::from(*ability).ability_id(