v2.5.0: more thoroughly filled out equipment and consumable catalog tabs
This commit is contained in:
@@ -122,7 +122,9 @@ windows.wndjournal$notestab.landmarks=Landmarks
|
||||
windows.wndjournal$catalogtab.title=Catalogs
|
||||
windows.wndjournal$catalogtab.title_equipment=Equipment
|
||||
windows.wndjournal$catalogtab.title_consumables=Consumables
|
||||
windows.wndjournal$catalogtab.not_seen=You haven't identified this item yet.
|
||||
windows.wndjournal$catalogtab.not_seen_item=You haven't found and identified that item in any of your runs yet.
|
||||
windows.wndjournal$catalogtab.not_seen_enchantment=You haven't found and identified a weapon with that enchantmet in any of your runs yet.
|
||||
windows.wndjournal$catalogtab.not_seen_glyph=You haven't found and identified an armor with that glyph in any of your runs yet.
|
||||
windows.wndjournal$loretab.title=Documents
|
||||
|
||||
windows.wndkeybindings.controller_info=The left stick moves your character\nThe right stick controls an on-screen pointer
|
||||
|
||||
@@ -71,6 +71,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WornShortswor
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingKnife;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingSpike;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.ThrowingStone;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.watabou.utils.DeviceCompat;
|
||||
|
||||
@@ -164,6 +165,7 @@ public enum HeroClass {
|
||||
|
||||
if (hero.belongings.armor != null){
|
||||
hero.belongings.armor.affixSeal(new BrokenSeal());
|
||||
Catalog.setSeen(BrokenSeal.class); //as it's not added to the inventory
|
||||
}
|
||||
|
||||
new PotionOfHealing().identify();
|
||||
|
||||
@@ -28,6 +28,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.buffs.Buff;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.FloatingText;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
@@ -49,6 +50,7 @@ public class Dewdrop extends Item {
|
||||
public boolean doPickUp(Hero hero, int pos) {
|
||||
|
||||
Waterskin flask = hero.belongings.getItem( Waterskin.class );
|
||||
Catalog.setSeen(getClass());
|
||||
|
||||
if (flask != null && !flask.isFull()){
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.FloatingText;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
@@ -54,6 +55,8 @@ public class EnergyCrystal extends Item {
|
||||
@Override
|
||||
public boolean doPickUp(Hero hero, int pos) {
|
||||
|
||||
Catalog.setSeen(getClass());
|
||||
|
||||
Dungeon.energy += quantity;
|
||||
//TODO track energy collected maybe? We do already track recipes crafted though..
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Statistics;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.effects.FloatingText;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||
@@ -57,7 +58,9 @@ public class Gold extends Item {
|
||||
|
||||
@Override
|
||||
public boolean doPickUp(Hero hero, int pos) {
|
||||
|
||||
|
||||
Catalog.setSeen(getClass());
|
||||
|
||||
Dungeon.gold += quantity;
|
||||
Statistics.goldCollected += quantity;
|
||||
Badges.validateGoldCollected();
|
||||
|
||||
@@ -268,7 +268,7 @@ public class Item implements Bundlable {
|
||||
|
||||
}
|
||||
|
||||
public boolean collect() {
|
||||
public final boolean collect() {
|
||||
return collect( Dungeon.hero.belongings.backpack );
|
||||
}
|
||||
|
||||
|
||||
@@ -57,8 +57,10 @@ import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Stone;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Swiftness;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Thorns;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.glyphs.Viscosity;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfArcana;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.trinkets.ParchmentScrap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite;
|
||||
@@ -201,6 +203,26 @@ public class Armor extends EquipableItem {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean collect(Bag container) {
|
||||
if(super.collect(container)){
|
||||
if (isIdentified() && glyph != null){
|
||||
Catalog.setSeen(glyph.getClass());
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item identify(boolean byHero) {
|
||||
if (glyph != null && byHero && Dungeon.hero != null && Dungeon.hero.isAlive()){
|
||||
Catalog.setSeen(glyph.getClass());
|
||||
}
|
||||
return super.identify(byHero);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doEquip( Hero hero ) {
|
||||
|
||||
@@ -613,6 +635,10 @@ public class Armor extends EquipableItem {
|
||||
if (seal != null){
|
||||
seal.setGlyph(glyph);
|
||||
}
|
||||
if (isIdentified() && Dungeon.hero != null
|
||||
&& Dungeon.hero.isAlive() && Dungeon.hero.belongings.contains(this)){
|
||||
Catalog.setSeen(glyph.getClass());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -660,7 +686,7 @@ public class Armor extends EquipableItem {
|
||||
10 //3.33% each
|
||||
};
|
||||
|
||||
private static final Class<?>[] curses = new Class<?>[]{
|
||||
public static final Class<?>[] curses = new Class<?>[]{
|
||||
AntiEntropy.class, Corrosion.class, Displacement.class, Metabolism.class,
|
||||
Multiplicity.class, Stench.class, Overgrowth.class, Bulk.class
|
||||
};
|
||||
|
||||
@@ -53,6 +53,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRetributio
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.exotic.ScrollOfPsionicBlast;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MeleeWeapon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.AlchemyScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector;
|
||||
@@ -489,6 +490,7 @@ public class DriedRose extends Artifact {
|
||||
|
||||
@Override
|
||||
public boolean doPickUp(Hero hero, int pos) {
|
||||
Catalog.setSeen(getClass());
|
||||
DriedRose rose = hero.belongings.getItem( DriedRose.class );
|
||||
|
||||
if (rose == null){
|
||||
|
||||
@@ -34,6 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.Mob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEnergy;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.plants.Plant;
|
||||
@@ -475,6 +476,7 @@ public class TimekeepersHourglass extends Artifact {
|
||||
|
||||
@Override
|
||||
public boolean doPickUp(Hero hero, int pos) {
|
||||
Catalog.setSeen(getClass());
|
||||
TimekeepersHourglass hourglass = hero.belongings.getItem( TimekeepersHourglass.class );
|
||||
if (hourglass != null && !hourglass.cursed) {
|
||||
hourglass.upgrade();
|
||||
|
||||
@@ -24,6 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.items.keys;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Notes;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.windows.WndJournal;
|
||||
@@ -49,6 +50,7 @@ public abstract class Key extends Item {
|
||||
|
||||
@Override
|
||||
public boolean doPickUp(Hero hero, int pos) {
|
||||
Catalog.setSeen(getClass());
|
||||
GameScene.pickUpJournal(this, pos);
|
||||
WndJournal.last_index = 2;
|
||||
Notes.add(this);
|
||||
|
||||
@@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Talent;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.actors.hero.abilities.duelist.ElementalStrike;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.KindOfWeapon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfArcana;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfForce;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfFuror;
|
||||
@@ -58,6 +59,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Unstab
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.enchantments.Vampiric;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RunicBlade;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Scimitar;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||
@@ -176,6 +178,26 @@ abstract public class Weapon extends KindOfWeapon {
|
||||
usesLeftToID = USES_TO_ID;
|
||||
availableUsesToID = USES_TO_ID/2f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean collect(Bag container) {
|
||||
if(super.collect(container)){
|
||||
if (isIdentified() && enchantment != null){
|
||||
Catalog.setSeen(enchantment.getClass());
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item identify(boolean byHero) {
|
||||
if (enchantment != null && byHero && Dungeon.hero != null && Dungeon.hero.isAlive()){
|
||||
Catalog.setSeen(enchantment.getClass());
|
||||
}
|
||||
return super.identify(byHero);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float accuracyFactor(Char owner, Char target) {
|
||||
@@ -331,6 +353,10 @@ abstract public class Weapon extends KindOfWeapon {
|
||||
if (ench == null || !ench.curse()) curseInfusionBonus = false;
|
||||
enchantment = ench;
|
||||
updateQuickslot();
|
||||
if (isIdentified() && Dungeon.hero != null
|
||||
&& Dungeon.hero.isAlive() && Dungeon.hero.belongings.contains(this)){
|
||||
Catalog.setSeen(ench.getClass());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -377,8 +403,8 @@ abstract public class Weapon extends KindOfWeapon {
|
||||
40, //6.67% each
|
||||
10 //3.33% each
|
||||
};
|
||||
|
||||
private static final Class<?>[] curses = new Class<?>[]{
|
||||
|
||||
public static final Class<?>[] curses = new Class<?>[]{
|
||||
Annoying.class, Displacing.class, Dazzling.class, Explosive.class,
|
||||
Sacrificial.class, Wayward.class, Polarized.class, Friendly.class
|
||||
};
|
||||
|
||||
@@ -25,18 +25,19 @@ 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.BrokenSeal;
|
||||
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.armor.Armor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.MagicalHolster;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.PotionBandolier;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.ScrollHolder;
|
||||
@@ -83,6 +84,11 @@ import com.shatteredpixel.shatteredpixeldungeon.items.potions.elixirs.ElixirOfIc
|
||||
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.CeremonialCandle;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.quest.CorpseDust;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.quest.DarkGold;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.quest.DwarfToken;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.quest.Embers;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.quest.GooBlob;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.quest.MetalShard;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.remains.BowFragment;
|
||||
@@ -104,6 +110,7 @@ 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.Weapon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.darts.TippedDart;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||
import com.watabou.utils.Bundle;
|
||||
@@ -119,6 +126,8 @@ public enum Catalog {
|
||||
//EQUIPMENT
|
||||
MELEE_WEAPONS,
|
||||
ARMOR,
|
||||
ENCHANTMENTS,
|
||||
GLYPHS,
|
||||
THROWN_WEAPONS,
|
||||
WANDS,
|
||||
RINGS,
|
||||
@@ -140,16 +149,16 @@ public enum Catalog {
|
||||
SPELLS,
|
||||
MISC_CONSUMABLES;
|
||||
|
||||
private LinkedHashMap<Class<? extends Item>, Boolean> seen = new LinkedHashMap<>();
|
||||
private LinkedHashMap<Class<?>, Boolean> seen = new LinkedHashMap<>();
|
||||
|
||||
public Collection<Class<? extends Item>> items(){
|
||||
public Collection<Class<?>> items(){
|
||||
return seen.keySet();
|
||||
}
|
||||
|
||||
//should only be used when initializing
|
||||
private void addItems( Class<?>... items){
|
||||
for (Class<?> item : items){
|
||||
seen.put((Class<? extends Item>) item, false);
|
||||
seen.put(item, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,6 +195,16 @@ public enum Catalog {
|
||||
THROWN_WEAPONS.addItems(Generator.Category.MIS_T4.classes);
|
||||
THROWN_WEAPONS.addItems(Generator.Category.MIS_T5.classes);
|
||||
|
||||
ENCHANTMENTS.addItems(Weapon.Enchantment.common);
|
||||
ENCHANTMENTS.addItems(Weapon.Enchantment.uncommon);
|
||||
ENCHANTMENTS.addItems(Weapon.Enchantment.rare);
|
||||
ENCHANTMENTS.addItems(Weapon.Enchantment.curses);
|
||||
|
||||
GLYPHS.addItems(Armor.Glyph.common);
|
||||
GLYPHS.addItems(Armor.Glyph.uncommon);
|
||||
GLYPHS.addItems(Armor.Glyph.rare);
|
||||
GLYPHS.addItems(Armor.Glyph.curses);
|
||||
|
||||
WANDS.addItems(Generator.Category.WAND.classes);
|
||||
|
||||
RINGS.addItems(Generator.Category.RING.classes);
|
||||
@@ -194,7 +213,7 @@ public enum Catalog {
|
||||
|
||||
TRINKETS.addItems(Generator.Category.TRINKET.classes);
|
||||
|
||||
MISC_EQUIPMENT.addItems( SpiritBow.class, Waterskin.class, VelvetPouch.class,
|
||||
MISC_EQUIPMENT.addItems(BrokenSeal.class, SpiritBow.class, Waterskin.class, VelvetPouch.class,
|
||||
PotionBandolier.class, ScrollHolder.class, MagicalHolster.class, Amulet.class);
|
||||
|
||||
|
||||
@@ -232,6 +251,7 @@ public enum Catalog {
|
||||
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,
|
||||
CorpseDust.class, Embers.class, CeremonialCandle.class, DarkGold.class, DwarfToken.class,
|
||||
GooBlob.class, TengusMask.class, MetalShard.class, KingsCrown.class,
|
||||
LiquidMetal.class, ArcaneResin.class,
|
||||
SealShard.class, BrokenStaff.class, CloakScrap.class, BowFragment.class, BrokenHilt.class);
|
||||
@@ -253,6 +273,8 @@ public enum Catalog {
|
||||
static {
|
||||
equipmentCatalogs.add(MELEE_WEAPONS);
|
||||
equipmentCatalogs.add(ARMOR);
|
||||
equipmentCatalogs.add(ENCHANTMENTS);
|
||||
equipmentCatalogs.add(GLYPHS);
|
||||
equipmentCatalogs.add(THROWN_WEAPONS);
|
||||
equipmentCatalogs.add(WANDS);
|
||||
equipmentCatalogs.add(RINGS);
|
||||
@@ -277,7 +299,7 @@ public enum Catalog {
|
||||
consumableCatalogs.add(MISC_CONSUMABLES);
|
||||
}
|
||||
|
||||
public static boolean isSeen(Class<? extends Item> itemClass){
|
||||
public static boolean isSeen(Class<?> itemClass){
|
||||
for (Catalog cat : values()) {
|
||||
if (cat.seen.containsKey(itemClass)) {
|
||||
return cat.seen.get(itemClass);
|
||||
@@ -286,10 +308,10 @@ public enum Catalog {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void setSeen(Class<? extends Item> itemClass){
|
||||
public static void setSeen(Class<?> cls){
|
||||
for (Catalog cat : values()) {
|
||||
if (cat.seen.containsKey(itemClass) && !cat.seen.get(itemClass)) {
|
||||
cat.seen.put(itemClass, true);
|
||||
if (cat.seen.containsKey(cls) && !cat.seen.get(cls)) {
|
||||
cat.seen.put(cls, true);
|
||||
Journal.saveNeeded = true;
|
||||
}
|
||||
}
|
||||
@@ -305,15 +327,15 @@ public enum Catalog {
|
||||
ArrayList<Class> seen = new ArrayList<>();
|
||||
|
||||
//if we have identified all items of a set, we use the badge to keep track instead.
|
||||
if (!Badges.isUnlocked(Badges.Badge.ALL_ITEMS_IDENTIFIED)) {
|
||||
//if (!Badges.isUnlocked(Badges.Badge.ALL_ITEMS_IDENTIFIED)) {
|
||||
for (Catalog cat : values()) {
|
||||
if (!Badges.isUnlocked(catalogBadges.get(cat))) {
|
||||
for (Class<? extends Item> item : cat.items()) {
|
||||
//if (!Badges.isUnlocked(catalogBadges.get(cat))) {
|
||||
for (Class<?> item : cat.items()) {
|
||||
if (cat.seen.get(item)) seen.add(item);
|
||||
}
|
||||
}
|
||||
//}
|
||||
}
|
||||
}
|
||||
//}
|
||||
|
||||
bundle.put( CATALOG_ITEMS, seen.toArray(new Class[0]) );
|
||||
|
||||
@@ -335,13 +357,13 @@ public enum Catalog {
|
||||
}*/
|
||||
|
||||
//catalog-specific badge logic
|
||||
/*for (Catalog cat : values()){
|
||||
for (Catalog cat : values()){
|
||||
if (Badges.isUnlocked(catalogBadges.get(cat))){
|
||||
for (Class<? extends Item> item : cat.items()){
|
||||
for (Class<?> item : cat.items()){
|
||||
cat.seen.put(item, true);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
//general save/load
|
||||
if (bundle.contains(CATALOG_ITEMS)) {
|
||||
@@ -351,7 +373,7 @@ public enum Catalog {
|
||||
}
|
||||
|
||||
for (Catalog cat : values()) {
|
||||
for (Class<? extends Item> item : cat.items()) {
|
||||
for (Class<?> item : cat.items()) {
|
||||
if (seenClasses.contains(item)) {
|
||||
cat.seen.put(item, true);
|
||||
}
|
||||
|
||||
@@ -38,6 +38,7 @@ import com.watabou.glwrap.Matrix;
|
||||
import com.watabou.glwrap.Vertexbuffer;
|
||||
import com.watabou.noosa.Camera;
|
||||
import com.watabou.noosa.Game;
|
||||
import com.watabou.noosa.Image;
|
||||
import com.watabou.noosa.MovieClip;
|
||||
import com.watabou.noosa.NoosaScript;
|
||||
import com.watabou.noosa.audio.Sample;
|
||||
@@ -125,6 +126,16 @@ public class ItemSprite extends MovieClip {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copy(Image other) {
|
||||
super.copy(other);
|
||||
|
||||
if (other instanceof ItemSprite && ((ItemSprite) other).glowing != null){
|
||||
glow(((ItemSprite) other).glowing);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void visible(boolean value){
|
||||
this.visible = value;
|
||||
if (emitter != null && !visible){
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
package com.shatteredpixel.shatteredpixeldungeon.ui;
|
||||
|
||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite;
|
||||
import com.watabou.noosa.ColorBlock;
|
||||
import com.watabou.noosa.Image;
|
||||
import com.watabou.noosa.ui.Component;
|
||||
@@ -112,7 +113,13 @@ public class ScrollingGridPane extends ScrollPane {
|
||||
public GridItem( Image icon ) {
|
||||
super();
|
||||
|
||||
if (icon instanceof ItemSprite){
|
||||
this.icon = new ItemSprite();
|
||||
} else {
|
||||
this.icon = new Image();
|
||||
}
|
||||
this.icon.copy(icon);
|
||||
add(this.icon);
|
||||
}
|
||||
|
||||
public void addSecondIcon( Image icon ){
|
||||
@@ -133,9 +140,6 @@ public class ScrollingGridPane extends ScrollPane {
|
||||
protected void createChildren() {
|
||||
bg = new ColorBlock( 1, 1, 0x9953564D);
|
||||
add(bg);
|
||||
|
||||
icon = new Image();
|
||||
add( icon );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,10 +25,12 @@ import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClassArmor;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Document;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Notes;
|
||||
@@ -556,52 +558,101 @@ public class WndJournal extends WndTabbed {
|
||||
|
||||
}
|
||||
|
||||
private static void addGridItems( ScrollingGridPane grid, Collection<Class<? extends Item>> itemClasses) {
|
||||
for (Class<? extends Item> itemClass : itemClasses) {
|
||||
Item item = Reflection.newInstance(itemClass);
|
||||
boolean itemSeen = Catalog.isSeen(itemClass);
|
||||
private static void addGridItems( ScrollingGridPane grid, Collection<Class<?>> classes) {
|
||||
for (Class<?> itemClass : classes) {
|
||||
|
||||
if (itemSeen) {
|
||||
if (item instanceof Ring) {
|
||||
((Ring) item).anonymize();
|
||||
} else if (item instanceof Potion) {
|
||||
((Potion) item).anonymize();
|
||||
} else if (item instanceof Scroll) {
|
||||
((Scroll) item).anonymize();
|
||||
boolean seen = Catalog.isSeen(itemClass);;
|
||||
Image sprite = null;
|
||||
Image secondIcon = null;
|
||||
String title = "";
|
||||
String desc = "";
|
||||
|
||||
if (Item.class.isAssignableFrom(itemClass)) {
|
||||
|
||||
Item item = (Item) Reflection.newInstance(itemClass);
|
||||
|
||||
if (seen) {
|
||||
if (item instanceof Ring) {
|
||||
((Ring) item).anonymize();
|
||||
} else if (item instanceof Potion) {
|
||||
((Potion) item).anonymize();
|
||||
} else if (item instanceof Scroll) {
|
||||
((Scroll) item).anonymize();
|
||||
}
|
||||
}
|
||||
|
||||
sprite = new ItemSprite(item.image, seen ? item.glowing() : null);
|
||||
if (!seen) {
|
||||
sprite.lightness(0);
|
||||
title = "???";
|
||||
desc = Messages.get(CatalogTab.class, "not_seen_item");
|
||||
} else {
|
||||
title = Messages.titleCase(item.trueName());
|
||||
desc = item instanceof ClassArmor ? item.desc() : item.info();
|
||||
|
||||
if (item.icon != -1) {
|
||||
secondIcon = new Image(Assets.Sprites.ITEM_ICONS);
|
||||
secondIcon.frame(ItemSpriteSheet.Icons.film.get(item.icon));
|
||||
}
|
||||
}
|
||||
|
||||
} else if (Weapon.Enchantment.class.isAssignableFrom(itemClass)){
|
||||
|
||||
Weapon.Enchantment ench = (Weapon.Enchantment) Reflection.newInstance(itemClass);
|
||||
|
||||
if (seen){
|
||||
sprite = new ItemSprite(ItemSpriteSheet.WORN_SHORTSWORD, ench.glowing());
|
||||
title = Messages.titleCase(ench.name());
|
||||
desc = ench.desc();
|
||||
} else {
|
||||
sprite = new ItemSprite(ItemSpriteSheet.WORN_SHORTSWORD);
|
||||
sprite.lightness(0f);
|
||||
title = "???";
|
||||
desc = Messages.get(CatalogTab.class, "not_seen_enchantment");
|
||||
}
|
||||
|
||||
} else if (Armor.Glyph.class.isAssignableFrom(itemClass)){
|
||||
|
||||
Armor.Glyph glyph = (Armor.Glyph) Reflection.newInstance(itemClass);
|
||||
|
||||
if (seen){
|
||||
sprite = new ItemSprite(ItemSpriteSheet.ARMOR_CLOTH, glyph.glowing());
|
||||
title = Messages.titleCase(glyph.name());
|
||||
desc = glyph.desc();
|
||||
} else {
|
||||
sprite = new ItemSprite(ItemSpriteSheet.ARMOR_CLOTH);
|
||||
sprite.lightness(0f);
|
||||
title = "???";
|
||||
desc = Messages.get(CatalogTab.class, "not_seen_glyph");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Image sprite = new ItemSprite(item);
|
||||
if (!itemSeen) sprite.lightness(0);
|
||||
ScrollingGridPane.GridItem gridItem = new ScrollingGridPane.GridItem(
|
||||
sprite) {
|
||||
String finalTitle = title;
|
||||
String finalDesc = desc;
|
||||
ScrollingGridPane.GridItem gridItem = new ScrollingGridPane.GridItem(sprite) {
|
||||
@Override
|
||||
public boolean onClick(float x, float y) {
|
||||
if (inside(x, y)) {
|
||||
Image sprite = new Image(icon);
|
||||
if (itemSeen) {
|
||||
GameScene.show(new WndTitledMessage(sprite,
|
||||
Messages.titleCase(item.trueName()),
|
||||
item instanceof ClassArmor ? item.desc() : item.info()));
|
||||
//TODO need to dupe!
|
||||
Image sprite;
|
||||
if (icon instanceof ItemSprite){
|
||||
sprite = new ItemSprite();
|
||||
sprite.copy(icon);
|
||||
} else {
|
||||
sprite.lightness(0);
|
||||
GameScene.show(new WndTitledMessage(sprite,
|
||||
"???",
|
||||
Messages.get(CatalogTab.class, "not_seen")));
|
||||
sprite = new Image(icon);
|
||||
}
|
||||
GameScene.show(new WndTitledMessage(sprite, finalTitle, finalDesc));
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
if (itemSeen) {
|
||||
if (item.icon != -1) {
|
||||
Image icon = new Image(Assets.Sprites.ITEM_ICONS);
|
||||
icon.frame(ItemSpriteSheet.Icons.film.get(item.icon));
|
||||
gridItem.addSecondIcon(icon);
|
||||
}
|
||||
} else {
|
||||
if (secondIcon != null){
|
||||
gridItem.addSecondIcon(secondIcon);
|
||||
}
|
||||
if (!seen) {
|
||||
gridItem.hardLightBG(2f, 1f, 2f);
|
||||
}
|
||||
grid.addItem(gridItem);
|
||||
|
||||
Reference in New Issue
Block a user