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.
This commit is contained in:
Justin Edmund 2023-07-03 21:25:28 -07:00
parent 88b795cbd3
commit a54f1b4c46
3 changed files with 17 additions and 9 deletions

View file

@ -342,6 +342,7 @@ const Party = (props: Props) => {
appState.party.element = gridObject.object.element appState.party.element = gridObject.object.element
} else if (!gridObject.mainhand && gridObject.position !== null) { } else if (!gridObject.mainhand && gridObject.position !== null) {
let weapon = clonedeep(gridObject) let weapon = clonedeep(gridObject)
if (weapon.object.element === 0 && weapon.element < 1)
weapon.element = gridObject.object.element weapon.element = gridObject.object.element
appState.grid.weapons.allWeapons[gridObject.position] = weapon appState.grid.weapons.allWeapons[gridObject.position] = weapon

View file

@ -100,6 +100,12 @@ const WeaponModal = ({
setAwakening(gridWeapon.awakening.type) setAwakening(gridWeapon.awakening.type)
setAwakeningLevel(gridWeapon.awakening.level) setAwakeningLevel(gridWeapon.awakening.level)
} }
if (gridWeapon.object.ax || gridWeapon.object.awakenings) {
setFormValid(false)
} else {
setFormValid(true)
}
}, [gridWeapon]) }, [gridWeapon])
// Methods: Data retrieval // Methods: Data retrieval
@ -126,6 +132,7 @@ const WeaponModal = ({
// Receive values from AwakeningSelectWithInput // Receive values from AwakeningSelectWithInput
function receiveAwakeningValues(id: string, level: number) { function receiveAwakeningValues(id: string, level: number) {
setAwakening(gridWeapon.object.awakenings.find((a) => a.id === id)) setAwakening(gridWeapon.object.awakenings.find((a) => a.id === id))
console.log(level)
setAwakeningLevel(level) setAwakeningLevel(level)
setFormValid(true) setFormValid(true)
} }
@ -233,12 +240,6 @@ const WeaponModal = ({
if (modalOpen && hasBeenModified()) { if (modalOpen && hasBeenModified()) {
setAlertOpen(true) setAlertOpen(true)
} else { } else {
if (gridWeapon.object.ax || gridWeapon.object.awakenings) {
setFormValid(false)
} else {
setFormValid(true)
}
onOpenChange(open) onOpenChange(open)
} }
} }
@ -264,7 +265,6 @@ const WeaponModal = ({
} }
function elementChanged() { function elementChanged() {
if (gridWeapon.object.element === 0 && gridWeapon.element) return false
return element !== gridWeapon.element return element !== gridWeapon.element
} }
@ -329,6 +329,12 @@ const WeaponModal = ({
!isEqual(gridWeapon.awakening.type, awakening) || !isEqual(gridWeapon.awakening.type, awakening) ||
gridWeapon.awakening.level !== awakeningLevel 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 true if the awakening has been modified and is not empty
return awakeningChanged return awakeningChanged
} }

View file

@ -154,6 +154,7 @@ const WeaponUnit = ({
appState.party.element = gridWeapon.object.element appState.party.element = gridWeapon.object.element
} else if (!gridWeapon.mainhand && gridWeapon.position !== null) { } else if (!gridWeapon.mainhand && gridWeapon.position !== null) {
let weapon = clonedeep(gridWeapon) let weapon = clonedeep(gridWeapon)
if (weapon.object.element === 0 && weapon.element < 1)
weapon.element = gridWeapon.object.element weapon.element = gridWeapon.object.element
appState.grid.weapons.allWeapons[gridWeapon.position] = weapon appState.grid.weapons.allWeapons[gridWeapon.position] = weapon