diff --git a/src/coffee/models/inventory.coffee b/src/coffee/models/inventory.coffee index ed1749a5b..645e8085b 100644 --- a/src/coffee/models/inventory.coffee +++ b/src/coffee/models/inventory.coffee @@ -76,21 +76,37 @@ module.exports = class Inventory extends BaseModel localize: -> if not @modPack? then throw new Error 'localize requires @modPack' + changed = false newSlugs = [] + newStacks = [] for itemSlug in @_itemSlugs stack = @_stacks[itemSlug] + continue unless stack? + + qualifiedSlug = if itemSlug.isQualified then itemSlug else null + if not qualifiedSlug? + qualifiedSlug = @modPack.findItem(itemSlug)?.slug + changed = qualifiedSlug? - qualifiedSlug = @modPack.findItem(itemSlug)?.slug if qualifiedSlug? - delete @_stacks[itemSlug] newSlugs.push qualifiedSlug - @_stacks[qualifiedSlug] = stack - stack.itemSlug = qualifiedSlug + newStacks.push new Stack itemSlug:qualifiedSlug, stack.quantity else newSlugs.push itemSlug + newStacks.push stack - @_itemSlugs = newSlugs - @_sort() + if changed + for itemSlug, stack of @_stacks + @stopListening stack + + @_itemSlugs = newSlugs + @_stacks = {} + for stack in newStacks + @_stacks[stack.itemSlug] = stack + @listenTo stack, Event.change, => @trigger Event.change, this + + @_sort() + @trigger Event.change, this pop: -> itemSlug = @_itemSlugs.pop()