diff --git a/core/src/com/riiablo/entity/Player.java b/core/src/com/riiablo/entity/Player.java index ba7f1a3e..621c8050 100644 --- a/core/src/com/riiablo/entity/Player.java +++ b/core/src/com/riiablo/entity/Player.java @@ -17,6 +17,7 @@ import com.riiablo.codec.excel.Weapons; import com.riiablo.item.BodyLoc; import com.riiablo.item.Item; import com.riiablo.item.Quality; +import com.riiablo.item.StoreLoc; import com.riiablo.map.DT1.Tile; import com.riiablo.map.Map; import com.riiablo.server.Connect; @@ -103,8 +104,7 @@ public class Player extends Entity { public Map.Zone curZone; public final CharacterClass charClass; - Array inventory = new Array<>(); - + EnumMap> store = new EnumMap<>(StoreLoc.class); EnumMap equipped = new EnumMap<>(BodyLoc.class); final Set SLOT_LISTENERS = new CopyOnWriteArraySet<>(); public D2S.MercData merc; @@ -128,8 +128,7 @@ public class Player extends Entity { skills = new D2SSkills(d2s); skillBar = d2s.skillBar; actions = d2s.actions; - loadEquipped(d2s.items.equipped); - loadInventory(d2s.items.inventory); + loadItems(d2s.items.items); merc = d2s.merc; for (Item item : merc.items.items.items) { item.load(); @@ -159,36 +158,37 @@ public class Player extends Entity { return ArrayUtils.indexOf(skillBar, left ? skill | D2S.SKILL_RIGHT_MASK : skill); } - private void loadEquipped(EnumMap items) { - equipped.putAll(items); - for (java.util.Map.Entry entry : items.entrySet()) { - Item item = entry.getValue(); - item.setOwner(this); - if (item.quality == Quality.SET) { - SETS_OWNS.getAndIncrement(item.qualityId, 0, 1); - Sets.Entry set = Riiablo.files.SetItems.get(item.qualityId).getSet(); - int id = Riiablo.files.Sets.index(set.index); - SETS_EQUIP.getAndIncrement(id, 0, 1); - } - item.load(); - if (DEBUG_EQUIP) Gdx.app.debug(TAG, entry.getKey() + ": " + entry.getValue()); + private void loadItems(Array items) { + for (StoreLoc storeLoc : StoreLoc.values()) { + store.put(storeLoc, new Array()); } - } - - private void loadInventory(Array items) { - inventory.addAll(items); for (Item item : items) { item.setOwner(this); + switch (item.location) { + case EQUIPPED: + equipped.put(item.bodyLoc, item); + if (item.quality == Quality.SET) { + Sets.Entry set = Riiablo.files.SetItems.get(item.qualityId).getSet(); + int id = Riiablo.files.Sets.index(set.index); + SETS_EQUIP.getAndIncrement(id, 0, 1); + } + if (DEBUG_EQUIP) Gdx.app.debug(TAG, item.bodyLoc + ": " + item); + break; + case STORED: + store.get(item.storeLoc).add(item); + break; + default: + if (DEBUG_INV) Gdx.app.debug(TAG, item.gridX + "," + item.gridY + ": " + item); + } if (item.quality == Quality.SET) { SETS_OWNS.getAndIncrement(item.qualityId, 0, 1); } item.load(); - if (DEBUG_INV) Gdx.app.debug(TAG, item.gridX + "," + item.gridY + ": " + item); } } - public Array getInventory() { - return inventory; + public Array getStore(StoreLoc storeLoc) { + return store.get(storeLoc); } @Override diff --git a/core/src/com/riiablo/panel/InventoryPanel.java b/core/src/com/riiablo/panel/InventoryPanel.java index dbcad6a6..43a6d784 100644 --- a/core/src/com/riiablo/panel/InventoryPanel.java +++ b/core/src/com/riiablo/panel/InventoryPanel.java @@ -24,6 +24,7 @@ import com.riiablo.graphics.BlendMode; import com.riiablo.graphics.PaletteIndexedBatch; import com.riiablo.item.BodyLoc; import com.riiablo.item.Item; +import com.riiablo.item.StoreLoc; import com.riiablo.loader.DC6Loader; import com.riiablo.screen.GameScreen; import com.riiablo.widget.Button; @@ -260,7 +261,7 @@ public class InventoryPanel extends WidgetGroup implements Disposable { }); ItemGrid grid = new ItemGrid(gameScreen, inventory); - grid.populate(gameScreen.player.getInventory()); + grid.populate(gameScreen.player.getStore(StoreLoc.INVENTORY)); grid.setPosition( inventory.gridLeft - inventory.invLeft, getHeight() - inventory.gridTop - grid.getHeight()); diff --git a/core/src/com/riiablo/panel/StashPanel.java b/core/src/com/riiablo/panel/StashPanel.java index bdae2772..17a9c8a5 100644 --- a/core/src/com/riiablo/panel/StashPanel.java +++ b/core/src/com/riiablo/panel/StashPanel.java @@ -12,6 +12,7 @@ import com.badlogic.gdx.utils.Disposable; import com.riiablo.Riiablo; import com.riiablo.codec.DC6; import com.riiablo.codec.excel.Inventory; +import com.riiablo.item.StoreLoc; import com.riiablo.loader.DC6Loader; import com.riiablo.screen.GameScreen; import com.riiablo.widget.Button; @@ -56,7 +57,7 @@ public class StashPanel extends WidgetGroup implements Disposable { inventory = Riiablo.files.inventory.get("Big Bank Page 1"); ItemGrid grid = new ItemGrid(gameScreen, inventory); - //grid.populate(gameScreen.player.getStash()); + grid.populate(gameScreen.player.getStore(StoreLoc.STASH)); grid.setPosition( inventory.gridLeft - inventory.invLeft, getHeight() - inventory.gridTop - grid.getHeight());