diff --git a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java index af42757..4b317ff 100644 --- a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java +++ b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryConfig.java @@ -1,6 +1,7 @@ package com.toofifty.easygiantsfoundry; import java.awt.Color; + import net.runelite.client.config.Config; import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigItem; @@ -509,6 +510,78 @@ public interface EasyGiantsFoundryConfig extends Config return Color.CYAN; } + @ConfigItem( + position = -100, + keyName = "alwaysShowInfoPanel", + name = "Always show", + description = "Always show the info panel, even outside of Giants' Foundry.", + section = infoPanelList + ) + default boolean alwaysDrawInfoPanel() + { + return false; + } + + @ConfigItem( + position = 100, + keyName = "drawMetals", + name = "Metals", + description = "Show total metals count in the info panel.", + section = infoPanelList + ) + default boolean drawMetals() + { + return false; + } + + @ConfigItem( + position = 101, + keyName = "drawAllMetals", + name = "Metals: show all", + description = "Show rows for metals even if you don't have any of that type.", + section = infoPanelList + ) + default boolean drawAllMetals() + { + return false; + } + + @ConfigItem( + position = 110, + keyName = "countOre", + name = "Metals: count ore", + description = "Include raw ores in the metals count.", + section = infoPanelList + ) + default boolean countOre() + { + return true; + } + + @ConfigItem( + position = 111, + keyName = "countBars", + name = "Metals: count bars", + description = "Include smelted bars in the metals count.", + section = infoPanelList + ) + default boolean countBars() + { + return true; + } + + @ConfigItem( + position = 112, + keyName = "countEquipment", + name = "Metals: count equipment", + description = "Include equipment in the metals count.", + section = infoPanelList + ) + default boolean countEquipment() + { + return true; + } + @ConfigSection( name = "Advanced", description = "Advanced Settings", diff --git a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java index 72e77a1..4b8d60e 100644 --- a/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java +++ b/src/main/java/com/toofifty/easygiantsfoundry/EasyGiantsFoundryPlugin.java @@ -14,7 +14,7 @@ import net.runelite.api.ChatMessageType; import net.runelite.api.Client; import net.runelite.api.GameObject; import net.runelite.api.GameState; -import net.runelite.api.InventoryID; +import net.runelite.api.gameval.InventoryID; import net.runelite.api.Item; import net.runelite.api.ItemContainer; import net.runelite.api.MenuAction; @@ -75,6 +75,9 @@ public class EasyGiantsFoundryPlugin extends Plugin @Inject private EasyGiantsFoundryHelper helper; + @Inject + private MetalBarCounter metalBarCounter; + @Inject private OverlayManager overlayManager; @@ -118,6 +121,7 @@ public class EasyGiantsFoundryPlugin extends Plugin { overlayManager.remove(overlay2d); overlayManager.remove(overlay3d); + metalBarCounter.clear(); } @Subscribe @@ -253,7 +257,7 @@ public class EasyGiantsFoundryPlugin extends Plugin @Subscribe public void onItemContainerChanged(ItemContainerChanged event) { - if (event.getContainerId() == InventoryID.EQUIPMENT.getId()) + if (event.getContainerId() == InventoryID.WORN) { if (event.getItemContainer().count(PREFORM) == 0) { @@ -265,6 +269,10 @@ public class EasyGiantsFoundryPlugin extends Plugin updateSmithsOutfitPieces(); } } + else if (event.getContainerId() == InventoryID.INV || event.getContainerId() == InventoryID.BANK) + { + metalBarCounter.put(event.getItemContainer()); + } } public void onMenuEntryAdded(MenuEntryAdded event) @@ -474,7 +482,7 @@ public class EasyGiantsFoundryPlugin extends Plugin { int pieces = 0; - ItemContainer equipment = client.getItemContainer(InventoryID.EQUIPMENT); + ItemContainer equipment = client.getItemContainer(InventoryID.WORN); if (equipment != null) { for (Item item : equipment.getItems()) diff --git a/src/main/java/com/toofifty/easygiantsfoundry/FoundryOverlay2D.java b/src/main/java/com/toofifty/easygiantsfoundry/FoundryOverlay2D.java index 7280025..1954b3a 100644 --- a/src/main/java/com/toofifty/easygiantsfoundry/FoundryOverlay2D.java +++ b/src/main/java/com/toofifty/easygiantsfoundry/FoundryOverlay2D.java @@ -1,7 +1,7 @@ package com.toofifty.easygiantsfoundry; -import static com.toofifty.easygiantsfoundry.EasyGiantsFoundryHelper.getHeatColor; import com.toofifty.easygiantsfoundry.enums.Heat; +import com.toofifty.easygiantsfoundry.enums.MetalBarType; import com.toofifty.easygiantsfoundry.enums.Stage; import java.awt.Color; @@ -24,6 +24,7 @@ public class FoundryOverlay2D extends OverlayPanel private final Client client; private final EasyGiantsFoundryPlugin plugin; private final EasyGiantsFoundryState state; + private final MetalBarCounter metalBarCounter; private final EasyGiantsFoundryConfig config; @Inject @@ -31,11 +32,13 @@ public class FoundryOverlay2D extends OverlayPanel Client client, EasyGiantsFoundryPlugin plugin, EasyGiantsFoundryState state, + MetalBarCounter metalBarCounter, EasyGiantsFoundryConfig config) { this.client = client; this.plugin = plugin; this.state = state; + this.metalBarCounter = metalBarCounter; this.config = config; this.setPosition(OverlayPosition.BOTTOM_LEFT); } @@ -68,7 +71,7 @@ public class FoundryOverlay2D extends OverlayPanel @Override public Dimension render(Graphics2D graphics) { - if (client.getLocalPlayer().getWorldLocation().getRegionID() != REGION_ID) + if (!config.alwaysDrawInfoPanel() && client.getLocalPlayer().getWorldLocation().getRegionID() != REGION_ID) { return null; } @@ -79,6 +82,11 @@ public class FoundryOverlay2D extends OverlayPanel panelComponent.getChildren().add(TitleComponent.builder().text("Easy Giants' Foundry").build()); } + if (config.drawMetals()) + { + drawMetals(graphics); + } + if (swordPickedUp) { Heat heat = state.getCurrentHeat(); @@ -130,4 +138,37 @@ public class FoundryOverlay2D extends OverlayPanel return super.render(graphics); } + + private void drawMetals(Graphics2D graphics2D) + { + if (!metalBarCounter.isSeenBank()) + { + panelComponent.getChildren().add( + LineComponent.builder() + .left("Metals: open bank") + .leftColor(Color.RED) + .build() + ); + } + + drawMetalCount(graphics2D, "Bronze bars:", metalBarCounter.get(MetalBarType.BRONZE)); + drawMetalCount(graphics2D, "Iron bars:", metalBarCounter.get(MetalBarType.IRON)); + drawMetalCount(graphics2D, "Steel bars:", metalBarCounter.get(MetalBarType.STEEL)); + drawMetalCount(graphics2D, "Mithril bars:", metalBarCounter.get(MetalBarType.MITHRIL)); + drawMetalCount(graphics2D, "Adamant bars:", metalBarCounter.get(MetalBarType.ADAMANT)); + drawMetalCount(graphics2D, "Runite bars:", metalBarCounter.get(MetalBarType.RUNITE)); + } + + private void drawMetalCount(Graphics2D graphics2D, String displayName, int count) + { + if (count > 0 || config.drawAllMetals()) + { + panelComponent.getChildren().add( + LineComponent.builder() + .left(displayName) + .right(Integer.toString(count)) + .build() + ); + } + } } diff --git a/src/main/java/com/toofifty/easygiantsfoundry/MetalBarCounter.java b/src/main/java/com/toofifty/easygiantsfoundry/MetalBarCounter.java new file mode 100644 index 0000000..5b65ade --- /dev/null +++ b/src/main/java/com/toofifty/easygiantsfoundry/MetalBarCounter.java @@ -0,0 +1,148 @@ +package com.toofifty.easygiantsfoundry; + +import com.toofifty.easygiantsfoundry.enums.MetalBarSource; +import com.toofifty.easygiantsfoundry.enums.MetalBarType; +import lombok.Getter; +import lombok.Value; +import net.runelite.api.Item; +import net.runelite.api.ItemContainer; +import net.runelite.api.gameval.InventoryID; +import net.runelite.api.gameval.ItemID; + +import javax.inject.Inject; +import javax.inject.Singleton; +import java.util.HashMap; +import java.util.Map; + +@Singleton +public class MetalBarCounter +{ + private final Map> index = new HashMap<>(); // container id -> bar counts + + @Inject + private EasyGiantsFoundryConfig config; + + @Getter + private boolean seenBank = false; + + public int get(MetalBarType type) + { + int count = 0; + for (Map counts : index.values()) + { + count += counts.get(type).sum(config); + } + + return count; + } + + public void clear() + { + index.clear(); + seenBank = false; + } + + public void put(ItemContainer container) + { + int tinOre = 0; + int copperOre = 0; + int ironOre = 0; + + if (container.getId() == InventoryID.BANK) + { + seenBank = true; + } + + Map counts = newCounts(); + for (Item item : container.getItems()) + { + MetalBarValues.Record record = MetalBarValues.get(item.getId()); + if (record == null) + { + continue; + } + + // ore special cases: + // * add bronze bars equal to min(tin, copper) + // * there is an edge case here where it won't sum quite right multiple item containers but I don't really + // care to code for that right now + // * iron ore counts for both iron and steel + switch (item.getId()) + { + case ItemID.TIN_ORE: + case ItemID.Cert.TIN_ORE: + tinOre += item.getQuantity(); + break; + case ItemID.COPPER_ORE: + case ItemID.Cert.COPPER_ORE: + copperOre += item.getQuantity(); + break; + case ItemID.IRON_ORE: + case ItemID.Cert.IRON_ORE: + ironOre += item.getQuantity(); + break; + default: + counts.compute(record.getType(), (k, v) -> + v.add(record.getSource(), record.getValue() * item.getQuantity())); + } + } + + int finalTinOre = tinOre; + int finalCopperOre = copperOre; + int finalIronOre = ironOre; + counts.compute(MetalBarType.BRONZE, (k, v) -> + v.add(MetalBarSource.ORE, Math.min(finalTinOre, finalCopperOre))); + counts.compute(MetalBarType.IRON, (k, v) -> + v.add(MetalBarSource.ORE, finalIronOre)); + counts.compute(MetalBarType.STEEL, (k, v) -> + v.add(MetalBarSource.ORE, finalIronOre)); + + index.put(container.getId(), counts); + } + + private static Map newCounts() + { + Map counts = new HashMap<>(); + counts.put(MetalBarType.BRONZE, CountsBySource.empty()); + counts.put(MetalBarType.IRON, CountsBySource.empty()); + counts.put(MetalBarType.STEEL, CountsBySource.empty()); + counts.put(MetalBarType.MITHRIL, CountsBySource.empty()); + counts.put(MetalBarType.ADAMANT, CountsBySource.empty()); + counts.put(MetalBarType.RUNITE, CountsBySource.empty()); + return counts; + } + + @Value + private static class CountsBySource + { + int ores, bars, equipment; + + public static CountsBySource empty() + { + return new CountsBySource(0, 0, 0); + } + + public CountsBySource add(MetalBarSource source, int count) + { + switch (source) + { + case ORE: + return new CountsBySource(ores + count, bars, equipment); + case BAR: + return new CountsBySource(ores, bars + count, equipment); + case EQUIPMENT: + return new CountsBySource(ores, bars, equipment + count); + default: + return this; + } + } + + public int sum(EasyGiantsFoundryConfig config) + { + int sum = config.countOre() ? ores : 0; + sum += config.countBars() ? bars : 0; + sum += config.countEquipment() ? equipment : 0; + return sum; + } + } +} diff --git a/src/main/java/com/toofifty/easygiantsfoundry/MetalBarValues.java b/src/main/java/com/toofifty/easygiantsfoundry/MetalBarValues.java new file mode 100644 index 0000000..efcd5c8 --- /dev/null +++ b/src/main/java/com/toofifty/easygiantsfoundry/MetalBarValues.java @@ -0,0 +1,238 @@ +package com.toofifty.easygiantsfoundry; + +import com.toofifty.easygiantsfoundry.enums.MetalBarSource; +import com.toofifty.easygiantsfoundry.enums.MetalBarType; +import lombok.Value; +import net.runelite.api.gameval.ItemID; + +import java.util.HashMap; + +public class MetalBarValues +{ + private static final HashMap values = new HashMap<>(); + + static + { + // tin, copper, and iron are included here so the counter doesn't ignore them, but their actual counts are + // handled as special cases + putOre(ItemID.TIN_ORE, MetalBarType.BRONZE); + putOre(ItemID.COPPER_ORE, MetalBarType.BRONZE); + putOre(ItemID.IRON_BAR, MetalBarType.IRON); + putOre(ItemID.MITHRIL_ORE, MetalBarType.MITHRIL); + putOre(ItemID.ADAMANTITE_ORE, MetalBarType.ADAMANT); + putOre(ItemID.RUNITE_ORE, MetalBarType.RUNITE); + putOre(ItemID.Cert.TIN_ORE, MetalBarType.BRONZE); + putOre(ItemID.Cert.COPPER_ORE, MetalBarType.BRONZE); + putOre(ItemID.Cert.IRON_BAR, MetalBarType.IRON); + putOre(ItemID.Cert.MITHRIL_ORE, MetalBarType.MITHRIL); + putOre(ItemID.Cert.ADAMANTITE_ORE, MetalBarType.ADAMANT); + putOre(ItemID.Cert.RUNITE_ORE, MetalBarType.RUNITE); + + putBar(ItemID.BRONZE_BAR, MetalBarType.BRONZE); + putBar(ItemID.IRON_BAR, MetalBarType.IRON); + putBar(ItemID.STEEL_BAR, MetalBarType.STEEL); + putBar(ItemID.MITHRIL_BAR, MetalBarType.MITHRIL); + putBar(ItemID.ADAMANTITE_BAR, MetalBarType.ADAMANT); + putBar(ItemID.RUNITE_BAR, MetalBarType.RUNITE); + putBar(ItemID.Cert.BRONZE_BAR, MetalBarType.BRONZE); + putBar(ItemID.Cert.IRON_BAR, MetalBarType.IRON); + putBar(ItemID.Cert.STEEL_BAR, MetalBarType.STEEL); + putBar(ItemID.Cert.MITHRIL_BAR, MetalBarType.MITHRIL); + putBar(ItemID.Cert.ADAMANTITE_BAR, MetalBarType.ADAMANT); + putBar(ItemID.Cert.RUNITE_BAR, MetalBarType.RUNITE); + + putEquipment(ItemID.BRONZE_SCIMITAR, MetalBarType.BRONZE, 1); + putEquipment(ItemID.BRONZE_LONGSWORD, MetalBarType.BRONZE, 1); + putEquipment(ItemID.BRONZE_FULL_HELM, MetalBarType.BRONZE, 1); + putEquipment(ItemID.BRONZE_SQ_SHIELD, MetalBarType.BRONZE, 1); + putEquipment(ItemID.BRONZE_CLAWS, MetalBarType.BRONZE, 1); + putEquipment(ItemID.BRONZE_WARHAMMER, MetalBarType.BRONZE, 2); + putEquipment(ItemID.BRONZE_BATTLEAXE, MetalBarType.BRONZE, 2); + putEquipment(ItemID.BRONZE_CHAINBODY, MetalBarType.BRONZE, 2); + putEquipment(ItemID.BRONZE_KITESHIELD, MetalBarType.BRONZE, 2); + putEquipment(ItemID.BRONZE_2H_SWORD, MetalBarType.BRONZE, 2); + putEquipment(ItemID.BRONZE_PLATELEGS, MetalBarType.BRONZE, 2); + putEquipment(ItemID.BRONZE_PLATESKIRT, MetalBarType.BRONZE, 2); + putEquipment(ItemID.BRONZE_PLATEBODY, MetalBarType.BRONZE, 4); + putEquipment(ItemID.Cert.BRONZE_SCIMITAR, MetalBarType.BRONZE, 1); + putEquipment(ItemID.Cert.BRONZE_LONGSWORD, MetalBarType.BRONZE, 1); + putEquipment(ItemID.Cert.BRONZE_FULL_HELM, MetalBarType.BRONZE, 1); + putEquipment(ItemID.Cert.BRONZE_SQ_SHIELD, MetalBarType.BRONZE, 1); + putEquipment(ItemID.Cert.BRONZE_CLAWS, MetalBarType.BRONZE, 1); + putEquipment(ItemID.Cert.BRONZE_WARHAMMER, MetalBarType.BRONZE, 2); + putEquipment(ItemID.Cert.BRONZE_BATTLEAXE, MetalBarType.BRONZE, 2); + putEquipment(ItemID.Cert.BRONZE_CHAINBODY, MetalBarType.BRONZE, 2); + putEquipment(ItemID.Cert.BRONZE_KITESHIELD, MetalBarType.BRONZE, 2); + putEquipment(ItemID.Cert.BRONZE_2H_SWORD, MetalBarType.BRONZE, 2); + putEquipment(ItemID.Cert.BRONZE_PLATELEGS, MetalBarType.BRONZE, 2); + putEquipment(ItemID.Cert.BRONZE_PLATESKIRT, MetalBarType.BRONZE, 2); + putEquipment(ItemID.Cert.BRONZE_PLATEBODY, MetalBarType.BRONZE, 4); + + putEquipment(ItemID.IRON_SCIMITAR, MetalBarType.IRON, 1); + putEquipment(ItemID.IRON_LONGSWORD, MetalBarType.IRON, 1); + putEquipment(ItemID.IRON_FULL_HELM, MetalBarType.IRON, 1); + putEquipment(ItemID.IRON_SQ_SHIELD, MetalBarType.IRON, 1); + putEquipment(ItemID.IRON_CLAWS, MetalBarType.IRON, 1); + putEquipment(ItemID.IRON_WARHAMMER, MetalBarType.IRON, 2); + putEquipment(ItemID.IRON_BATTLEAXE, MetalBarType.IRON, 2); + putEquipment(ItemID.IRON_CHAINBODY, MetalBarType.IRON, 2); + putEquipment(ItemID.IRON_KITESHIELD, MetalBarType.IRON, 2); + putEquipment(ItemID.IRON_2H_SWORD, MetalBarType.IRON, 2); + putEquipment(ItemID.IRON_PLATELEGS, MetalBarType.IRON, 2); + putEquipment(ItemID.IRON_PLATESKIRT, MetalBarType.IRON, 2); + putEquipment(ItemID.IRON_PLATEBODY, MetalBarType.IRON, 4); + putEquipment(ItemID.Cert.IRON_SCIMITAR, MetalBarType.IRON, 1); + putEquipment(ItemID.Cert.IRON_LONGSWORD, MetalBarType.IRON, 1); + putEquipment(ItemID.Cert.IRON_FULL_HELM, MetalBarType.IRON, 1); + putEquipment(ItemID.Cert.IRON_SQ_SHIELD, MetalBarType.IRON, 1); + putEquipment(ItemID.Cert.IRON_CLAWS, MetalBarType.IRON, 1); + putEquipment(ItemID.Cert.IRON_WARHAMMER, MetalBarType.IRON, 2); + putEquipment(ItemID.Cert.IRON_BATTLEAXE, MetalBarType.IRON, 2); + putEquipment(ItemID.Cert.IRON_CHAINBODY, MetalBarType.IRON, 2); + putEquipment(ItemID.Cert.IRON_KITESHIELD, MetalBarType.IRON, 2); + putEquipment(ItemID.Cert.IRON_2H_SWORD, MetalBarType.IRON, 2); + putEquipment(ItemID.Cert.IRON_PLATELEGS, MetalBarType.IRON, 2); + putEquipment(ItemID.Cert.IRON_PLATESKIRT, MetalBarType.IRON, 2); + putEquipment(ItemID.Cert.IRON_PLATEBODY, MetalBarType.IRON, 4); + + putEquipment(ItemID.STEEL_SCIMITAR, MetalBarType.STEEL, 1); + putEquipment(ItemID.STEEL_LONGSWORD, MetalBarType.STEEL, 1); + putEquipment(ItemID.STEEL_FULL_HELM, MetalBarType.STEEL, 1); + putEquipment(ItemID.STEEL_SQ_SHIELD, MetalBarType.STEEL, 1); + putEquipment(ItemID.STEEL_CLAWS, MetalBarType.STEEL, 1); + putEquipment(ItemID.STEEL_WARHAMMER, MetalBarType.STEEL, 2); + putEquipment(ItemID.STEEL_BATTLEAXE, MetalBarType.STEEL, 2); + putEquipment(ItemID.STEEL_CHAINBODY, MetalBarType.STEEL, 2); + putEquipment(ItemID.STEEL_KITESHIELD, MetalBarType.STEEL, 2); + putEquipment(ItemID.STEEL_2H_SWORD, MetalBarType.STEEL, 2); + putEquipment(ItemID.STEEL_PLATELEGS, MetalBarType.STEEL, 2); + putEquipment(ItemID.STEEL_PLATESKIRT, MetalBarType.STEEL, 2); + putEquipment(ItemID.STEEL_PLATEBODY, MetalBarType.STEEL, 4); + putEquipment(ItemID.Cert.STEEL_SCIMITAR, MetalBarType.STEEL, 1); + putEquipment(ItemID.Cert.STEEL_LONGSWORD, MetalBarType.STEEL, 1); + putEquipment(ItemID.Cert.STEEL_FULL_HELM, MetalBarType.STEEL, 1); + putEquipment(ItemID.Cert.STEEL_SQ_SHIELD, MetalBarType.STEEL, 1); + putEquipment(ItemID.Cert.STEEL_CLAWS, MetalBarType.STEEL, 1); + putEquipment(ItemID.Cert.STEEL_WARHAMMER, MetalBarType.STEEL, 2); + putEquipment(ItemID.Cert.STEEL_BATTLEAXE, MetalBarType.STEEL, 2); + putEquipment(ItemID.Cert.STEEL_CHAINBODY, MetalBarType.STEEL, 2); + putEquipment(ItemID.Cert.STEEL_KITESHIELD, MetalBarType.STEEL, 2); + putEquipment(ItemID.Cert.STEEL_2H_SWORD, MetalBarType.STEEL, 2); + putEquipment(ItemID.Cert.STEEL_PLATELEGS, MetalBarType.STEEL, 2); + putEquipment(ItemID.Cert.STEEL_PLATESKIRT, MetalBarType.STEEL, 2); + putEquipment(ItemID.Cert.STEEL_PLATEBODY, MetalBarType.STEEL, 4); + + putEquipment(ItemID.MITHRIL_SCIMITAR, MetalBarType.MITHRIL, 1); + putEquipment(ItemID.MITHRIL_LONGSWORD, MetalBarType.MITHRIL, 1); + putEquipment(ItemID.MITHRIL_FULL_HELM, MetalBarType.MITHRIL, 1); + putEquipment(ItemID.MITHRIL_SQ_SHIELD, MetalBarType.MITHRIL, 1); + putEquipment(ItemID.MITHRIL_CLAWS, MetalBarType.MITHRIL, 1); + putEquipment(ItemID.MITHRIL_WARHAMMER, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.MITHRIL_BATTLEAXE, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.MITHRIL_CHAINBODY, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.MITHRIL_KITESHIELD, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.MITHRIL_2H_SWORD, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.MITHRIL_PLATELEGS, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.MITHRIL_PLATESKIRT, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.MITHRIL_PLATEBODY, MetalBarType.MITHRIL, 4); + putEquipment(ItemID.Cert.MITHRIL_SCIMITAR, MetalBarType.MITHRIL, 1); + putEquipment(ItemID.Cert.MITHRIL_LONGSWORD, MetalBarType.MITHRIL, 1); + putEquipment(ItemID.Cert.MITHRIL_FULL_HELM, MetalBarType.MITHRIL, 1); + putEquipment(ItemID.Cert.MITHRIL_SQ_SHIELD, MetalBarType.MITHRIL, 1); + putEquipment(ItemID.Cert.MITHRIL_CLAWS, MetalBarType.MITHRIL, 1); + putEquipment(ItemID.Cert.MITHRIL_WARHAMMER, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.Cert.MITHRIL_BATTLEAXE, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.Cert.MITHRIL_CHAINBODY, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.Cert.MITHRIL_KITESHIELD, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.Cert.MITHRIL_2H_SWORD, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.Cert.MITHRIL_PLATELEGS, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.Cert.MITHRIL_PLATESKIRT, MetalBarType.MITHRIL, 2); + putEquipment(ItemID.Cert.MITHRIL_PLATEBODY, MetalBarType.MITHRIL, 4); + + putEquipment(ItemID.ADAMANT_SCIMITAR, MetalBarType.ADAMANT, 1); + putEquipment(ItemID.ADAMANT_LONGSWORD, MetalBarType.ADAMANT, 1); + putEquipment(ItemID.ADAMANT_FULL_HELM, MetalBarType.ADAMANT, 1); + putEquipment(ItemID.ADAMANT_SQ_SHIELD, MetalBarType.ADAMANT, 1); + putEquipment(ItemID.ADAMANT_CLAWS, MetalBarType.ADAMANT, 1); + putEquipment(ItemID.ADAMNT_WARHAMMER, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.ADAMANT_BATTLEAXE, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.ADAMANT_CHAINBODY, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.ADAMANT_KITESHIELD, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.ADAMANT_2H_SWORD, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.ADAMANT_PLATELEGS, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.ADAMANT_PLATESKIRT, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.ADAMANT_PLATEBODY, MetalBarType.ADAMANT, 4); + putEquipment(ItemID.Cert.ADAMANT_SCIMITAR, MetalBarType.ADAMANT, 1); + putEquipment(ItemID.Cert.ADAMANT_LONGSWORD, MetalBarType.ADAMANT, 1); + putEquipment(ItemID.Cert.ADAMANT_FULL_HELM, MetalBarType.ADAMANT, 1); + putEquipment(ItemID.Cert.ADAMANT_SQ_SHIELD, MetalBarType.ADAMANT, 1); + putEquipment(ItemID.Cert.ADAMANT_CLAWS, MetalBarType.ADAMANT, 1); + putEquipment(ItemID.Cert.ADAMNT_WARHAMMER, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.Cert.ADAMANT_BATTLEAXE, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.Cert.ADAMANT_CHAINBODY, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.Cert.ADAMANT_KITESHIELD, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.Cert.ADAMANT_2H_SWORD, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.Cert.ADAMANT_PLATELEGS, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.Cert.ADAMANT_PLATESKIRT, MetalBarType.ADAMANT, 2); + putEquipment(ItemID.Cert.ADAMANT_PLATEBODY, MetalBarType.ADAMANT, 4); + + putEquipment(ItemID.RUNE_SCIMITAR, MetalBarType.RUNITE, 1); + putEquipment(ItemID.RUNE_LONGSWORD, MetalBarType.RUNITE, 1); + putEquipment(ItemID.RUNE_FULL_HELM, MetalBarType.RUNITE, 1); + putEquipment(ItemID.RUNE_SQ_SHIELD, MetalBarType.RUNITE, 1); + putEquipment(ItemID.RUNE_CLAWS, MetalBarType.RUNITE, 1); + putEquipment(ItemID.RUNE_WARHAMMER, MetalBarType.RUNITE, 2); + putEquipment(ItemID.RUNE_BATTLEAXE, MetalBarType.RUNITE, 2); + putEquipment(ItemID.RUNE_CHAINBODY, MetalBarType.RUNITE, 2); + putEquipment(ItemID.RUNE_KITESHIELD, MetalBarType.RUNITE, 2); + putEquipment(ItemID.RUNE_2H_SWORD, MetalBarType.RUNITE, 2); + putEquipment(ItemID.RUNE_PLATELEGS, MetalBarType.RUNITE, 2); + putEquipment(ItemID.RUNE_PLATESKIRT, MetalBarType.RUNITE, 2); + putEquipment(ItemID.RUNE_PLATEBODY, MetalBarType.RUNITE, 4); + putEquipment(ItemID.Cert.RUNE_SCIMITAR, MetalBarType.RUNITE, 1); + putEquipment(ItemID.Cert.RUNE_LONGSWORD, MetalBarType.RUNITE, 1); + putEquipment(ItemID.Cert.RUNE_FULL_HELM, MetalBarType.RUNITE, 1); + putEquipment(ItemID.Cert.RUNE_SQ_SHIELD, MetalBarType.RUNITE, 1); + putEquipment(ItemID.Cert.RUNE_CLAWS, MetalBarType.RUNITE, 1); + putEquipment(ItemID.Cert.RUNE_WARHAMMER, MetalBarType.RUNITE, 2); + putEquipment(ItemID.Cert.RUNE_BATTLEAXE, MetalBarType.RUNITE, 2); + putEquipment(ItemID.Cert.RUNE_CHAINBODY, MetalBarType.RUNITE, 2); + putEquipment(ItemID.Cert.RUNE_KITESHIELD, MetalBarType.RUNITE, 2); + putEquipment(ItemID.Cert.RUNE_2H_SWORD, MetalBarType.RUNITE, 2); + putEquipment(ItemID.Cert.RUNE_PLATELEGS, MetalBarType.RUNITE, 2); + putEquipment(ItemID.Cert.RUNE_PLATESKIRT, MetalBarType.RUNITE, 2); + putEquipment(ItemID.Cert.RUNE_PLATEBODY, MetalBarType.RUNITE, 4); + } + + @Value + public static class Record + { + MetalBarType type; + MetalBarSource source; + int value; + } + + public static Record get(int id) + { + return values.get(id); + } + + private static void putOre(int id, MetalBarType type) + { + values.put(id, new Record(type, MetalBarSource.ORE, 1)); + } + + private static void putBar(int id, MetalBarType type) + { + values.put(id, new Record(type, MetalBarSource.BAR, 1)); + } + + private static void putEquipment(int id, MetalBarType type, int value) + { + values.put(id, new Record(type, MetalBarSource.EQUIPMENT, value)); + } + + private MetalBarValues() + { + } +} diff --git a/src/main/java/com/toofifty/easygiantsfoundry/enums/Location.java b/src/main/java/com/toofifty/easygiantsfoundry/enums/Location.java new file mode 100644 index 0000000..20ca938 --- /dev/null +++ b/src/main/java/com/toofifty/easygiantsfoundry/enums/Location.java @@ -0,0 +1,19 @@ +package com.toofifty.easygiantsfoundry.enums; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum Location { + GIANTS_FOUNDRY("Giants' Foundry"), + EVERYWHERE("Everywhere"), + NOWHERE("Nowhere"); + + private final String type; + + @Override + public String toString() { + return type; + } +} diff --git a/src/main/java/com/toofifty/easygiantsfoundry/enums/MetalBarSource.java b/src/main/java/com/toofifty/easygiantsfoundry/enums/MetalBarSource.java new file mode 100644 index 0000000..4820ebf --- /dev/null +++ b/src/main/java/com/toofifty/easygiantsfoundry/enums/MetalBarSource.java @@ -0,0 +1,9 @@ +package com.toofifty.easygiantsfoundry.enums; + +public enum MetalBarSource +{ + ORE, + BAR, + EQUIPMENT, + ; +} diff --git a/src/main/java/com/toofifty/easygiantsfoundry/enums/MetalBarType.java b/src/main/java/com/toofifty/easygiantsfoundry/enums/MetalBarType.java new file mode 100644 index 0000000..9bde3e4 --- /dev/null +++ b/src/main/java/com/toofifty/easygiantsfoundry/enums/MetalBarType.java @@ -0,0 +1,12 @@ +package com.toofifty.easygiantsfoundry.enums; + +public enum MetalBarType +{ + BRONZE, + IRON, + STEEL, + MITHRIL, + ADAMANT, + RUNITE, + ; +} \ No newline at end of file