diff --git a/ui/core/components/gear_picker/gear_picker.tsx b/ui/core/components/gear_picker/gear_picker.tsx index dff5b2d8a..2c6f971b6 100644 --- a/ui/core/components/gear_picker/gear_picker.tsx +++ b/ui/core/components/gear_picker/gear_picker.tsx @@ -155,10 +155,10 @@ export class ItemRenderer extends Component { this.nameContainerElem.appendChild(this.notice.rootElem); } - if (newItem.reforge) { - const reforgeData = Player.getReforgeData(newItem, newItem.reforge); - const fromText = shortSecondaryStatNames.get(newItem.reforge?.fromStat); - const toText = shortSecondaryStatNames.get(newItem.reforge?.toStat); + const reforgeData = newItem.getReforgeData(); + if (reforgeData) { + const fromText = shortSecondaryStatNames.get(reforgeData.reforge?.fromStat); + const toText = shortSecondaryStatNames.get(reforgeData.reforge?.toStat); this.reforgeElem.innerText = `Reforged ${Math.abs(reforgeData.fromAmount)} ${fromText} → ${reforgeData.toAmount} ${toText}`; this.reforgeElem.classList.remove('hide'); } else { diff --git a/ui/core/components/gear_picker/item_list.tsx b/ui/core/components/gear_picker/item_list.tsx index 025b9d6c3..f3d3cb993 100644 --- a/ui/core/components/gear_picker/item_list.tsx +++ b/ui/core/components/gear_picker/item_list.tsx @@ -5,12 +5,12 @@ import { SortDirection } from '../../constants/other'; import { EP_TOOLTIP } from '../../constants/tooltips'; import { setItemQualityCssClass } from '../../css_utils'; import { IndividualSimUI } from '../../individual_sim_ui'; -import { Player, ReforgeData } from '../../player'; +import { Player } from '../../player'; import { Class, GemColor, ItemQuality, ItemRandomSuffix, ItemSlot, ItemSpec } from '../../proto/common'; import { DatabaseFilters, RepFaction, UIEnchant as Enchant, UIGem as Gem, UIItem as Item, UIItem_FactionRestriction } from '../../proto/ui'; import { ActionId } from '../../proto_utils/action_id'; import { getUniqueEnchantString } from '../../proto_utils/enchants'; -import { EquippedItem } from '../../proto_utils/equipped_item'; +import { EquippedItem, ReforgeData } from '../../proto_utils/equipped_item'; import { difficultyNames, professionNames, REP_FACTION_NAMES, REP_FACTION_QUARTERMASTERS, REP_LEVEL_NAMES } from '../../proto_utils/names'; import { getPVPSeasonFromItem, isPVPItem } from '../../proto_utils/utils'; import { Sim } from '../../sim'; diff --git a/ui/core/components/gear_picker/selector_modal.tsx b/ui/core/components/gear_picker/selector_modal.tsx index 5eabc9a00..5f84f38f9 100644 --- a/ui/core/components/gear_picker/selector_modal.tsx +++ b/ui/core/components/gear_picker/selector_modal.tsx @@ -2,11 +2,11 @@ import clsx from 'clsx'; import tippy from 'tippy.js'; import { ref } from 'tsx-vanilla'; -import { Player, ReforgeData } from '../../player'; +import { Player } from '../../player'; import { GemColor, ItemQuality, ItemRandomSuffix, ItemSlot } from '../../proto/common'; import { UIEnchant as Enchant, UIGem as Gem, UIItem as Item } from '../../proto/ui'; import { ActionId } from '../../proto_utils/action_id'; -import { EquippedItem } from '../../proto_utils/equipped_item'; +import { EquippedItem, ReforgeData } from '../../proto_utils/equipped_item'; import { gemMatchesSocket, getEmptyGemSocketIconUrl } from '../../proto_utils/gems'; import { shortSecondaryStatNames, slotNames } from '../../proto_utils/names'; import { Stats } from '../../proto_utils/stats'; @@ -447,8 +447,7 @@ export default class SelectorModal extends BaseModal { }; }), computeEP: (reforge: ReforgeData) => this.player.computeReforgingEP(reforge), - equippedToItemFn: (equippedItem: EquippedItem | null) => - equippedItem?.reforge ? Player.getReforgeData(equippedItem, equippedItem.reforge) : null, + equippedToItemFn: (equippedItem: EquippedItem | null) => equippedItem?.getReforgeData() || null, onRemove: (eventID: number) => { const equippedItem = gearData.getEquippedItem(); if (equippedItem) { diff --git a/ui/core/components/individual_sim_ui/reforge_summary.tsx b/ui/core/components/individual_sim_ui/reforge_summary.tsx index 200a704bb..3e2558572 100644 --- a/ui/core/components/individual_sim_ui/reforge_summary.tsx +++ b/ui/core/components/individual_sim_ui/reforge_summary.tsx @@ -31,26 +31,21 @@ export class ReforgeSummary extends Component { private updateTable() { const body = <>; - let gear = this.player.getGear(); + const reforges = this.player.getGear().getAllReforges(); const totals: ReforgeSummaryTotal = {}; - gear.getItemSlots().forEach(itemSlot => { - const item = gear.getEquippedItem(itemSlot); - if (item?.reforge && item.reforge?.id !== 0) { - const reforge = Player.getReforgeData(item, item.reforge); - if (reforge) { - const { fromStat, toStat, fromAmount, toAmount } = reforge; - if (typeof totals[fromStat] !== 'number') { - totals[fromStat] = 0; - } - if (typeof totals[toStat] !== 'number') { - totals[toStat] = 0; - } - if (fromAmount) totals[fromStat]! += fromAmount; - if (toAmount) totals[toStat]! += toAmount; - } + for (const [_, reforgeData] of reforges) { + const { fromStat, toStat, fromAmount, toAmount } = reforgeData; + + if (typeof totals[fromStat] !== 'number') { + totals[fromStat] = 0; } - }); + if (typeof totals[toStat] !== 'number') { + totals[toStat] = 0; + } + if (fromAmount) totals[fromStat]! += fromAmount; + if (toAmount) totals[toStat]! += toAmount; + } const hasReforgedItems = !!Object.keys(totals).length; this.rootElem.classList[!hasReforgedItems ? 'add' : 'remove']('hide'); @@ -77,7 +72,7 @@ export class ReforgeSummary extends Component {