diff --git a/core/src/com/riiablo/codec/excel/SetItems.java b/core/src/com/riiablo/codec/excel/SetItems.java index 3a5cf9de..b8cfdbe2 100644 --- a/core/src/com/riiablo/codec/excel/SetItems.java +++ b/core/src/com/riiablo/codec/excel/SetItems.java @@ -1,8 +1,24 @@ package com.riiablo.codec.excel; -import com.riiablo.codec.excel.Excel; +import com.badlogic.gdx.utils.Array; +import com.badlogic.gdx.utils.ObjectMap; public class SetItems extends Excel { + private final ObjectMap> sets = new ObjectMap<>(); + + @Override + protected void init() { + for (SetItems.Entry item : this) { + Array items = sets.get(item.set); + if (items == null) sets.put(item.set, items = new Array<>(6)); + items.add(item); + } + } + + public Array getItems(SetItems.Entry item) { + return sets.get(item.set); + } + public static class Entry extends Excel.Entry { @Override public String toString() { diff --git a/core/src/com/riiablo/item/Item.java b/core/src/com/riiablo/item/Item.java index 7dc8aa21..4815a608 100644 --- a/core/src/com/riiablo/item/Item.java +++ b/core/src/com/riiablo/item/Item.java @@ -846,24 +846,10 @@ public class Item extends Actor implements Disposable { // TODO: This can be cleaned up later -- add support for set detection if (quality == SET) { add().height(font.getLineHeight()).space(SPACING).row(); - final SetItems.Entry set = Riiablo.files.SetItems.get(qualityId); add(new Label(Riiablo.string.lookup(set.set), font, Riiablo.colors.gold)).space(SPACING).row(); - - int id = qualityId; - for (;;) { - if (id - 1 >= 0 && set.set.equalsIgnoreCase(Riiablo.files.SetItems.get(id - 1).set)) { - id--; - } else { - break; - } - } - - for (;;) { - if (id >= Riiablo.files.SetItems.size()) break; - SetItems.Entry setSibling = Riiablo.files.SetItems.get(id++); - if (!set.set.equalsIgnoreCase(setSibling.set)) break; - add(new Label(Riiablo.string.lookup(setSibling.index), font, Riiablo.colors.red)).space(SPACING).row(); + for (SetItems.Entry item : Riiablo.files.SetItems.getItems(set)) { + add(new Label(Riiablo.string.lookup(item.index), font, Riiablo.colors.red)).space(SPACING).row(); } }