From a54f1b4c4639044f920de76a6122e1b0e0b46b7a Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Mon, 3 Jul 2023 21:25:28 -0700 Subject: [PATCH] Fix weapon element logic We had broken null weapons changing sprites when the element was changed, and the change detection was also broken. Some more stringent logic checks fixed both. --- components/party/Party/index.tsx | 3 ++- components/weapon/WeaponModal/index.tsx | 20 +++++++++++++------- components/weapon/WeaponUnit/index.tsx | 3 ++- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/components/party/Party/index.tsx b/components/party/Party/index.tsx index 43cb734e..80072c51 100644 --- a/components/party/Party/index.tsx +++ b/components/party/Party/index.tsx @@ -342,7 +342,8 @@ const Party = (props: Props) => { appState.party.element = gridObject.object.element } else if (!gridObject.mainhand && gridObject.position !== null) { let weapon = clonedeep(gridObject) - weapon.element = gridObject.object.element + if (weapon.object.element === 0 && weapon.element < 1) + weapon.element = gridObject.object.element appState.grid.weapons.allWeapons[gridObject.position] = weapon } diff --git a/components/weapon/WeaponModal/index.tsx b/components/weapon/WeaponModal/index.tsx index 484d4ff7..5502168e 100644 --- a/components/weapon/WeaponModal/index.tsx +++ b/components/weapon/WeaponModal/index.tsx @@ -100,6 +100,12 @@ const WeaponModal = ({ setAwakening(gridWeapon.awakening.type) setAwakeningLevel(gridWeapon.awakening.level) } + + if (gridWeapon.object.ax || gridWeapon.object.awakenings) { + setFormValid(false) + } else { + setFormValid(true) + } }, [gridWeapon]) // Methods: Data retrieval @@ -126,6 +132,7 @@ const WeaponModal = ({ // Receive values from AwakeningSelectWithInput function receiveAwakeningValues(id: string, level: number) { setAwakening(gridWeapon.object.awakenings.find((a) => a.id === id)) + console.log(level) setAwakeningLevel(level) setFormValid(true) } @@ -233,12 +240,6 @@ const WeaponModal = ({ if (modalOpen && hasBeenModified()) { setAlertOpen(true) } else { - if (gridWeapon.object.ax || gridWeapon.object.awakenings) { - setFormValid(false) - } else { - setFormValid(true) - } - onOpenChange(open) } } @@ -264,7 +265,6 @@ const WeaponModal = ({ } function elementChanged() { - if (gridWeapon.object.element === 0 && gridWeapon.element) return false return element !== gridWeapon.element } @@ -329,6 +329,12 @@ const WeaponModal = ({ !isEqual(gridWeapon.awakening.type, awakening) || gridWeapon.awakening.level !== awakeningLevel + console.log( + gridWeapon.awakening.type, + awakening, + gridWeapon.awakening.level, + awakeningLevel + ) // Return true if the awakening has been modified and is not empty return awakeningChanged } diff --git a/components/weapon/WeaponUnit/index.tsx b/components/weapon/WeaponUnit/index.tsx index 310505b2..4209c53a 100644 --- a/components/weapon/WeaponUnit/index.tsx +++ b/components/weapon/WeaponUnit/index.tsx @@ -154,7 +154,8 @@ const WeaponUnit = ({ appState.party.element = gridWeapon.object.element } else if (!gridWeapon.mainhand && gridWeapon.position !== null) { let weapon = clonedeep(gridWeapon) - weapon.element = gridWeapon.object.element + if (weapon.object.element === 0 && weapon.element < 1) + weapon.element = gridWeapon.object.element appState.grid.weapons.allWeapons[gridWeapon.position] = weapon }