From d05a3c6f3e51cdfebc4f5aa88b325ae814f35b9c Mon Sep 17 00:00:00 2001 From: Collin Smith Date: Mon, 1 Apr 2019 17:44:06 -0700 Subject: [PATCH] Added horadric cube Added horadric cube Added support for usable item spells --- core/src/com/riiablo/codec/excel/Misc.java | 1 + core/src/com/riiablo/panel/CubePanel.java | 100 ++++++++++++++++++++ core/src/com/riiablo/panel/ItemGrid.java | 9 ++ core/src/com/riiablo/screen/GameScreen.java | 7 ++ 4 files changed, 117 insertions(+) create mode 100644 core/src/com/riiablo/panel/CubePanel.java diff --git a/core/src/com/riiablo/codec/excel/Misc.java b/core/src/com/riiablo/codec/excel/Misc.java index 0522d96a..3cd882f2 100644 --- a/core/src/com/riiablo/codec/excel/Misc.java +++ b/core/src/com/riiablo/codec/excel/Misc.java @@ -2,6 +2,7 @@ package com.riiablo.codec.excel; public class Misc extends Excel { public static class Entry extends ItemEntry { + @Column public int pSpell; @Column public int spelldesc; @Column public String spelldescstr; } diff --git a/core/src/com/riiablo/panel/CubePanel.java b/core/src/com/riiablo/panel/CubePanel.java new file mode 100644 index 00000000..a2d29c39 --- /dev/null +++ b/core/src/com/riiablo/panel/CubePanel.java @@ -0,0 +1,100 @@ +package com.riiablo.panel; + +import com.badlogic.gdx.assets.AssetDescriptor; +import com.badlogic.gdx.graphics.g2d.Batch; +import com.badlogic.gdx.graphics.g2d.TextureRegion; +import com.badlogic.gdx.scenes.scene2d.InputEvent; +import com.badlogic.gdx.scenes.scene2d.Touchable; +import com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup; +import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; +import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; +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; + +public class CubePanel extends WidgetGroup implements Disposable { + private static final String TAG = "CubePanel"; + + final AssetDescriptor supertransmogrifierDescriptor = new AssetDescriptor<>("data\\global\\ui\\PANEL\\supertransmogrifier.dc6", DC6.class, DC6Loader.DC6Parameters.COMBINE); + TextureRegion supertransmogrifier; + + final AssetDescriptor miniconvertDescriptor = new AssetDescriptor<>("data\\global\\ui\\PANEL\\miniconvert.DC6", DC6.class); + Button btnTransmog; + + final AssetDescriptor buysellbtnDescriptor = new AssetDescriptor<>("data\\global\\ui\\PANEL\\buysellbtn.DC6", DC6.class); + Button btnExit; + + final GameScreen gameScreen; + final Inventory.Entry inventory; + + public CubePanel(GameScreen gameScreen) { + this.gameScreen = gameScreen; + + Riiablo.assets.load(supertransmogrifierDescriptor); + Riiablo.assets.finishLoadingAsset(supertransmogrifierDescriptor); + supertransmogrifier = Riiablo.assets.get(supertransmogrifierDescriptor).getTexture(); + setSize(supertransmogrifier.getRegionWidth(), supertransmogrifier.getRegionHeight()); + setTouchable(Touchable.enabled); + setVisible(false); + + btnExit = new Button(new Button.ButtonStyle() {{ + Riiablo.assets.load(buysellbtnDescriptor); + Riiablo.assets.finishLoadingAsset(buysellbtnDescriptor); + up = new TextureRegionDrawable(Riiablo.assets.get(buysellbtnDescriptor).getTexture(10)); + down = new TextureRegionDrawable(Riiablo.assets.get(buysellbtnDescriptor).getTexture(11)); + }}); + btnExit.setPosition(275, 15); + btnExit.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + setVisible(false); + } + }); + addActor(btnExit); + + btnTransmog = new Button(new Button.ButtonStyle() {{ + Riiablo.assets.load(miniconvertDescriptor); + Riiablo.assets.finishLoadingAsset(miniconvertDescriptor); + up = new TextureRegionDrawable(Riiablo.assets.get(miniconvertDescriptor).getTexture(0)); + down = new TextureRegionDrawable(Riiablo.assets.get(miniconvertDescriptor).getTexture(1)); + }}); + btnTransmog.setPosition(144, 139); + btnTransmog.addListener(new ClickListener() { + @Override + public void clicked(InputEvent event, float x, float y) { + //... + } + }); + addActor(btnTransmog); + + inventory = Riiablo.files.inventory.get("Transmogrify Box Page 1"); + + ItemGrid grid = new ItemGrid(gameScreen, inventory); + grid.populate(gameScreen.player.getStore(StoreLoc.CUBE)); + grid.setPosition( + inventory.gridLeft - inventory.invLeft, + getHeight() - inventory.gridTop - grid.getHeight()); + addActor(grid); + + //setDebug(true, true); + } + + @Override + public void dispose() { + btnExit.dispose(); + Riiablo.assets.unload(supertransmogrifierDescriptor.fileName); + Riiablo.assets.unload(miniconvertDescriptor.fileName); + Riiablo.assets.unload(buysellbtnDescriptor.fileName); + } + + @Override + public void draw(Batch batch, float a) { + batch.draw(supertransmogrifier, getX(), getY()); + super.draw(batch, a); + } +} diff --git a/core/src/com/riiablo/panel/ItemGrid.java b/core/src/com/riiablo/panel/ItemGrid.java index 95ef087a..8777c113 100644 --- a/core/src/com/riiablo/panel/ItemGrid.java +++ b/core/src/com/riiablo/panel/ItemGrid.java @@ -16,6 +16,7 @@ import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.ObjectSet; +import com.riiablo.codec.excel.Misc; import com.riiablo.graphics.BlendMode; import com.riiablo.Riiablo; import com.riiablo.codec.excel.Inventory; @@ -271,6 +272,14 @@ public class ItemGrid extends Group { ItemEntry entry = StoredItem.this.item.base; if (entry.useable) { Riiablo.audio.play(StoredItem.this.item.getUseSound(), true); + if (entry instanceof Misc.Entry) { + Misc.Entry misc = StoredItem.this.item.getBase(); + switch (misc.pSpell) { + case 7: + gameScreen.cubePanel.setVisible(true); + break; + } + } }/* else if (Riiablo.cursor.getItem() == null) { String[] BodyLocs = item.type.BodyLoc; for (String BodyLoc : BodyLocs) { diff --git a/core/src/com/riiablo/screen/GameScreen.java b/core/src/com/riiablo/screen/GameScreen.java index 8553fd68..db9d55bc 100644 --- a/core/src/com/riiablo/screen/GameScreen.java +++ b/core/src/com/riiablo/screen/GameScreen.java @@ -54,6 +54,7 @@ import com.riiablo.map.MapLoader; import com.riiablo.map.MapRenderer; import com.riiablo.panel.CharacterPanel; import com.riiablo.panel.ControlPanel; +import com.riiablo.panel.CubePanel; import com.riiablo.panel.EscapePanel; import com.riiablo.panel.HirelingPanel; import com.riiablo.panel.InventoryPanel; @@ -112,6 +113,7 @@ public class GameScreen extends ScreenAdapter implements LoadingScreen.Loadable public HirelingPanel hirelingPanel; public WaygatePanel waygatePanel; public QuestsPanel questsPanel; + public CubePanel cubePanel; public SpellsQuickPanel spellsQuickPanelL; public SpellsQuickPanel spellsQuickPanelR; MappedKeyStateAdapter mappedKeyStateListener; @@ -251,6 +253,9 @@ public class GameScreen extends ScreenAdapter implements LoadingScreen.Loadable stashPanel = new StashPanel(this); stashPanel.setPosition(0, stage.getHeight() - stashPanel.getHeight()); + cubePanel = new CubePanel(this); + cubePanel.setPosition(0, stage.getHeight() - cubePanel.getHeight()); + waygatePanel = new WaygatePanel(this); waygatePanel.setPosition(0, stage.getHeight() - waygatePanel.getHeight()); @@ -277,6 +282,7 @@ public class GameScreen extends ScreenAdapter implements LoadingScreen.Loadable stage.addActor(spellsPanel); stage.addActor(characterPanel); stage.addActor(stashPanel); + stage.addActor(cubePanel); stage.addActor(waygatePanel); stage.addActor(questsPanel); stage.addActor(spellsQuickPanelL); @@ -745,6 +751,7 @@ public class GameScreen extends ScreenAdapter implements LoadingScreen.Loadable spellsPanel.dispose(); characterPanel.dispose(); stashPanel.dispose(); + cubePanel.dispose(); waygatePanel.dispose(); questsPanel.dispose(); if (mobilePanel != null) mobilePanel.dispose();