lootrecordwriter: Fix reading appended objects with new GSON version (#1239)
* lootrecordwriter: Fix reading appended objects with new GSON version * Add The Gauntlet boss tab * Remove name from list upon deleting file * Add hydra heads to boss tab * Fix loot panel total value calculation
This commit is contained in:
committed by
Kyleeld
parent
878e6a1fe6
commit
a62c485570
@@ -109,18 +109,27 @@ public class LootRecordWriter
|
|||||||
|
|
||||||
try (final BufferedReader br = new BufferedReader(new FileReader(file)))
|
try (final BufferedReader br = new BufferedReader(new FileReader(file)))
|
||||||
{
|
{
|
||||||
|
|
||||||
// read line by line
|
// read line by line
|
||||||
String line;
|
String line;
|
||||||
|
int totalBrackets = 0;
|
||||||
while ((line = br.readLine()) != null)
|
while ((line = br.readLine()) != null)
|
||||||
{
|
{
|
||||||
sb.append(line).append("\n");
|
if (line.contains("{"))
|
||||||
}
|
{
|
||||||
|
totalBrackets++;
|
||||||
|
}
|
||||||
|
else if (line.contains("}"))
|
||||||
|
{
|
||||||
|
totalBrackets--;
|
||||||
|
}
|
||||||
|
sb.append(line);
|
||||||
|
|
||||||
if (sb.length() > 0)
|
if (totalBrackets == 0 && sb.length() > 0)
|
||||||
{
|
{
|
||||||
final LTRecord r = RuneLiteAPI.GSON.fromJson(sb.toString(), LTRecord.class);
|
final LTRecord r = RuneLiteAPI.GSON.fromJson(sb.toString(), LTRecord.class);
|
||||||
data.add(r);
|
data.add(r);
|
||||||
|
sb.setLength(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (FileNotFoundException e)
|
catch (FileNotFoundException e)
|
||||||
|
|||||||
@@ -266,6 +266,7 @@ public class StonedTrackerPlugin extends Plugin
|
|||||||
|
|
||||||
public boolean clearStoredDataByName(final String name)
|
public boolean clearStoredDataByName(final String name)
|
||||||
{
|
{
|
||||||
|
lootNames.remove(name);
|
||||||
return writer.deleteLootTrackerRecords(name);
|
return writer.deleteLootTrackerRecords(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -80,6 +80,8 @@ public enum BossTab
|
|||||||
// Other Bosses
|
// Other Bosses
|
||||||
GIANT_MOLE("Giant Mole", ItemID.BABY_MOLE, "Other"),
|
GIANT_MOLE("Giant Mole", ItemID.BABY_MOLE, "Other"),
|
||||||
CORPOREAL_BEAST("Corporeal Beast", ItemID.PET_CORPOREAL_CRITTER, "Other"),
|
CORPOREAL_BEAST("Corporeal Beast", ItemID.PET_CORPOREAL_CRITTER, "Other"),
|
||||||
|
THE_GAUNTLET("The Gauntlet", ItemID.YOUNGLLEF, "Other"),
|
||||||
|
|
||||||
// Dagannoth Kings
|
// Dagannoth Kings
|
||||||
DAGANNOTH_REX("Dagannoth Rex", ItemID.PET_DAGANNOTH_REX, "Dagannoth Kings"),
|
DAGANNOTH_REX("Dagannoth Rex", ItemID.PET_DAGANNOTH_REX, "Dagannoth Kings"),
|
||||||
DAGANNOTH_PRIME("Dagannoth Prime", ItemID.PET_DAGANNOTH_PRIME, "Dagannoth Kings"),
|
DAGANNOTH_PRIME("Dagannoth Prime", ItemID.PET_DAGANNOTH_PRIME, "Dagannoth Kings"),
|
||||||
|
|||||||
@@ -236,6 +236,7 @@ public enum UniqueItem
|
|||||||
HYDRAS_FANG(ItemID.HYDRAS_FANG, BossTab.ALCHEMICAL_HYDRA, 0),
|
HYDRAS_FANG(ItemID.HYDRAS_FANG, BossTab.ALCHEMICAL_HYDRA, 0),
|
||||||
HYDRAS_HEART(ItemID.HYDRAS_HEART, BossTab.ALCHEMICAL_HYDRA, 0),
|
HYDRAS_HEART(ItemID.HYDRAS_HEART, BossTab.ALCHEMICAL_HYDRA, 0),
|
||||||
HYDRA_TAIL(ItemID.HYDRA_TAIL, BossTab.ALCHEMICAL_HYDRA, 0),
|
HYDRA_TAIL(ItemID.HYDRA_TAIL, BossTab.ALCHEMICAL_HYDRA, 0),
|
||||||
|
HYDRA_HEADS(ItemID.ALCHEMICAL_HYDRA_HEADS, BossTab.ALCHEMICAL_HYDRA, 0),
|
||||||
HYDRA_LEATHER(ItemID.HYDRA_LEATHER, BossTab.ALCHEMICAL_HYDRA, 1),
|
HYDRA_LEATHER(ItemID.HYDRA_LEATHER, BossTab.ALCHEMICAL_HYDRA, 1),
|
||||||
HYDRAS_CLAW(ItemID.HYDRAS_CLAW, BossTab.ALCHEMICAL_HYDRA, 1),
|
HYDRAS_CLAW(ItemID.HYDRAS_CLAW, BossTab.ALCHEMICAL_HYDRA, 1),
|
||||||
DRAGON_THROWNAXE(ItemID.DRAGON_THROWNAXE, BossTab.ALCHEMICAL_HYDRA, 1),
|
DRAGON_THROWNAXE(ItemID.DRAGON_THROWNAXE, BossTab.ALCHEMICAL_HYDRA, 1),
|
||||||
@@ -257,6 +258,12 @@ public enum UniqueItem
|
|||||||
SPECTRAL_SIGIL(ItemID.SPECTRAL_SIGIL, BossTab.CORPOREAL_BEAST, 1),
|
SPECTRAL_SIGIL(ItemID.SPECTRAL_SIGIL, BossTab.CORPOREAL_BEAST, 1),
|
||||||
ARCANE_SIGIL(ItemID.ARCANE_SIGIL, BossTab.CORPOREAL_BEAST, 1),
|
ARCANE_SIGIL(ItemID.ARCANE_SIGIL, BossTab.CORPOREAL_BEAST, 1),
|
||||||
ELYSIAN_SIGIL(ItemID.ELYSIAN_SIGIL, BossTab.CORPOREAL_BEAST, 1),
|
ELYSIAN_SIGIL(ItemID.ELYSIAN_SIGIL, BossTab.CORPOREAL_BEAST, 1),
|
||||||
|
// The Gauntlet
|
||||||
|
CRYSTAL_SHARD(ItemID.CRYSTAL_SHARD, BossTab.THE_GAUNTLET, 0),
|
||||||
|
CRYSTAL_WEAPON_SEED(ItemID.CRYSTAL_WEAPON_SEED, BossTab.THE_GAUNTLET, 0),
|
||||||
|
CRYSTAL_ARMOUR_SEED(ItemID.CRYSTAL_ARMOUR_SEED, BossTab.THE_GAUNTLET, 0),
|
||||||
|
BLADE_OF_SAELDOR(ItemID.BLADE_OF_SAELDOR, BossTab.THE_GAUNTLET, 0),
|
||||||
|
YOUNGLLEF(ItemID.YOUNGLLEF, BossTab.THE_GAUNTLET, 0),
|
||||||
// Dagannoth Rex
|
// Dagannoth Rex
|
||||||
RING_OF_LIFE(ItemID.RING_OF_LIFE, BossTab.DAGANNOTH_REX, -1),
|
RING_OF_LIFE(ItemID.RING_OF_LIFE, BossTab.DAGANNOTH_REX, -1),
|
||||||
WARRIOR_RING(ItemID.WARRIOR_RING, BossTab.DAGANNOTH_REX, -1),
|
WARRIOR_RING(ItemID.WARRIOR_RING, BossTab.DAGANNOTH_REX, -1),
|
||||||
|
|||||||
@@ -188,7 +188,7 @@ class LootPanel extends JPanel
|
|||||||
|
|
||||||
// Track total price of all tracked items for this panel
|
// Track total price of all tracked items for this panel
|
||||||
// Also ensure it is placed in correct location by preserving its gridy value
|
// Also ensure it is placed in correct location by preserving its gridy value
|
||||||
long totalValue = 0;
|
long totalValue = consolidated.values().stream().mapToLong(e -> e.getPrice() * e.getQuantity()).sum();
|
||||||
final int totalValueIndex = c.gridy;
|
final int totalValueIndex = c.gridy;
|
||||||
c.gridy++;
|
c.gridy++;
|
||||||
|
|
||||||
@@ -200,7 +200,6 @@ class LootPanel extends JPanel
|
|||||||
|
|
||||||
if (itemsToDisplay.size() > 0)
|
if (itemsToDisplay.size() > 0)
|
||||||
{
|
{
|
||||||
totalValue = itemsToDisplay.stream().mapToLong(e -> e.getPrice() * e.getQuantity()).sum();
|
|
||||||
if (itemBreakdown)
|
if (itemBreakdown)
|
||||||
{
|
{
|
||||||
for (final LTItemEntry e : itemsToDisplay)
|
for (final LTItemEntry e : itemsToDisplay)
|
||||||
|
|||||||
Reference in New Issue
Block a user