From aa84393b273d67b2abf5863e6c896831e53c236c Mon Sep 17 00:00:00 2001 From: Collin Smith Date: Sun, 17 Mar 2019 03:10:43 -0700 Subject: [PATCH] Added support for more calc functions Added support for more calc functions Added StringTBLs.format(String, Object...) Cleaned up SkillDesc and Skills --- core/src/com/riiablo/codec/StringTBLs.java | 12 +- .../com/riiablo/codec/excel/SkillDesc.java | 115 +++++------------- core/src/com/riiablo/codec/excel/Skills.java | 2 + core/src/com/riiablo/panel/SpellsPanel.java | 77 ++++++++++-- 4 files changed, 107 insertions(+), 99 deletions(-) diff --git a/core/src/com/riiablo/codec/StringTBLs.java b/core/src/com/riiablo/codec/StringTBLs.java index 5e9df111..0f546242 100644 --- a/core/src/com/riiablo/codec/StringTBLs.java +++ b/core/src/com/riiablo/codec/StringTBLs.java @@ -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); + } } diff --git a/core/src/com/riiablo/codec/excel/SkillDesc.java b/core/src/com/riiablo/codec/excel/SkillDesc.java index af47ab9b..1eaddf72 100644 --- a/core/src/com/riiablo/codec/excel/SkillDesc.java +++ b/core/src/com/riiablo/codec/excel/SkillDesc.java @@ -44,90 +44,35 @@ public class SkillDesc extends Excel { @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[]; } } diff --git a/core/src/com/riiablo/codec/excel/Skills.java b/core/src/com/riiablo/codec/excel/Skills.java index 1bc01bc5..ab860f1e 100644 --- a/core/src/com/riiablo/codec/excel/Skills.java +++ b/core/src/com/riiablo/codec/excel/Skills.java @@ -26,5 +26,7 @@ public class Skills extends Excel { @Column public int manashift; @Column public int mana; @Column public int lvlmana; + @Column(startIndex = 1, endIndex = 9) + public int Param[]; } } diff --git a/core/src/com/riiablo/panel/SpellsPanel.java b/core/src/com/riiablo/panel/SpellsPanel.java index b35afbe4..801dd863 100644 --- a/core/src/com/riiablo/panel/SpellsPanel.java +++ b/core/src/com/riiablo/panel/SpellsPanel.java @@ -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; } }