Added player skill levels to SpellsPanel

Added player skill levels to SpellsPanel
Increased visibility of D2S.SkillData
Added Skills class to Player to retrieve skill levels (without modifiers)
This commit is contained in:
Collin Smith
2019-03-16 14:45:11 -07:00
parent 244fa720f8
commit 1dcb773983
6 changed files with 77 additions and 30 deletions

View File

@ -49,7 +49,7 @@ public class Fonts {
data = fontformal10.getData();
data.lineHeight = data.xHeight = data.capHeight = 14;
data.ascent = 14;
data.ascent = 17;
data.down = -14;
data = fontformal11.getData();

View File

@ -601,15 +601,15 @@ public class D2S {
}
}
static class SkillData {
public static class SkillData {
static final byte[] SECTION_HEADER = {0x69, 0x66};
static final int NUM_TREES = 3;
static final int NUM_SKILLS = 10;
static final int SIZE = SECTION_HEADER.length + (NUM_TREES * NUM_SKILLS);
byte header[];
byte data[];
public byte header[];
public byte data[];
static SkillData obtain(ByteBuffer buffer) {
return new SkillData().read(buffer);

View File

@ -26,7 +26,7 @@ public class SkillDesc extends Excel<SkillDesc.Entry> {
public String str_alt;
@Column(format = "str mana")
public String str_mana;
@Column public String descdam;
@Column public int descdam;
@Column(format = "ddam calc1")
public String ddam_calc1;
@Column(format = "ddam calc2")
@ -40,91 +40,91 @@ public class SkillDesc extends Excel<SkillDesc.Entry> {
@Column public String p3dmelem;
@Column public String p3dmmin;
@Column public String p3dmmax;
@Column public String descatt;
@Column public int descatt;
@Column public String descmissile1;
@Column public String descmissile2;
@Column public String descmissile3;
@Column public String descline1;
@Column public int descline1;
@Column public String desctexta1;
@Column public String desctextb1;
@Column public String desccalca1;
@Column public String desccalcb1;
@Column public String descline2;
@Column public int descline2;
@Column public String desctexta2;
@Column public String desctextb2;
@Column public String desccalca2;
@Column public String desccalcb2;
@Column public String descline3;
@Column public int descline3;
@Column public String desctexta3;
@Column public String desctextb3;
@Column public String desccalca3;
@Column public String desccalcb3;
@Column public String descline4;
@Column public int descline4;
@Column public String desctexta4;
@Column public String desctextb4;
@Column public String desccalca4;
@Column public String desccalcb4;
@Column public String descline5;
@Column public int descline5;
@Column public String desctexta5;
@Column public String desctextb5;
@Column public String desccalca5;
@Column public String desccalcb5;
@Column public String descline6;
@Column public int descline6;
@Column public String desctexta6;
@Column public String desctextb6;
@Column public String desccalca6;
@Column public String desccalcb6;
@Column public String dsc2line1;
@Column public int dsc2line1;
@Column public String dsc2texta1;
@Column public String dsc2textb1;
@Column public String dsc2calca1;
@Column public String dsc2calcb1;
@Column public String dsc2line2;
@Column public int dsc2line2;
@Column public String dsc2texta2;
@Column public String dsc2textb2;
@Column public String dsc2calca2;
@Column public String dsc2calcb2;
@Column public String dsc2line3;
@Column public int dsc2line3;
@Column public String dsc2texta3;
@Column public String dsc2textb3;
@Column public String dsc2calca3;
@Column public String dsc2calcb3;
@Column public String dsc2line4;
@Column public int dsc2line4;
@Column public String dsc2texta4;
@Column public String dsc2textb4;
@Column public String dsc2calca4;
@Column public String dsc2calcb4;
@Column public String dsc3line1;
@Column public int dsc3line1;
@Column public String dsc3texta1;
@Column public String dsc3textb1;
@Column public String dsc3calca1;
@Column public String dsc3calcb1;
@Column public String dsc3line2;
@Column public int dsc3line2;
@Column public String dsc3texta2;
@Column public String dsc3textb2;
@Column public String dsc3calca2;
@Column public String dsc3calcb2;
@Column public String dsc3line3;
@Column public int dsc3line3;
@Column public String dsc3texta3;
@Column public String dsc3textb3;
@Column public String dsc3calca3;
@Column public String dsc3calcb3;
@Column public String dsc3line4;
@Column public int dsc3line4;
@Column public String dsc3texta4;
@Column public String dsc3textb4;
@Column public String dsc3calca4;
@Column public String dsc3calcb4;
@Column public String dsc3line5;
@Column public int dsc3line5;
@Column public String dsc3texta5;
@Column public String dsc3textb5;
@Column public String dsc3calca5;
@Column public String dsc3calcb5;
@Column public String dsc3line6;
@Column public int dsc3line6;
@Column public String dsc3texta6;
@Column public String dsc3textb6;
@Column public String dsc3calca6;
@Column public String dsc3calcb6;
@Column public String dsc3line7;
@Column public int dsc3line7;
@Column public String dsc3texta7;
@Column public String dsc3textb7;
@Column public String dsc3calca7;

View File

@ -20,5 +20,11 @@ public class Skills extends Excel<Skills.Entry> {
@Column public String monanim;
@Column public int seqnum;
@Column public int seqinput;
@Column public int reqlevel;
@Column public int startmana;
@Column public int minmana;
@Column public int manashift;
@Column public int mana;
@Column public int lvlmana;
}
}

View File

@ -86,6 +86,7 @@ public class Player extends Entity {
boolean alternate;
boolean ignoreUpdate;
public Stats stats;
public Skills skills;
public final CharacterClass charClass;
Array<Item> inventory = new Array<>();
@ -96,11 +97,13 @@ public class Player extends Entity {
public Player(String name, CharacterClass characterClass) {
this(name, characterClass.id);
stats = new StatsImpl(name, characterClass.id);
skills = new SkillsImpl();
}
public Player(D2S d2s) {
this(d2s.name, d2s.charClass);
stats = new D2SStats(d2s);
skills = new D2SSkills(d2s);
loadEquipped(d2s.items.equipped);
loadInventory(d2s.items.inventory);
}
@ -541,4 +544,30 @@ public class Player extends Entity {
return 0;
}
}
public interface Skills {
int getLevel(int skill);
}
public class SkillsImpl implements Skills {
SkillsImpl() {}
@Override
public int getLevel(int skill) {
return 0;
}
}
public class D2SSkills implements Skills {
public final D2S.SkillData skills;
D2SSkills(D2S d2s) {
this.skills = d2s.skills;
}
@Override
public int getLevel(int skill) {
skill -= charClass.firstSpell;
return skills.data[skill];
}
}
}

View File

@ -2,6 +2,7 @@ package com.riiablo.panel;
import com.badlogic.gdx.assets.AssetDescriptor;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Touchable;
@ -138,13 +139,14 @@ public class SpellsPanel extends WidgetGroup implements Disposable {
float[] X = { 0, 15, 84, 153 };
float[] Y = { 0, 370, 302, 234, 166, 98, 30 };
for (int i = charClass.firstSpell; i < charClass.lastSpell; i++) {
Skills.Entry skill = Riiablo.files.skills.get(i);
final Skills.Entry skill = Riiablo.files.skills.get(i);
final SkillDesc.Entry desc = Riiablo.files.skilldesc.get(skill.skilldesc);
final Table details = new Table() {{
final float SPACING = 2;
final BitmapFont font = Riiablo.fonts.font16;
setBackground(PaletteIndexedColorDrawable.MODAL_FONT16);
add(new Label(Riiablo.string.lookup(desc.str_name), Riiablo.fonts.font16, Riiablo.colors.green)).center().space(SPACING).row();
add(new Label(Riiablo.fonts.font16) {{
add(new Label(Riiablo.string.lookup(desc.str_name), font, Riiablo.colors.green)).center().space(SPACING).row();
add(new Label(font) {{
// TODO: It might possible to optimize this more -- goal is to reverse lines since they are backwards for some reason
String text = Riiablo.string.lookup(desc.str_long);
String[] lines = StringUtils.split(text, '\n');
@ -153,11 +155,17 @@ public class SpellsPanel extends WidgetGroup implements Disposable {
setText(text);
setAlignment(Align.center);
}}).center().space(SPACING).row();
add(new Label(Riiablo.string.lookup("skilldesc3") + skill.reqlevel, font)).center().space(SPACING).row();
add().height(font.getLineHeight()).center().space(SPACING).row();
add().height(font.getLineHeight()).center().space(SPACING).row();
add(new Label(Riiablo.string.lookup("StrSkill2") + 0, font)).center().space(SPACING).row();
pack();
}};
Button button = new Button(new Button.ButtonStyle(
new TextureRegionDrawable(Skillicon.getTexture(desc.IconCel)),
new TextureRegionDrawable(Skillicon.getTexture(desc.IconCel + 1)))) {
new TextureRegionDrawable(Skillicon.getTexture(desc.IconCel + 1))) {{
disabled = up;
}}) {
@Override
public void draw(PaletteIndexedBatch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
@ -169,11 +177,15 @@ public class SpellsPanel extends WidgetGroup implements Disposable {
button.setPosition(X[desc.SkillColumn], Y[desc.SkillRow]);
//button.setSize(48, 48);
Label skillLevel = new Label("0", Riiablo.fonts.font16);
// TODO: can be lazily init if default is 0
int sLvl = gameScreen.player.skills.getLevel(i);
Label skillLevel = new Label(sLvl > 0 ? Integer.toString(sLvl) : "", sLvl > 9 ? Riiablo.fonts.fontformal10 : Riiablo.fonts.font16);
skillLevel.setAlignment(Align.center);
skillLevel.setSize(16, 14);
skillLevel.setPosition(X[desc.SkillColumn] + 44, Y[desc.SkillRow] - 12);
//skillLevel.setSize(16, 14);
//skillLevel.setPosition(X[desc.SkillColumn] + 44, Y[desc.SkillRow] - 12);
skillLevel.setPosition(X[desc.SkillColumn] + 52, Y[desc.SkillRow] - 5, Align.center);
button.setUserObject(skillLevel);
button.setDisabled(sLvl <= 0);
Tab tab = tabs[desc.SkillPage];
tab.addActor(button);