Added horadric cube

Added horadric cube
Added support for usable item spells
This commit is contained in:
Collin Smith 2019-04-01 17:44:06 -07:00
parent 18c12515a3
commit d05a3c6f3e
4 changed files with 117 additions and 0 deletions

View File

@ -2,6 +2,7 @@ package com.riiablo.codec.excel;
public class Misc extends Excel<Misc.Entry> {
public static class Entry extends ItemEntry {
@Column public int pSpell;
@Column public int spelldesc;
@Column public String spelldescstr;
}

View File

@ -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<DC6> supertransmogrifierDescriptor = new AssetDescriptor<>("data\\global\\ui\\PANEL\\supertransmogrifier.dc6", DC6.class, DC6Loader.DC6Parameters.COMBINE);
TextureRegion supertransmogrifier;
final AssetDescriptor<DC6> miniconvertDescriptor = new AssetDescriptor<>("data\\global\\ui\\PANEL\\miniconvert.DC6", DC6.class);
Button btnTransmog;
final AssetDescriptor<DC6> 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);
}
}

View File

@ -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) {

View File

@ -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();