Skip to content

Commit

Permalink
[cleanup]
Browse files Browse the repository at this point in the history
* cleanup: do not trigger equip for an action that is already equipped
  • Loading branch information
mlthelama committed Feb 5, 2023
1 parent 3d6a3f4 commit 01e67be
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 8 deletions.
11 changes: 5 additions & 6 deletions src/event/key_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -172,15 +172,14 @@ namespace event {
}

if (elden && button->IsPressed()) {
handle::position_setting* page_setting = nullptr;
if (is_key_valid(key_bottom_execute_or_toggle_) && key_ == key_bottom_execute_or_toggle_) {
page_setting = handle::setting_execute::get_position_setting_for_key(key_bottom_action_);
auto page_setting = handle::setting_execute::get_position_setting_for_key(key_bottom_action_);
handle::setting_execute::execute_settings(page_setting->slot_settings);
}
if (is_key_valid(key_top_execute_) && key_ == key_top_execute_) {
page_setting = handle::setting_execute::get_position_setting_for_key(key_top_action_);
}
if (page_setting) {
handle::setting_execute::execute_settings(page_setting->slot_settings);
auto page_setting = handle::setting_execute::get_position_setting_for_key(key_top_action_);
//only instant should need work, the default shout will be handled by the game
handle::setting_execute::execute_settings(page_setting->slot_settings, false, true);
}
}

Expand Down
7 changes: 6 additions & 1 deletion src/handle/setting/setting_execute.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
namespace handle {
using mcm = config::mcm_setting;

void setting_execute::execute_settings(const std::vector<slot_setting*>& a_slots, bool a_only_equip) {
void setting_execute::execute_settings(const std::vector<slot_setting*>& a_slots, bool a_only_equip, bool a_only_instant) {
logger::trace("got {} settings execute"sv, a_slots.size());
std::vector<RE::BGSEquipSlot*> un_equip;
auto player = RE::PlayerCharacter::GetSingleton();
Expand Down Expand Up @@ -41,6 +41,11 @@ namespace handle {
continue;
}

if (mcm::get_elden_demon_souls() && a_only_instant && slot->action != slot_setting::acton_type::instant) {
logger::trace("form {} does not need any work, skipping"sv, slot->form ? util::string_util::int_to_hex(slot->form->GetFormID()) : "null");
continue;
}

logger::trace("executing setting for type {}, action {}, form {}, left {} ..."sv,
static_cast<uint32_t>(slot->type),
static_cast<uint32_t>(slot->action),
Expand Down
2 changes: 1 addition & 1 deletion src/handle/setting/setting_execute.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
namespace handle {
class setting_execute {
public:
static void execute_settings(const std::vector<slot_setting*>& a_slots, bool a_only_equip = false);
static void execute_settings(const std::vector<slot_setting*>& a_slots, bool a_only_equip = false, bool a_only_instant = false);
static position_setting* get_position_setting_for_key(uint32_t a_key);
static void execute_ammo(const RE::TESForm* a_form);

Expand Down

0 comments on commit 01e67be

Please sign in to comment.