Added support for more calc functions

Added support for more calc functions
Added StringTBLs.format(String, Object...)
Cleaned up SkillDesc and Skills
This commit is contained in:
Collin Smith 2019-03-17 03:10:43 -07:00
parent 960d1878e6
commit aa84393b27
4 changed files with 107 additions and 99 deletions

View File

@ -63,10 +63,6 @@ public class StringTBLs {
}
}
public String format(int index, Object... args) {
return String.format(lookup(index), args);
}
public String lookup(String key) {
String str;
if ((str = patchstring.lookup(key)) != null) return str;
@ -74,4 +70,12 @@ public class StringTBLs {
if ((str = string.lookup(key)) != null) return str;
return "ERROR: " + key;
}
public String format(int index, Object... args) {
return String.format(lookup(index), args);
}
public String format(String index, Object... args) {
return String.format(lookup(index), args);
}
}

View File

@ -44,90 +44,35 @@ public class SkillDesc extends Excel<SkillDesc.Entry> {
@Column public String descmissile1;
@Column public String descmissile2;
@Column public String descmissile3;
@Column public int descline1;
@Column public String desctexta1;
@Column public String desctextb1;
@Column public String desccalca1;
@Column public String desccalcb1;
@Column public int descline2;
@Column public String desctexta2;
@Column public String desctextb2;
@Column public String desccalca2;
@Column public String desccalcb2;
@Column public int descline3;
@Column public String desctexta3;
@Column public String desctextb3;
@Column public String desccalca3;
@Column public String desccalcb3;
@Column public int descline4;
@Column public String desctexta4;
@Column public String desctextb4;
@Column public String desccalca4;
@Column public String desccalcb4;
@Column public int descline5;
@Column public String desctexta5;
@Column public String desctextb5;
@Column public String desccalca5;
@Column public String desccalcb5;
@Column public int descline6;
@Column public String desctexta6;
@Column public String desctextb6;
@Column public String desccalca6;
@Column public String desccalcb6;
@Column public int dsc2line1;
@Column public String dsc2texta1;
@Column public String dsc2textb1;
@Column public String dsc2calca1;
@Column public String dsc2calcb1;
@Column public int dsc2line2;
@Column public String dsc2texta2;
@Column public String dsc2textb2;
@Column public String dsc2calca2;
@Column public String dsc2calcb2;
@Column public int dsc2line3;
@Column public String dsc2texta3;
@Column public String dsc2textb3;
@Column public String dsc2calca3;
@Column public String dsc2calcb3;
@Column public int dsc2line4;
@Column public String dsc2texta4;
@Column public String dsc2textb4;
@Column public String dsc2calca4;
@Column public String dsc2calcb4;
@Column public int dsc3line1;
@Column public String dsc3texta1;
@Column public String dsc3textb1;
@Column public String dsc3calca1;
@Column public String dsc3calcb1;
@Column public int dsc3line2;
@Column public String dsc3texta2;
@Column public String dsc3textb2;
@Column public String dsc3calca2;
@Column public String dsc3calcb2;
@Column public int dsc3line3;
@Column public String dsc3texta3;
@Column public String dsc3textb3;
@Column public String dsc3calca3;
@Column public String dsc3calcb3;
@Column public int dsc3line4;
@Column public String dsc3texta4;
@Column public String dsc3textb4;
@Column public String dsc3calca4;
@Column public String dsc3calcb4;
@Column public int dsc3line5;
@Column public String dsc3texta5;
@Column public String dsc3textb5;
@Column public String dsc3calca5;
@Column public String dsc3calcb5;
@Column public int dsc3line6;
@Column public String dsc3texta6;
@Column public String dsc3textb6;
@Column public String dsc3calca6;
@Column public String dsc3calcb6;
@Column public int dsc3line7;
@Column public String dsc3texta7;
@Column public String dsc3textb7;
@Column public String dsc3calca7;
@Column public String dsc3calcb7;
@Column(startIndex = 1, endIndex = 7)
public int descline[];
@Column(startIndex = 1, endIndex = 7)
public String desctexta[];
@Column(startIndex = 1, endIndex = 7)
public String desctextb[];
@Column(startIndex = 1, endIndex = 7)
public String desccalca[];
@Column(startIndex = 1, endIndex = 7)
public String desccalcb[];
@Column(startIndex = 1, endIndex = 5)
public int dsc2line[];
@Column(startIndex = 1, endIndex = 5)
public String dsc2texta[];
@Column(startIndex = 1, endIndex = 5)
public String dsc2textb[];
@Column(startIndex = 1, endIndex = 5)
public String dsc2calca[];
@Column(startIndex = 1, endIndex = 5)
public String dsc2calcb[];
@Column(startIndex = 1, endIndex = 8)
public int dsc3line[];
@Column(startIndex = 1, endIndex = 8)
public String dsc3texta[];
@Column(startIndex = 1, endIndex = 8)
public String dsc3textb[];
@Column(startIndex = 1, endIndex = 8)
public String dsc3calca[];
@Column(startIndex = 1, endIndex = 8)
public String dsc3calcb[];
}
}

View File

@ -26,5 +26,7 @@ public class Skills extends Excel<Skills.Entry> {
@Column public int manashift;
@Column public int mana;
@Column public int lvlmana;
@Column(startIndex = 1, endIndex = 9)
public int Param[];
}
}

View File

@ -1,6 +1,7 @@
package com.riiablo.panel;
import com.badlogic.gdx.assets.AssetDescriptor;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
@ -28,6 +29,7 @@ import com.riiablo.widget.LabelButton;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
public class SpellsPanel extends WidgetGroup implements Disposable {
private static final String TAG = "SpellsPanel";
@ -156,15 +158,38 @@ 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();
if (sLvl <= 0) {
add(new Label(Riiablo.string.lookup("skilldesc3") + skill.reqlevel, font)).center().space(SPACING).row();
}
add().height(font.getLineHeight()).center().space(SPACING).row();
for (int i = 0; i < desc.dsc2line.length; i++) {
if (desc.dsc2line[i] <= 0) break;
String str = calc(desc.dsc2line[i], desc, i, skill, sLvl);
String str = calc(desc, i, desc.descline, desc.dsc2texta, desc.dsc2textb, desc.dsc2calca, desc.dsc2calcb, skill, sLvl);
if (str != null) add(new Label(str, Riiablo.fonts.font16)).center().space(SPACING).row();
}
add().height(font.getLineHeight()).center().space(SPACING).row();
add(new Label(Riiablo.string.lookup("StrSkill2") + sLvl, font)).center().space(SPACING).row();
add(new Label(sLvl <= 0 ? Riiablo.string.lookup("StrSkill17") : Riiablo.string.lookup("StrSkill2") + sLvl, font)).center().space(SPACING).row();
for (int i = 0; i < desc.descline.length; i++) {
if (desc.descline[i] <= 0) break;
String str = calc(desc, i, desc.descline, desc.desctexta, desc.desctextb, desc.desccalca, desc.desccalcb, skill, sLvl);
if (str != null) add(new Label(str, Riiablo.fonts.font16)).center().space(SPACING).row();
}
if (sLvl > 0) {
add().height(font.getLineHeight()).center().space(SPACING).row();
add(new Label(Riiablo.string.lookup("StrSkill1"), font)).center().space(SPACING).row();
for (int i = 0; i < desc.descline.length; i++) {
if (desc.descline[i] <= 0) break;
String str = calc(desc, i, desc.descline, desc.desctexta, desc.desctextb, desc.desccalca, desc.desccalcb, skill, sLvl + 1);
if (str != null) add(new Label(str, Riiablo.fonts.font16)).center().space(SPACING).row();
}
}
add().height(font.getLineHeight()).center().space(SPACING).row();
//add(new Label(Riiablo.string.format("Sksyn", Riiablo.string.lookup(desc.str_name)), font, Riiablo.colors.green)).center().space(SPACING).row();
for (int i = 0; i < desc.dsc3line.length; i++) {
if (desc.dsc3line[i] <= 0) break;
String str = calc(desc, i, desc.dsc3line, desc.dsc3texta, desc.dsc3textb, desc.dsc3calca, desc.dsc3calcb, skill, sLvl);
if (str != null) add(new Label(str, Riiablo.fonts.font16, desc.dsc3line[i] == 40 ? SpellsPanel.getColor(desc.dsc3calca[i]) : Riiablo.colors.white)).center().space(SPACING).row();
}
pack();
}};
Button button = new Button(new Button.ButtonStyle(
@ -201,13 +226,45 @@ public class SpellsPanel extends WidgetGroup implements Disposable {
//setDebug(true, true);
}
private String calc(int func, SkillDesc.Entry desc, int i, Skills.Entry skill, int lvl) {
switch(func) {
case 1: return String.format("%s%s", Riiablo.string.lookup(desc.str_mana), getManaCost(skill, lvl)); // fire bolt
case 3: return String.format("%s%s%s", Riiablo.string.lookup(desc.dsc2texta[i]), eval(skill, lvl, desc.dsc2calca[i]), Riiablo.string.lookup(desc.dsc2textb[i])); // static field
case 5: return String.format("%s%s", Riiablo.string.lookup(desc.dsc2texta[i]), eval(skill, lvl, desc.dsc2calca[i])); // inferno
case 19: return String.format("%s%s%s%s", (desc.dsc2textb[i].length() > 0 ? Riiablo.string.lookup(desc.dsc2textb[i]) : ""), Riiablo.string.lookup(desc.dsc2texta[i]), eval(skill, lvl, desc.dsc2calca[i]) * 2f/3f, Riiablo.string.lookup("StrSkill26")); // glacial spike
case 28: return String.format("%s1%s", Riiablo.string.lookup("StrSkill18"), Riiablo.string.lookup("StrSkill36")); // fire ball
private static Color getColor(String str) {
int i = NumberUtils.toInt(str, 0);
switch (i) {
case 0: return Riiablo.colors.white;
case 1: return Riiablo.colors.red;
case 2: return Riiablo.colors.green;
case 3: return Riiablo.colors.blue;
case 4: return Riiablo.colors.gold;
case 5: return Riiablo.colors.grey;
case 6: return Color.CLEAR;
case 7: return Riiablo.colors.c7;
case 8: return Riiablo.colors.orange;
case 9: return Riiablo.colors.yellow;
default: return Riiablo.colors.white;
}
}
private String calc(SkillDesc.Entry desc, int i, int[] descline, String[] desctexta, String[] desctextb, String[] desccalca, String[] desccalcb, Skills.Entry skill, int lvl) {
switch(descline[i]) {
case 1: return String.format("%s%s", Riiablo.string.lookup(desc.str_mana), getManaCost(skill, lvl)); // Mana Cost: 3
case 2: return String.format("%s+%s%s", Riiablo.string.lookup(desctexta[i]), eval(skill, lvl, desccalca[i]), Riiablo.string.lookup(desctextb[i])); // Fire Damage: +30 percent
case 3: return String.format("%s%s%s", Riiablo.string.lookup(desctexta[i]), eval(skill, lvl, desccalca[i]), Riiablo.string.lookup(desctextb[i])); // Weakens enemies by 25 percent
case 4: return String.format("%s+%s", Riiablo.string.lookup(desctexta[i]), eval(skill, lvl, desccalca[i])); // Heals +2
case 5: return String.format("%s%s", Riiablo.string.lookup(desctexta[i]), eval(skill, lvl, desccalca[i])); // Minimum mana to cast: 4
case 6: return String.format("+%s%s", eval(skill, lvl, desccalca[i]), Riiablo.string.lookup(desctexta[i])); // +30 percent
case 7: return String.format("%s%s", eval(skill, lvl, desccalca[i]), Riiablo.string.lookup(desctexta[i])); // 13 percent chance
case 8: return String.format("%s%s", Riiablo.string.lookup(desctexta[i]), Riiablo.string.lookup(desctextb[i])); // 200 Attack Rating
case 9: return String.format("%s%s%s+%s", Riiablo.string.lookup(desctexta[i]), Riiablo.string.lookup(desctextb[i]), Riiablo.string.lookup("StrSkill4"), eval(skill, lvl, desccalca[i])); // Damage bonus
//case 10: return String.format("%s%s", Riiablo.string.lookup(desctexta[i]), Riiablo.string.lookup(desctextb[i])); // (Elem) Damage: X-Y
//case 11: return String.format("%s%s", Riiablo.string.lookup(desctexta[i]), Riiablo.string.lookup(desctextb[i])); // Same as above?
case 12: return String.format("%s%s%s", Riiablo.string.lookup(desctexta[i]), eval(skill, lvl, desccalca[i]), Riiablo.string.lookup("StrSkill16")); // Duration: 4 seconds
case 13: return String.format("%s%s", Riiablo.string.lookup("StrSkill42"), eval(skill, lvl, desccalca[i])); // Life: 100
//case 14: return String.format()
//case 15: return String.format("%s:%s", Riiablo.string.lookup(desctexta[i]), Riiablo.string.lookup(desctextb[i]));
case 19: return String.format("%s%s%s%s", (desctextb[i].length() > 0 ? Riiablo.string.lookup(desctextb[i]) : ""), Riiablo.string.lookup(desctexta[i]), eval(skill, lvl, desccalca[i]) * 2f/3f, Riiablo.string.lookup("StrSkill26")); // Radius: 2.6 yards
case 28: return String.format("%s1%s", Riiablo.string.lookup("StrSkill18"), Riiablo.string.lookup("StrSkill36")); // Radius 1 yard
case 40: return String.format(Riiablo.string.lookup(desctexta[i]), Riiablo.string.lookup(desctextb[i]));
case 63: return String.format("%s: +%s%% %s", Riiablo.string.lookup(desctexta[i]), eval(skill, lvl, desccalca[i]), Riiablo.string.lookup(desctextb[i]));
case 67: return String.format("%s: +%s%s", Riiablo.string.lookup(desctexta[i]), eval(skill, lvl, desccalca[i]), Riiablo.string.lookup(desctextb[i]));
default: return null;
}
}