diff --git a/core/src/main/assets/messages/journal/journal.properties b/core/src/main/assets/messages/journal/journal.properties index 63ad45e06..1d71405da 100644 --- a/core/src/main/assets/messages/journal/journal.properties +++ b/core/src/main/assets/messages/journal/journal.properties @@ -1,10 +1,27 @@ -journal.catalog.weapons.title=weapons +journal.catalog.melee_weapons.title=melee weapons journal.catalog.armor.title=armor +journal.catalog.enchantments.title=enchantments and curses +journal.catalog.glyphs.title=glyphs and curses +journal.catalog.thrown_weapons.title=thrown weapons journal.catalog.wands.title=wands journal.catalog.rings.title=rings journal.catalog.artifacts.title=artifacts +journal.catalog.trinkets.title=trinkets +journal.catalog.misc_equipment.title=misc. equipment + journal.catalog.potions.title=potions journal.catalog.scrolls.title=scrolls +journal.catalog.seeds.title=seeds +journal.catalog.stones.title=runestones +journal.catalog.food.title=food +journal.catalog.exotic_potions.title=exotic potions +journal.catalog.exotic_scrolls.title=exotic scrolls +journal.catalog.bombs.title=bombs +journal.catalog.tipped_darts.title=tipped darts +journal.catalog.brews_elixirs.title=brews and elixirs +journal.catalog.spells.title=spells +journal.catalog.misc_consumables.title=misc. consumables + journal.document.adventurers_guide.title=Tome of Dungeon Mastery journal.document.adventurers_guide.intro.title=Introduction diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java index ed4c8a554..761431949 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Generator.java @@ -65,6 +65,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfToxicGas; import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.Brew; import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.Elixir; import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion; +import com.shatteredpixel.shatteredpixeldungeon.items.quest.Pickaxe; import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfAccuracy; import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfArcana; @@ -181,6 +182,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingSp import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingStone; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Tomahawk; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Trident; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.Dart; import com.shatteredpixel.shatteredpixeldungeon.plants.Blindweed; import com.shatteredpixel.shatteredpixeldungeon.plants.Earthroot; import com.shatteredpixel.shatteredpixeldungeon.plants.Fadeleaf; @@ -419,9 +421,10 @@ public class Generator { Spear.class, Quarterstaff.class, Dirk.class, - Sickle.class + Sickle.class, + Pickaxe.class }; - WEP_T2.defaultProbs = new float[]{ 2, 2, 2, 2, 2, 2 }; + WEP_T2.defaultProbs = new float[]{ 2, 2, 2, 2, 2, 2, 0 }; WEP_T2.probs = WEP_T2.defaultProbs.clone(); WEP_T3.classes = new Class[]{ @@ -481,9 +484,10 @@ public class Generator { MIS_T1.classes = new Class[]{ ThrowingStone.class, ThrowingKnife.class, - ThrowingSpike.class + ThrowingSpike.class, + Dart.class }; - MIS_T1.defaultProbs = new float[]{ 3, 3, 3 }; + MIS_T1.defaultProbs = new float[]{ 3, 3, 3, 0 }; MIS_T1.probs = MIS_T1.defaultProbs.clone(); MIS_T2.classes = new Class[]{ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/ExoticPotion.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/ExoticPotion.java index 94986886a..a530aead9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/ExoticPotion.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/potions/exotic/ExoticPotion.java @@ -39,7 +39,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfToxicGas; import com.watabou.utils.Reflection; import java.util.ArrayList; -import java.util.HashMap; +import java.util.LinkedHashMap; public class ExoticPotion extends Potion { @@ -47,44 +47,45 @@ public class ExoticPotion extends Potion { //sprite = equivalent potion sprite but one row down } - public static final HashMap, Class> regToExo = new HashMap<>(); - public static final HashMap, Class> exoToReg = new HashMap<>(); + public static final LinkedHashMap, Class> regToExo = new LinkedHashMap<>(); + public static final LinkedHashMap, Class> exoToReg = new LinkedHashMap<>(); static{ - regToExo.put(PotionOfHealing.class, PotionOfShielding.class); - exoToReg.put(PotionOfShielding.class, PotionOfHealing.class); - - regToExo.put(PotionOfToxicGas.class, PotionOfCorrosiveGas.class); - exoToReg.put(PotionOfCorrosiveGas.class, PotionOfToxicGas.class); - regToExo.put(PotionOfStrength.class, PotionOfMastery.class); exoToReg.put(PotionOfMastery.class, PotionOfStrength.class); - + + regToExo.put(PotionOfHealing.class, PotionOfShielding.class); + exoToReg.put(PotionOfShielding.class, PotionOfHealing.class); + + regToExo.put(PotionOfMindVision.class, PotionOfMagicalSight.class); + exoToReg.put(PotionOfMagicalSight.class, PotionOfMindVision.class); + regToExo.put(PotionOfFrost.class, PotionOfSnapFreeze.class); exoToReg.put(PotionOfSnapFreeze.class, PotionOfFrost.class); - - regToExo.put(PotionOfHaste.class, PotionOfStamina.class); - exoToReg.put(PotionOfStamina.class, PotionOfHaste.class); - + regToExo.put(PotionOfLiquidFlame.class, PotionOfDragonsBreath.class); exoToReg.put(PotionOfDragonsBreath.class, PotionOfLiquidFlame.class); - + + regToExo.put(PotionOfToxicGas.class, PotionOfCorrosiveGas.class); + exoToReg.put(PotionOfCorrosiveGas.class, PotionOfToxicGas.class); + + regToExo.put(PotionOfHaste.class, PotionOfStamina.class); + exoToReg.put(PotionOfStamina.class, PotionOfHaste.class); + regToExo.put(PotionOfInvisibility.class, PotionOfShroudingFog.class); exoToReg.put(PotionOfShroudingFog.class, PotionOfInvisibility.class); - regToExo.put(PotionOfMindVision.class, PotionOfMagicalSight.class); - exoToReg.put(PotionOfMagicalSight.class, PotionOfMindVision.class); - regToExo.put(PotionOfLevitation.class, PotionOfStormClouds.class); exoToReg.put(PotionOfStormClouds.class, PotionOfLevitation.class); - - regToExo.put(PotionOfExperience.class, PotionOfDivineInspiration.class); - exoToReg.put(PotionOfDivineInspiration.class, PotionOfExperience.class); - - regToExo.put(PotionOfPurity.class, PotionOfCleansing.class); - exoToReg.put(PotionOfCleansing.class, PotionOfPurity.class); - + regToExo.put(PotionOfParalyticGas.class, PotionOfEarthenArmor.class); exoToReg.put(PotionOfEarthenArmor.class, PotionOfParalyticGas.class); + + regToExo.put(PotionOfPurity.class, PotionOfCleansing.class); + exoToReg.put(PotionOfCleansing.class, PotionOfPurity.class); + + regToExo.put(PotionOfExperience.class, PotionOfDivineInspiration.class); + exoToReg.put(PotionOfDivineInspiration.class, PotionOfExperience.class); + } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ExoticScroll.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ExoticScroll.java index 9bf5b1f86..2ea8ec362 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ExoticScroll.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ExoticScroll.java @@ -39,46 +39,46 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade; import com.watabou.utils.Reflection; import java.util.ArrayList; -import java.util.HashMap; +import java.util.LinkedHashMap; public abstract class ExoticScroll extends Scroll { - public static final HashMap, Class> regToExo = new HashMap<>(); - public static final HashMap, Class> exoToReg = new HashMap<>(); + public static final LinkedHashMap, Class> regToExo = new LinkedHashMap<>(); + public static final LinkedHashMap, Class> exoToReg = new LinkedHashMap<>(); static{ + regToExo.put(ScrollOfUpgrade.class, ScrollOfEnchantment.class); + exoToReg.put(ScrollOfEnchantment.class, ScrollOfUpgrade.class); + regToExo.put(ScrollOfIdentify.class, ScrollOfDivination.class); exoToReg.put(ScrollOfDivination.class, ScrollOfIdentify.class); - regToExo.put(ScrollOfUpgrade.class, ScrollOfEnchantment.class); - exoToReg.put(ScrollOfEnchantment.class, ScrollOfUpgrade.class); - regToExo.put(ScrollOfRemoveCurse.class, ScrollOfAntiMagic.class); exoToReg.put(ScrollOfAntiMagic.class, ScrollOfRemoveCurse.class); - - regToExo.put(ScrollOfLullaby.class, ScrollOfSirensSong.class); - exoToReg.put(ScrollOfSirensSong.class, ScrollOfLullaby.class); - - regToExo.put(ScrollOfRage.class, ScrollOfChallenge.class); - exoToReg.put(ScrollOfChallenge.class, ScrollOfRage.class); - - regToExo.put(ScrollOfTerror.class, ScrollOfDread.class); - exoToReg.put(ScrollOfDread.class, ScrollOfTerror.class); - + + regToExo.put(ScrollOfMirrorImage.class, ScrollOfPrismaticImage.class); + exoToReg.put(ScrollOfPrismaticImage.class, ScrollOfMirrorImage.class); + regToExo.put(ScrollOfRecharging.class, ScrollOfMysticalEnergy.class); exoToReg.put(ScrollOfMysticalEnergy.class, ScrollOfRecharging.class); - - regToExo.put(ScrollOfMagicMapping.class, ScrollOfForesight.class); - exoToReg.put(ScrollOfForesight.class, ScrollOfMagicMapping.class); - + regToExo.put(ScrollOfTeleportation.class, ScrollOfPassage.class); exoToReg.put(ScrollOfPassage.class, ScrollOfTeleportation.class); - + + regToExo.put(ScrollOfLullaby.class, ScrollOfSirensSong.class); + exoToReg.put(ScrollOfSirensSong.class, ScrollOfLullaby.class); + + regToExo.put(ScrollOfMagicMapping.class, ScrollOfForesight.class); + exoToReg.put(ScrollOfForesight.class, ScrollOfMagicMapping.class); + + regToExo.put(ScrollOfRage.class, ScrollOfChallenge.class); + exoToReg.put(ScrollOfChallenge.class, ScrollOfRage.class); + regToExo.put(ScrollOfRetribution.class, ScrollOfPsionicBlast.class); exoToReg.put(ScrollOfPsionicBlast.class, ScrollOfRetribution.class); - regToExo.put(ScrollOfMirrorImage.class, ScrollOfPrismaticImage.class); - exoToReg.put(ScrollOfPrismaticImage.class, ScrollOfMirrorImage.class); + regToExo.put(ScrollOfTerror.class, ScrollOfDread.class); + exoToReg.put(ScrollOfDread.class, ScrollOfTerror.class); regToExo.put(ScrollOfTransmutation.class, ScrollOfMetamorphosis.class); exoToReg.put(ScrollOfMetamorphosis.class, ScrollOfTransmutation.class); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/TippedDart.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/TippedDart.java index 1ee78dbeb..e9b3982d1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/TippedDart.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/weapon/missiles/darts/TippedDart.java @@ -52,7 +52,7 @@ import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions; import com.watabou.utils.Reflection; import java.util.ArrayList; -import java.util.HashMap; +import java.util.LinkedHashMap; public abstract class TippedDart extends Dart { @@ -199,20 +199,20 @@ public abstract class TippedDart extends Dart { return 8 * quantity; } - private static HashMap, Class> types = new HashMap<>(); + public static final LinkedHashMap, Class> types = new LinkedHashMap<>(); static { - types.put(Blindweed.Seed.class, BlindingDart.class); - types.put(Mageroyal.Seed.class, CleansingDart.class); - types.put(Earthroot.Seed.class, ParalyticDart.class); - types.put(Fadeleaf.Seed.class, DisplacingDart.class); - types.put(Firebloom.Seed.class, IncendiaryDart.class); - types.put(Icecap.Seed.class, ChillingDart.class); types.put(Rotberry.Seed.class, RotDart.class); - types.put(Sorrowmoss.Seed.class, PoisonDart.class); - types.put(Starflower.Seed.class, HolyDart.class); - types.put(Stormvine.Seed.class, ShockingDart.class); types.put(Sungrass.Seed.class, HealingDart.class); + types.put(Fadeleaf.Seed.class, DisplacingDart.class); + types.put(Icecap.Seed.class, ChillingDart.class); + types.put(Firebloom.Seed.class, IncendiaryDart.class); + types.put(Sorrowmoss.Seed.class, PoisonDart.class); types.put(Swiftthistle.Seed.class, AdrenalineDart.class); + types.put(Blindweed.Seed.class, BlindingDart.class); + types.put(Stormvine.Seed.class, ShockingDart.class); + types.put(Earthroot.Seed.class, ParalyticDart.class); + types.put(Mageroyal.Seed.class, CleansingDart.class); + types.put(Starflower.Seed.class, HolyDart.class); } public static TippedDart getTipped( Plant.Seed s, int quantity ){ diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java index 92f4c1f6f..32e4bb3ac 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Catalog.java @@ -22,8 +22,89 @@ package com.shatteredpixel.shatteredpixeldungeon.journal; import com.shatteredpixel.shatteredpixeldungeon.Badges; +import com.shatteredpixel.shatteredpixeldungeon.items.Amulet; +import com.shatteredpixel.shatteredpixeldungeon.items.Ankh; +import com.shatteredpixel.shatteredpixeldungeon.items.ArcaneResin; +import com.shatteredpixel.shatteredpixeldungeon.items.Dewdrop; +import com.shatteredpixel.shatteredpixeldungeon.items.EnergyCrystal; import com.shatteredpixel.shatteredpixeldungeon.items.Generator; +import com.shatteredpixel.shatteredpixeldungeon.items.Gold; +import com.shatteredpixel.shatteredpixeldungeon.items.Honeypot; import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.items.KingsCrown; +import com.shatteredpixel.shatteredpixeldungeon.items.LiquidMetal; +import com.shatteredpixel.shatteredpixeldungeon.items.Stylus; +import com.shatteredpixel.shatteredpixeldungeon.items.TengusMask; +import com.shatteredpixel.shatteredpixeldungeon.items.Torch; +import com.shatteredpixel.shatteredpixeldungeon.items.Waterskin; +import com.shatteredpixel.shatteredpixeldungeon.items.bags.MagicalHolster; +import com.shatteredpixel.shatteredpixeldungeon.items.bags.PotionBandolier; +import com.shatteredpixel.shatteredpixeldungeon.items.bags.ScrollHolder; +import com.shatteredpixel.shatteredpixeldungeon.items.bags.VelvetPouch; +import com.shatteredpixel.shatteredpixeldungeon.items.bombs.ArcaneBomb; +import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Bomb; +import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Firebomb; +import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Flashbang; +import com.shatteredpixel.shatteredpixeldungeon.items.bombs.FrostBomb; +import com.shatteredpixel.shatteredpixeldungeon.items.bombs.HolyBomb; +import com.shatteredpixel.shatteredpixeldungeon.items.bombs.Noisemaker; +import com.shatteredpixel.shatteredpixeldungeon.items.bombs.RegrowthBomb; +import com.shatteredpixel.shatteredpixeldungeon.items.bombs.ShockBomb; +import com.shatteredpixel.shatteredpixeldungeon.items.bombs.ShrapnelBomb; +import com.shatteredpixel.shatteredpixeldungeon.items.bombs.WoollyBomb; +import com.shatteredpixel.shatteredpixeldungeon.items.food.Berry; +import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit; +import com.shatteredpixel.shatteredpixeldungeon.items.food.ChargrilledMeat; +import com.shatteredpixel.shatteredpixeldungeon.items.food.Food; +import com.shatteredpixel.shatteredpixeldungeon.items.food.FrozenCarpaccio; +import com.shatteredpixel.shatteredpixeldungeon.items.food.MeatPie; +import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat; +import com.shatteredpixel.shatteredpixeldungeon.items.food.Pasty; +import com.shatteredpixel.shatteredpixeldungeon.items.food.PhantomMeat; +import com.shatteredpixel.shatteredpixeldungeon.items.food.SmallRation; +import com.shatteredpixel.shatteredpixeldungeon.items.food.StewedMeat; +import com.shatteredpixel.shatteredpixeldungeon.items.food.SupplyRation; +import com.shatteredpixel.shatteredpixeldungeon.items.keys.CrystalKey; +import com.shatteredpixel.shatteredpixeldungeon.items.keys.GoldenKey; +import com.shatteredpixel.shatteredpixeldungeon.items.keys.IronKey; +import com.shatteredpixel.shatteredpixeldungeon.items.keys.SkeletonKey; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.AquaBrew; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.BlizzardBrew; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.CausticBrew; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.InfernalBrew; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.ShockingBrew; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.brews.UnstableBrew; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfAquaticRejuvenation; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfArcaneArmor; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfDragonsBlood; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfFeatherFall; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfHoneyedHealing; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfIcyTouch; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfMight; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfToxicEssence; +import com.shatteredpixel.shatteredpixeldungeon.items.potions.exotic.ExoticPotion; +import com.shatteredpixel.shatteredpixeldungeon.items.quest.GooBlob; +import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard; +import com.shatteredpixel.shatteredpixeldungeon.items.remains.BowFragment; +import com.shatteredpixel.shatteredpixeldungeon.items.remains.BrokenHilt; +import com.shatteredpixel.shatteredpixeldungeon.items.remains.BrokenStaff; +import com.shatteredpixel.shatteredpixeldungeon.items.remains.CloakScrap; +import com.shatteredpixel.shatteredpixeldungeon.items.remains.SealShard; +import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ExoticScroll; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.Alchemize; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.BeaconOfReturning; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.CurseInfusion; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.MagicalInfusion; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.PhaseShift; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.ReclaimTrap; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.Recycle; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.SummonElemental; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.TelekineticGrab; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.UnstableSpell; +import com.shatteredpixel.shatteredpixeldungeon.items.spells.WildEnergy; +import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.TrinketCatalyst; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.SpiritBow; +import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.TippedDart; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.watabou.utils.Bundle; @@ -36,15 +117,28 @@ import java.util.List; public enum Catalog { //EQUIPMENT - WEAPONS, + MELEE_WEAPONS, ARMOR, + THROWN_WEAPONS, WANDS, RINGS, ARTIFACTS, + TRINKETS, + MISC_EQUIPMENT, //CONSUMABLES POTIONS, - SCROLLS; + SEEDS, + SCROLLS, + STONES, + FOOD, + EXOTIC_POTIONS, + EXOTIC_SCROLLS, + BOMBS, + TIPPED_DARTS, + BREWS_ELIXIRS, + SPELLS, + MISC_CONSUMABLES; private LinkedHashMap, Boolean> seen = new LinkedHashMap<>(); @@ -52,6 +146,13 @@ public enum Catalog { return seen.keySet(); } + //should only be used when initializing + private void addItems( Class... items){ + for (Class item : items){ + seen.put((Class) item, false); + } + } + public String title(){ return Messages.get(this, name() + ".title"); } @@ -67,53 +168,79 @@ public enum Catalog { } return seenTotal; } - + + //TODO ordering of some items, and see if there may be better places to centralize some of these lists static { - for (Class weapon : Generator.Category.WEP_T1.classes){ - WEAPONS.seen.put( weapon, false); - } - for (Class weapon : Generator.Category.WEP_T2.classes){ - WEAPONS.seen.put( weapon, false); - } - for (Class weapon : Generator.Category.WEP_T3.classes){ - WEAPONS.seen.put( weapon, false); - } - for (Class weapon : Generator.Category.WEP_T4.classes){ - WEAPONS.seen.put( weapon, false); - } - for (Class weapon : Generator.Category.WEP_T5.classes){ - WEAPONS.seen.put( weapon, false); - } - for (Class armor : Generator.Category.ARMOR.classes){ - ARMOR.seen.put( armor, false); - } + MELEE_WEAPONS.addItems(Generator.Category.WEP_T1.classes); + MELEE_WEAPONS.addItems(Generator.Category.WEP_T2.classes); + MELEE_WEAPONS.addItems(Generator.Category.WEP_T3.classes); + MELEE_WEAPONS.addItems(Generator.Category.WEP_T4.classes); + MELEE_WEAPONS.addItems(Generator.Category.WEP_T5.classes); - for (Class wand : Generator.Category.WAND.classes){ - WANDS.seen.put( wand, false); - } + ARMOR.addItems(Generator.Category.ARMOR.classes); - for (Class ring : Generator.Category.RING.classes){ - RINGS.seen.put( ring, false); - } + THROWN_WEAPONS.addItems(Generator.Category.MIS_T1.classes); + THROWN_WEAPONS.addItems(Generator.Category.MIS_T2.classes); + THROWN_WEAPONS.addItems(Generator.Category.MIS_T3.classes); + THROWN_WEAPONS.addItems(Generator.Category.MIS_T4.classes); + THROWN_WEAPONS.addItems(Generator.Category.MIS_T5.classes); - for (Class artifact : Generator.Category.ARTIFACT.classes){ - ARTIFACTS.seen.put( artifact, false); - } + WANDS.addItems(Generator.Category.WAND.classes); - for (Class potion : Generator.Category.POTION.classes){ - POTIONS.seen.put( potion, false); - } + RINGS.addItems(Generator.Category.RING.classes); - for (Class scroll : Generator.Category.SCROLL.classes){ - SCROLLS.seen.put( scroll, false); - } + ARTIFACTS.addItems(Generator.Category.ARTIFACT.classes); + + TRINKETS.addItems(Generator.Category.TRINKET.classes); + + MISC_EQUIPMENT.addItems( SpiritBow.class, Waterskin.class, VelvetPouch.class, + PotionBandolier.class, ScrollHolder.class, MagicalHolster.class, Amulet.class); + + + + POTIONS.addItems(Generator.Category.POTION.classes); + + SCROLLS.addItems(Generator.Category.SCROLL.classes); + + SEEDS.addItems(Generator.Category.SEED.classes); + + STONES.addItems(Generator.Category.STONE.classes); + + FOOD.addItems( Food.class, Pasty.class, MysteryMeat.class, ChargrilledMeat.class, + StewedMeat.class, FrozenCarpaccio.class, SmallRation.class, Berry.class, + SupplyRation.class, Blandfruit.class, PhantomMeat.class, MeatPie.class ); + + EXOTIC_POTIONS.addItems(ExoticPotion.exoToReg.keySet().toArray(new Class[0])); + + EXOTIC_SCROLLS.addItems(ExoticScroll.exoToReg.keySet().toArray(new Class[0])); + + BOMBS.addItems( Bomb.class, FrostBomb.class, Firebomb.class, Flashbang.class, RegrowthBomb.class, + WoollyBomb.class, Noisemaker.class, ShockBomb.class, HolyBomb.class, ArcaneBomb.class, ShrapnelBomb.class); + + TIPPED_DARTS.addItems(TippedDart.types.values().toArray(new Class[0])); + + BREWS_ELIXIRS.addItems( UnstableBrew.class, InfernalBrew.class, BlizzardBrew.class, + ShockingBrew.class, CausticBrew.class, AquaBrew.class, ElixirOfHoneyedHealing.class, + ElixirOfAquaticRejuvenation.class, ElixirOfArcaneArmor.class, ElixirOfDragonsBlood.class, + ElixirOfIcyTouch.class, ElixirOfToxicEssence.class, ElixirOfMight.class, ElixirOfFeatherFall.class); + + SPELLS.addItems( UnstableSpell.class, WildEnergy.class, TelekineticGrab.class, PhaseShift.class, + Alchemize.class, CurseInfusion.class, MagicalInfusion.class, Recycle.class, + ReclaimTrap.class, SummonElemental.class, BeaconOfReturning.class); + + MISC_CONSUMABLES.addItems( Gold.class, EnergyCrystal.class, Dewdrop.class, + IronKey.class, GoldenKey.class, CrystalKey.class, SkeletonKey.class, + TrinketCatalyst.class, Stylus.class, Torch.class, Honeypot.class, Ankh.class, + GooBlob.class, TengusMask.class, MetalShard.class, KingsCrown.class, + LiquidMetal.class, ArcaneResin.class, + SealShard.class, BrokenStaff.class, CloakScrap.class, BowFragment.class, BrokenHilt.class); } - + public static LinkedHashMap catalogBadges = new LinkedHashMap<>(); static { - catalogBadges.put(WEAPONS, Badges.Badge.ALL_WEAPONS_IDENTIFIED); + catalogBadges.put(MELEE_WEAPONS, Badges.Badge.ALL_WEAPONS_IDENTIFIED); catalogBadges.put(ARMOR, Badges.Badge.ALL_ARMOR_IDENTIFIED); catalogBadges.put(WANDS, Badges.Badge.ALL_WANDS_IDENTIFIED); catalogBadges.put(RINGS, Badges.Badge.ALL_RINGS_IDENTIFIED); @@ -121,6 +248,34 @@ public enum Catalog { catalogBadges.put(POTIONS, Badges.Badge.ALL_POTIONS_IDENTIFIED); catalogBadges.put(SCROLLS, Badges.Badge.ALL_SCROLLS_IDENTIFIED); } + + public static ArrayList equipmentCatalogs = new ArrayList<>(); + static { + equipmentCatalogs.add(MELEE_WEAPONS); + equipmentCatalogs.add(ARMOR); + equipmentCatalogs.add(THROWN_WEAPONS); + equipmentCatalogs.add(WANDS); + equipmentCatalogs.add(RINGS); + equipmentCatalogs.add(ARTIFACTS); + equipmentCatalogs.add(TRINKETS); + equipmentCatalogs.add(MISC_EQUIPMENT); + } + + public static ArrayList consumableCatalogs = new ArrayList<>(); + static { + consumableCatalogs.add(POTIONS); + consumableCatalogs.add(SCROLLS); + consumableCatalogs.add(SEEDS); + consumableCatalogs.add(STONES); + consumableCatalogs.add(FOOD); + consumableCatalogs.add(EXOTIC_POTIONS); + consumableCatalogs.add(EXOTIC_SCROLLS); + consumableCatalogs.add(BOMBS); + consumableCatalogs.add(TIPPED_DARTS); + consumableCatalogs.add(BREWS_ELIXIRS); + consumableCatalogs.add(SPELLS); + consumableCatalogs.add(MISC_CONSUMABLES); + } public static boolean isSeen(Class itemClass){ for (Catalog cat : values()) { @@ -169,23 +324,24 @@ public enum Catalog { Badges.loadGlobal(); //logic for if we have all badges - if (Badges.isUnlocked(Badges.Badge.ALL_ITEMS_IDENTIFIED)){ + //FIXME skip this for now as it's outdated + /*if (Badges.isUnlocked(Badges.Badge.ALL_ITEMS_IDENTIFIED)){ for ( Catalog cat : values()){ for (Class item : cat.items()){ cat.seen.put(item, true); } } return; - } + }*/ //catalog-specific badge logic - for (Catalog cat : values()){ + /*for (Catalog cat : values()){ if (Badges.isUnlocked(catalogBadges.get(cat))){ for (Class item : cat.items()){ cat.seen.put(item, true); } } - } + }*/ //general save/load if (bundle.contains(CATALOG_ITEMS)) { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java index d698e195b..a0c8112a2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java @@ -517,35 +517,36 @@ public class WndJournal extends WndTabbed { grid.scrollTo( 0, 0 ); if (currentItemIdx == EQUIP_IDX) { - int totalItems = Catalog.WEAPONS.totalItems() + Catalog.ARMOR.totalItems() + Catalog.WANDS.totalItems() + Catalog.RINGS.totalItems() + Catalog.ARTIFACTS.totalItems(); - int totalSeen = Catalog.WEAPONS.totalSeen() + Catalog.ARMOR.totalSeen() + Catalog.WANDS.totalSeen() + Catalog.RINGS.totalSeen() + Catalog.ARTIFACTS.totalSeen(); + int totalItems = 0; + int totalSeen = 0; + for (Catalog catalog : Catalog.equipmentCatalogs){ + totalItems += catalog.totalItems(); + totalSeen += catalog.totalSeen(); + } grid.addHeader("_" + Messages.get(this, "title_equipment") + "_ (" + totalSeen + "/" + totalItems + ")", 9, true); - grid.addHeader("_" + Messages.capitalize(Catalog.WEAPONS.title()) + "_ (" + Catalog.WEAPONS.totalSeen() + "/" + Catalog.WEAPONS.totalItems() + "):"); - addGridItems(grid, Catalog.WEAPONS.items()); - - grid.addHeader("_" + Messages.capitalize(Catalog.ARMOR.title()) + "_ (" + Catalog.ARMOR.totalSeen() + "/" + Catalog.ARMOR.totalItems() + "):"); - addGridItems(grid, Catalog.ARMOR.items()); - - grid.addHeader("_" + Messages.capitalize(Catalog.WANDS.title()) + "_ (" + Catalog.WANDS.totalSeen() + "/" + Catalog.WANDS.totalItems() + "):"); - addGridItems(grid, Catalog.WANDS.items()); - - grid.addHeader("_" + Messages.capitalize(Catalog.RINGS.title()) + "_ (" + Catalog.RINGS.totalSeen() + "/" + Catalog.RINGS.totalItems() + "):"); - addGridItems(grid, Catalog.RINGS.items()); - - grid.addHeader("_" + Messages.capitalize(Catalog.ARTIFACTS.title()) + "_ (" + Catalog.ARTIFACTS.totalSeen() + "/" + Catalog.ARTIFACTS.totalItems() + "):"); - addGridItems(grid, Catalog.ARTIFACTS.items()); + for (Catalog catalog : Catalog.equipmentCatalogs){ + totalItems += catalog.totalItems(); + totalSeen += catalog.totalSeen(); + grid.addHeader("_" + Messages.titleCase(catalog.title()) + "_ (" + catalog.totalSeen() + "/" + catalog.totalItems() + "):"); + addGridItems(grid, catalog.items()); + } } else if (currentItemIdx == CONSUM_IDX){ - int totalItems = Catalog.POTIONS.totalItems() + Catalog.SCROLLS.totalItems(); - int totalSeen = Catalog.POTIONS.totalSeen() + Catalog.SCROLLS.totalSeen(); + int totalItems = 0; + int totalSeen = 0; + for (Catalog catalog : Catalog.consumableCatalogs){ + totalItems += catalog.totalItems(); + totalSeen += catalog.totalSeen(); + } grid.addHeader("_" + Messages.get(this, "title_consumables") + "_ (" + totalSeen + "/" + totalItems + ")", 9, true); - grid.addHeader("_" + Messages.capitalize(Catalog.POTIONS.title()) + "_ (" + Catalog.POTIONS.totalSeen() + "/" + Catalog.POTIONS.totalItems() + "):"); - addGridItems(grid, Catalog.POTIONS.items()); - - grid.addHeader("_" + Messages.capitalize(Catalog.SCROLLS.title()) + "_ (" + Catalog.SCROLLS.totalSeen() + "/" + Catalog.SCROLLS.totalItems() + "):"); - addGridItems(grid, Catalog.SCROLLS.items()); + for (Catalog catalog : Catalog.consumableCatalogs){ + totalItems += catalog.totalItems(); + totalSeen += catalog.totalSeen(); + grid.addHeader("_" + Messages.titleCase(catalog.title()) + "_ (" + catalog.totalSeen() + "/" + catalog.totalItems() + "):"); + addGridItems(grid, catalog.items()); + } } @@ -595,7 +596,7 @@ public class WndJournal extends WndTabbed { } }; if (itemSeen) { - if (item instanceof Potion || item instanceof Scroll || item instanceof Ring) { + if (item.icon != -1) { Image icon = new Image(Assets.Sprites.ITEM_ICONS); icon.frame(ItemSpriteSheet.Icons.film.get(item.icon)); gridItem.addSecondIcon(icon);