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
} else if (!gridObject.mainhand && gridObject.position !== null) {
let weapon = clonedeep(gridObject)
if (weapon.object.element === 0 && weapon.element < 1)
weapon.element = gridObject.object.element
appState.grid.weapons.allWeapons[gridObject.position] = weapon

View file

@ -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
}

View file

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