v0.6.1: more refactoring and improvements to journal and catalogs
This commit is contained in:
parent
be396f4e2d
commit
e486e9896d
|
@ -33,7 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.bags.PotionBandolier;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.ScrollHolder;
|
import com.shatteredpixel.shatteredpixeldungeon.items.bags.ScrollHolder;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.SeedPouch;
|
import com.shatteredpixel.shatteredpixeldungeon.items.bags.SeedPouch;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.WandHolster;
|
import com.shatteredpixel.shatteredpixeldungeon.items.bags.WandHolster;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalogs;
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
|
@ -48,7 +48,6 @@ import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class Badges {
|
public class Badges {
|
||||||
|
@ -466,9 +465,9 @@ public class Badges {
|
||||||
|
|
||||||
public static void validateItemsIdentified() {
|
public static void validateItemsIdentified() {
|
||||||
|
|
||||||
for (LinkedHashMap<Class<? extends Item>, Boolean> catalog : Catalogs.allCatalogs){
|
for (Catalog cat : Catalog.values()){
|
||||||
if (Catalogs.allSeen(catalog.keySet())){
|
if (Catalog.allSeen(cat.items())){
|
||||||
Badge b = Catalogs.catalogBadges.get(catalog);
|
Badge b = Catalog.catalogBadges.get(cat);
|
||||||
if (!global.contains(b)){
|
if (!global.contains(b)){
|
||||||
displayBadge(b);
|
displayBadge(b);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
|
import com.shatteredpixel.shatteredpixeldungeon.items.bags.Bag;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Boomerang;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Boomerang;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon;
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.MissileWeapon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalogs;
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
import com.shatteredpixel.shatteredpixeldungeon.mechanics.Ballistica;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.CellSelector;
|
||||||
|
@ -339,7 +339,7 @@ public class Item implements Bundlable {
|
||||||
cursedKnown = true;
|
cursedKnown = true;
|
||||||
|
|
||||||
if (Dungeon.hero.isAlive()) {
|
if (Dungeon.hero.isAlive()) {
|
||||||
Catalogs.setSeen(getClass());
|
Catalog.setSeen(getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|
|
@ -33,7 +33,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Splash;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Splash;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.ItemStatusHandler;
|
import com.shatteredpixel.shatteredpixeldungeon.items.ItemStatusHandler;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalogs;
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
|
@ -254,7 +254,7 @@ public class Potion extends Item {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Dungeon.hero.isAlive()) {
|
if (Dungeon.hero.isAlive()) {
|
||||||
Catalogs.setSeen(getClass());
|
Catalog.setSeen(getClass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.ItemStatusHandler;
|
import com.shatteredpixel.shatteredpixeldungeon.items.ItemStatusHandler;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.KindofMisc;
|
import com.shatteredpixel.shatteredpixeldungeon.items.KindofMisc;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalogs;
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
import com.shatteredpixel.shatteredpixeldungeon.utils.GLog;
|
||||||
|
@ -144,7 +144,7 @@ public class Ring extends KindofMisc {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Dungeon.hero.isAlive()) {
|
if (Dungeon.hero.isAlive()) {
|
||||||
Catalogs.setSeen(getClass());
|
Catalog.setSeen(getClass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.ItemStatusHandler;
|
import com.shatteredpixel.shatteredpixeldungeon.items.ItemStatusHandler;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.UnstableSpellbook;
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.UnstableSpellbook;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalogs;
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.HeroSprite;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet;
|
||||||
|
@ -171,7 +171,7 @@ public abstract class Scroll extends Item {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Dungeon.hero.isAlive()) {
|
if (Dungeon.hero.isAlive()) {
|
||||||
Catalogs.setSeen(getClass());
|
Catalog.setSeen(getClass());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,345 @@
|
||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2017 Evan Debenham
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.shatteredpixel.shatteredpixeldungeon.journal;
|
||||||
|
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClothArmor;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.HuntressArmor;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.LeatherArmor;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.MageArmor;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.MailArmor;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.PlateArmor;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.RogueArmor;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ScaleArmor;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.armor.WarriorArmor;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.AlchemistsToolkit;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CapeOfThorns;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CloakOfShadows;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.EtherealChains;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.HornOfPlenty;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.MasterThievesArmband;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.SandalsOfNature;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TalismanOfForesight;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TimekeepersHourglass;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.UnstableSpellbook;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfFrost;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfInvisibility;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLevitation;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLiquidFlame;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfMight;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfMindVision;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfParalyticGas;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfPurity;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfStrength;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfToxicGas;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfAccuracy;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfElements;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEvasion;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfForce;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfFuror;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfHaste;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfMight;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfSharpshooting;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfTenacity;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfWealth;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfIdentify;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfLullaby;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicalInfusion;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMirrorImage;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfPsionicBlast;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRage;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRemoveCurse;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTerror;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorruption;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfDisintegration;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFireblast;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFrost;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfLightning;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfMagicMissile;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfPrismaticLight;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTransfusion;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfVenom;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.AssassinsBlade;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BattleAxe;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dagger;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dirk;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Flail;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Glaive;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Greataxe;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Greatshield;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Greatsword;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.HandAxe;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Knuckles;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Longsword;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Mace;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Quarterstaff;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RoundShield;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RunicBlade;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sai;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Scimitar;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Shortsword;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Spear;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sword;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Whip;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WornShortsword;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Boomerang;
|
||||||
|
import com.watabou.utils.Bundle;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public enum Catalog {
|
||||||
|
|
||||||
|
WEAPONS,
|
||||||
|
ARMOR,
|
||||||
|
WANDS,
|
||||||
|
RINGS,
|
||||||
|
ARTIFACTS,
|
||||||
|
POTIONS,
|
||||||
|
SCROLLS;
|
||||||
|
|
||||||
|
private LinkedHashMap<Class<? extends Item>, Boolean> seen = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
public Collection<Class<? extends Item>> items(){
|
||||||
|
return seen.keySet();
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
WEAPONS.seen.put( WornShortsword.class, false);
|
||||||
|
WEAPONS.seen.put( Knuckles.class, false);
|
||||||
|
WEAPONS.seen.put( Dagger.class, false);
|
||||||
|
WEAPONS.seen.put( MagesStaff.class, false);
|
||||||
|
WEAPONS.seen.put( Boomerang.class, false);
|
||||||
|
WEAPONS.seen.put( Shortsword.class, false);
|
||||||
|
WEAPONS.seen.put( HandAxe.class, false);
|
||||||
|
WEAPONS.seen.put( Spear.class, false);
|
||||||
|
WEAPONS.seen.put( Quarterstaff.class, false);
|
||||||
|
WEAPONS.seen.put( Dirk.class, false);
|
||||||
|
WEAPONS.seen.put( Sword.class, false);
|
||||||
|
WEAPONS.seen.put( Mace.class, false);
|
||||||
|
WEAPONS.seen.put( Scimitar.class, false);
|
||||||
|
WEAPONS.seen.put( RoundShield.class, false);
|
||||||
|
WEAPONS.seen.put( Sai.class, false);
|
||||||
|
WEAPONS.seen.put( Whip.class, false);
|
||||||
|
WEAPONS.seen.put( Longsword.class, false);
|
||||||
|
WEAPONS.seen.put( BattleAxe.class, false);
|
||||||
|
WEAPONS.seen.put( Flail.class, false);
|
||||||
|
WEAPONS.seen.put( RunicBlade.class, false);
|
||||||
|
WEAPONS.seen.put( AssassinsBlade.class, false);
|
||||||
|
WEAPONS.seen.put( Greatsword.class, false);
|
||||||
|
WEAPONS.seen.put( WarHammer.class, false);
|
||||||
|
WEAPONS.seen.put( Glaive.class, false);
|
||||||
|
WEAPONS.seen.put( Greataxe.class, false);
|
||||||
|
WEAPONS.seen.put( Greatshield.class, false);
|
||||||
|
|
||||||
|
ARMOR.seen.put( ClothArmor.class, false);
|
||||||
|
ARMOR.seen.put( LeatherArmor.class, false);
|
||||||
|
ARMOR.seen.put( MailArmor.class, false);
|
||||||
|
ARMOR.seen.put( ScaleArmor.class, false);
|
||||||
|
ARMOR.seen.put( PlateArmor.class, false);
|
||||||
|
ARMOR.seen.put( WarriorArmor.class, false);
|
||||||
|
ARMOR.seen.put( MageArmor.class, false);
|
||||||
|
ARMOR.seen.put( RogueArmor.class, false);
|
||||||
|
ARMOR.seen.put( HuntressArmor.class, false);
|
||||||
|
|
||||||
|
WANDS.seen.put( WandOfMagicMissile.class, false);
|
||||||
|
WANDS.seen.put( WandOfLightning.class, false);
|
||||||
|
WANDS.seen.put( WandOfDisintegration.class, false);
|
||||||
|
WANDS.seen.put( WandOfFireblast.class, false);
|
||||||
|
WANDS.seen.put( WandOfVenom.class, false);
|
||||||
|
WANDS.seen.put( WandOfBlastWave.class, false);
|
||||||
|
//WANDS.seen.put( WandOfLivingEarth.class, false);
|
||||||
|
WANDS.seen.put( WandOfFrost.class, false);
|
||||||
|
WANDS.seen.put( WandOfPrismaticLight.class, false);
|
||||||
|
//WANDS.seen.put( WandOfWarding.class, false);
|
||||||
|
WANDS.seen.put( WandOfTransfusion.class, false);
|
||||||
|
WANDS.seen.put( WandOfCorruption.class, false);
|
||||||
|
WANDS.seen.put( WandOfRegrowth.class, false);
|
||||||
|
|
||||||
|
RINGS.seen.put( RingOfAccuracy.class, false);
|
||||||
|
RINGS.seen.put( RingOfElements.class, false);
|
||||||
|
RINGS.seen.put( RingOfEvasion.class, false);
|
||||||
|
RINGS.seen.put( RingOfForce.class, false);
|
||||||
|
RINGS.seen.put( RingOfFuror.class, false);
|
||||||
|
RINGS.seen.put( RingOfHaste.class, false);
|
||||||
|
//RINGS.seen.put( RingOfMagic.class, false);
|
||||||
|
RINGS.seen.put( RingOfMight.class, false);
|
||||||
|
RINGS.seen.put( RingOfSharpshooting.class, false);
|
||||||
|
RINGS.seen.put( RingOfTenacity.class, false);
|
||||||
|
RINGS.seen.put( RingOfWealth.class, false);
|
||||||
|
|
||||||
|
ARTIFACTS.seen.put( AlchemistsToolkit.class, false);
|
||||||
|
ARTIFACTS.seen.put( CapeOfThorns.class, false);
|
||||||
|
ARTIFACTS.seen.put( ChaliceOfBlood.class, false);
|
||||||
|
ARTIFACTS.seen.put( CloakOfShadows.class, false);
|
||||||
|
ARTIFACTS.seen.put( DriedRose.class, false);
|
||||||
|
ARTIFACTS.seen.put( EtherealChains.class, false);
|
||||||
|
ARTIFACTS.seen.put( HornOfPlenty.class, false);
|
||||||
|
ARTIFACTS.seen.put( LloydsBeacon.class, false);
|
||||||
|
ARTIFACTS.seen.put( MasterThievesArmband.class, false);
|
||||||
|
ARTIFACTS.seen.put( SandalsOfNature.class, false);
|
||||||
|
ARTIFACTS.seen.put( TalismanOfForesight.class, false);
|
||||||
|
ARTIFACTS.seen.put( TimekeepersHourglass.class, false);
|
||||||
|
ARTIFACTS.seen.put(UnstableSpellbook.class, false);
|
||||||
|
|
||||||
|
POTIONS.seen.put( PotionOfHealing.class, false);
|
||||||
|
POTIONS.seen.put( PotionOfStrength.class, false);
|
||||||
|
POTIONS.seen.put( PotionOfLiquidFlame.class, false);
|
||||||
|
POTIONS.seen.put( PotionOfFrost.class, false);
|
||||||
|
POTIONS.seen.put( PotionOfToxicGas.class, false);
|
||||||
|
POTIONS.seen.put( PotionOfParalyticGas.class, false);
|
||||||
|
POTIONS.seen.put( PotionOfPurity.class, false);
|
||||||
|
POTIONS.seen.put( PotionOfLevitation.class, false);
|
||||||
|
POTIONS.seen.put( PotionOfMindVision.class, false);
|
||||||
|
POTIONS.seen.put( PotionOfInvisibility.class, false);
|
||||||
|
POTIONS.seen.put( PotionOfExperience.class, false);
|
||||||
|
POTIONS.seen.put( PotionOfMight.class, false);
|
||||||
|
|
||||||
|
SCROLLS.seen.put( ScrollOfIdentify.class, false);
|
||||||
|
SCROLLS.seen.put( ScrollOfUpgrade.class, false);
|
||||||
|
SCROLLS.seen.put( ScrollOfRemoveCurse.class, false);
|
||||||
|
SCROLLS.seen.put( ScrollOfMagicMapping.class, false);
|
||||||
|
SCROLLS.seen.put( ScrollOfTeleportation.class, false);
|
||||||
|
SCROLLS.seen.put( ScrollOfRecharging.class, false);
|
||||||
|
SCROLLS.seen.put( ScrollOfMirrorImage.class, false);
|
||||||
|
SCROLLS.seen.put( ScrollOfTerror.class, false);
|
||||||
|
SCROLLS.seen.put( ScrollOfLullaby.class, false);
|
||||||
|
SCROLLS.seen.put( ScrollOfRage.class, false);
|
||||||
|
SCROLLS.seen.put( ScrollOfPsionicBlast.class, false);
|
||||||
|
SCROLLS.seen.put( ScrollOfMagicalInfusion.class, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LinkedHashMap<Catalog, Badges.Badge> catalogBadges = new LinkedHashMap<>();
|
||||||
|
static {
|
||||||
|
catalogBadges.put(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);
|
||||||
|
catalogBadges.put(ARTIFACTS, Badges.Badge.ALL_ARTIFACTS_IDENTIFIED);
|
||||||
|
catalogBadges.put(POTIONS, Badges.Badge.ALL_POTIONS_IDENTIFIED);
|
||||||
|
catalogBadges.put(SCROLLS, Badges.Badge.ALL_SCROLLS_IDENTIFIED);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean allSeen( Collection<Class<?extends Item>> items){
|
||||||
|
for (Class<?extends Item> item : items){
|
||||||
|
if (!isSeen(item)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isSeen(Class<? extends Item> itemClass){
|
||||||
|
for (Catalog cat : values()) {
|
||||||
|
if (cat.seen.containsKey(itemClass)) {
|
||||||
|
return cat.seen.get(itemClass);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setSeen(Class<? extends Item> itemClass){
|
||||||
|
for (Catalog cat : values()) {
|
||||||
|
if (cat.seen.containsKey(itemClass)) {
|
||||||
|
cat.seen.put(itemClass, true);
|
||||||
|
Journal.saveNeeded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Badges.validateItemsIdentified();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String CATALOGS = "catalogs";
|
||||||
|
|
||||||
|
public static void store( Bundle bundle ){
|
||||||
|
|
||||||
|
Badges.loadGlobal();
|
||||||
|
|
||||||
|
ArrayList<String> 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)) {
|
||||||
|
for (Catalog cat : values()) {
|
||||||
|
if (!Badges.isUnlocked(catalogBadges.get(cat))) {
|
||||||
|
for (Class<? extends Item> item : cat.items()) {
|
||||||
|
if (cat.seen.get(item)) seen.add(item.getSimpleName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bundle.put( CATALOGS, seen.toArray(new String[0]) );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void restore( Bundle bundle ){
|
||||||
|
|
||||||
|
Badges.loadGlobal();
|
||||||
|
|
||||||
|
//logic for if we have all badges
|
||||||
|
if (Badges.isUnlocked(Badges.Badge.ALL_ITEMS_IDENTIFIED)){
|
||||||
|
for ( Catalog cat : values()){
|
||||||
|
for (Class<? extends Item> item : cat.items()){
|
||||||
|
cat.seen.put(item, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//catalog-specific badge logic
|
||||||
|
for (Catalog cat : values()){
|
||||||
|
if (Badges.isUnlocked(catalogBadges.get(cat))){
|
||||||
|
for (Class<? extends Item> item : cat.items()){
|
||||||
|
cat.seen.put(item, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//general save/load
|
||||||
|
List<String> seen = Arrays.asList(bundle.getStringArray(CATALOGS));
|
||||||
|
|
||||||
|
for ( Catalog cat : values()){
|
||||||
|
for (Class<? extends Item> item : cat.items()){
|
||||||
|
if (seen.contains( item.getSimpleName() )) {
|
||||||
|
cat.seen.put(item, true );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,424 +0,0 @@
|
||||||
/*
|
|
||||||
* Pixel Dungeon
|
|
||||||
* Copyright (C) 2012-2015 Oleg Dolya
|
|
||||||
*
|
|
||||||
* Shattered Pixel Dungeon
|
|
||||||
* Copyright (C) 2014-2017 Evan Debenham
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
|
||||||
*/
|
|
||||||
|
|
||||||
package com.shatteredpixel.shatteredpixeldungeon.journal;
|
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Badges;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ClothArmor;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.HuntressArmor;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.LeatherArmor;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.MageArmor;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.MailArmor;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.PlateArmor;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.RogueArmor;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.ScaleArmor;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.armor.WarriorArmor;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.AlchemistsToolkit;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CapeOfThorns;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.ChaliceOfBlood;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.CloakOfShadows;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.DriedRose;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.EtherealChains;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.HornOfPlenty;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.LloydsBeacon;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.MasterThievesArmband;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.SandalsOfNature;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TalismanOfForesight;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.TimekeepersHourglass;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.artifacts.UnstableSpellbook;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfFrost;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfInvisibility;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLevitation;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfLiquidFlame;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfMight;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfMindVision;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfParalyticGas;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfPurity;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfStrength;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfToxicGas;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfAccuracy;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfElements;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfEvasion;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfForce;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfFuror;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfHaste;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfMight;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfSharpshooting;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfTenacity;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.RingOfWealth;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfIdentify;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfLullaby;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicMapping;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMagicalInfusion;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfMirrorImage;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfPsionicBlast;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRage;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRecharging;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfRemoveCurse;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTerror;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfUpgrade;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfBlastWave;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfCorruption;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfDisintegration;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFireblast;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfFrost;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfLightning;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfMagicMissile;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfPrismaticLight;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfRegrowth;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfTransfusion;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.wands.WandOfVenom;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.AssassinsBlade;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.BattleAxe;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dagger;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Dirk;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Flail;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Glaive;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Greataxe;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Greatshield;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Greatsword;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.HandAxe;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Knuckles;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Longsword;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Mace;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.MagesStaff;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Quarterstaff;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RoundShield;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.RunicBlade;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sai;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Scimitar;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Shortsword;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Spear;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Sword;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WarHammer;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.Whip;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.melee.WornShortsword;
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.weapon.missiles.Boomerang;
|
|
||||||
import com.watabou.noosa.Game;
|
|
||||||
import com.watabou.utils.Bundle;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class Catalogs {
|
|
||||||
|
|
||||||
private static final LinkedHashMap<Class<? extends Item>, Boolean> weapons = new LinkedHashMap<>();
|
|
||||||
static {
|
|
||||||
weapons.put( WornShortsword.class, false);
|
|
||||||
weapons.put( Knuckles.class, false);
|
|
||||||
weapons.put( Dagger.class, false);
|
|
||||||
weapons.put( MagesStaff.class, false);
|
|
||||||
weapons.put( Boomerang.class, false);
|
|
||||||
weapons.put( Shortsword.class, false);
|
|
||||||
weapons.put( HandAxe.class, false);
|
|
||||||
weapons.put( Spear.class, false);
|
|
||||||
weapons.put( Quarterstaff.class, false);
|
|
||||||
weapons.put( Dirk.class, false);
|
|
||||||
weapons.put( Sword.class, false);
|
|
||||||
weapons.put( Mace.class, false);
|
|
||||||
weapons.put( Scimitar.class, false);
|
|
||||||
weapons.put( RoundShield.class, false);
|
|
||||||
weapons.put( Sai.class, false);
|
|
||||||
weapons.put( Whip.class, false);
|
|
||||||
weapons.put( Longsword.class, false);
|
|
||||||
weapons.put( BattleAxe.class, false);
|
|
||||||
weapons.put( Flail.class, false);
|
|
||||||
weapons.put( RunicBlade.class, false);
|
|
||||||
weapons.put( AssassinsBlade.class, false);
|
|
||||||
weapons.put( Greatsword.class, false);
|
|
||||||
weapons.put( WarHammer.class, false);
|
|
||||||
weapons.put( Glaive.class, false);
|
|
||||||
weapons.put( Greataxe.class, false);
|
|
||||||
weapons.put( Greatshield.class, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Collection<Class<? extends Item>> weapons(){
|
|
||||||
return weapons.keySet();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final LinkedHashMap<Class<? extends Item>, Boolean> armor = new LinkedHashMap<>();
|
|
||||||
static {
|
|
||||||
armor.put( ClothArmor.class, false);
|
|
||||||
armor.put( LeatherArmor.class, false);
|
|
||||||
armor.put( MailArmor.class, false);
|
|
||||||
armor.put( ScaleArmor.class, false);
|
|
||||||
armor.put( PlateArmor.class, false);
|
|
||||||
armor.put( WarriorArmor.class, false);
|
|
||||||
armor.put( MageArmor.class, false);
|
|
||||||
armor.put( RogueArmor.class, false);
|
|
||||||
armor.put( HuntressArmor.class, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Collection<Class<? extends Item>> armor(){
|
|
||||||
return armor.keySet();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final LinkedHashMap<Class<? extends Item>, Boolean> wands = new LinkedHashMap<>();
|
|
||||||
static {
|
|
||||||
wands.put( WandOfMagicMissile.class, false);
|
|
||||||
wands.put( WandOfLightning.class, false);
|
|
||||||
wands.put( WandOfDisintegration.class, false);
|
|
||||||
wands.put( WandOfFireblast.class, false);
|
|
||||||
wands.put( WandOfVenom.class, false);
|
|
||||||
wands.put( WandOfBlastWave.class, false);
|
|
||||||
//wands.put( WandOfLivingEarth.class, false);
|
|
||||||
wands.put( WandOfFrost.class, false);
|
|
||||||
wands.put( WandOfPrismaticLight.class, false);
|
|
||||||
//wands.put( WandOfWarding.class, false);
|
|
||||||
wands.put( WandOfTransfusion.class, false);
|
|
||||||
wands.put( WandOfCorruption.class, false);
|
|
||||||
wands.put( WandOfRegrowth.class, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Collection<Class<? extends Item>> wands(){
|
|
||||||
return wands.keySet();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final LinkedHashMap<Class<? extends Item>, Boolean> rings = new LinkedHashMap<>();
|
|
||||||
static {
|
|
||||||
rings.put( RingOfAccuracy.class, false);
|
|
||||||
rings.put( RingOfElements.class, false);
|
|
||||||
rings.put( RingOfEvasion.class, false);
|
|
||||||
rings.put( RingOfForce.class, false);
|
|
||||||
rings.put( RingOfFuror.class, false);
|
|
||||||
rings.put( RingOfHaste.class, false);
|
|
||||||
//rings.put( RingOfMagic.class, false);
|
|
||||||
rings.put( RingOfMight.class, false);
|
|
||||||
rings.put( RingOfSharpshooting.class, false);
|
|
||||||
rings.put( RingOfTenacity.class, false);
|
|
||||||
rings.put( RingOfWealth.class, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Collection<Class<? extends Item>> rings(){
|
|
||||||
return rings.keySet();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final LinkedHashMap<Class<? extends Item>, Boolean> artifacts = new LinkedHashMap<>();
|
|
||||||
static{
|
|
||||||
artifacts.put( AlchemistsToolkit.class, false);
|
|
||||||
artifacts.put( CapeOfThorns.class, false);
|
|
||||||
artifacts.put( ChaliceOfBlood.class, false);
|
|
||||||
artifacts.put( CloakOfShadows.class, false);
|
|
||||||
artifacts.put( DriedRose.class, false);
|
|
||||||
artifacts.put( EtherealChains.class, false);
|
|
||||||
artifacts.put( HornOfPlenty.class, false);
|
|
||||||
artifacts.put( LloydsBeacon.class, false);
|
|
||||||
artifacts.put( MasterThievesArmband.class, false);
|
|
||||||
artifacts.put( SandalsOfNature.class, false);
|
|
||||||
artifacts.put( TalismanOfForesight.class, false);
|
|
||||||
artifacts.put( TimekeepersHourglass.class, false);
|
|
||||||
artifacts.put(UnstableSpellbook.class, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Collection<Class<? extends Item>> artifacts(){
|
|
||||||
return artifacts.keySet();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final LinkedHashMap<Class<? extends Item>, Boolean> potions = new LinkedHashMap<>();
|
|
||||||
static {
|
|
||||||
potions.put( PotionOfHealing.class, false);
|
|
||||||
potions.put( PotionOfStrength.class, false);
|
|
||||||
potions.put( PotionOfLiquidFlame.class, false);
|
|
||||||
potions.put( PotionOfFrost.class, false);
|
|
||||||
potions.put( PotionOfToxicGas.class, false);
|
|
||||||
potions.put( PotionOfParalyticGas.class, false);
|
|
||||||
potions.put( PotionOfPurity.class, false);
|
|
||||||
potions.put( PotionOfLevitation.class, false);
|
|
||||||
potions.put( PotionOfMindVision.class, false);
|
|
||||||
potions.put( PotionOfInvisibility.class, false);
|
|
||||||
potions.put( PotionOfExperience.class, false);
|
|
||||||
potions.put( PotionOfMight.class, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Collection<Class<? extends Item>> potions(){
|
|
||||||
return potions.keySet();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final LinkedHashMap<Class<? extends Item>, Boolean> scrolls = new LinkedHashMap<>();
|
|
||||||
static {
|
|
||||||
scrolls.put( ScrollOfIdentify.class, false);
|
|
||||||
scrolls.put( ScrollOfUpgrade.class, false);
|
|
||||||
scrolls.put( ScrollOfRemoveCurse.class, false);
|
|
||||||
scrolls.put( ScrollOfMagicMapping.class, false);
|
|
||||||
scrolls.put( ScrollOfTeleportation.class, false);
|
|
||||||
scrolls.put( ScrollOfRecharging.class, false);
|
|
||||||
scrolls.put( ScrollOfMirrorImage.class, false);
|
|
||||||
scrolls.put( ScrollOfTerror.class, false);
|
|
||||||
scrolls.put( ScrollOfLullaby.class, false);
|
|
||||||
scrolls.put( ScrollOfRage.class, false);
|
|
||||||
scrolls.put( ScrollOfPsionicBlast.class, false);
|
|
||||||
scrolls.put( ScrollOfMagicalInfusion.class, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Collection<Class<? extends Item>> scrolls(){
|
|
||||||
return scrolls.keySet();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static final ArrayList<LinkedHashMap<Class<? extends Item>, Boolean>> allCatalogs = new ArrayList<>();
|
|
||||||
static{
|
|
||||||
allCatalogs.add(weapons);
|
|
||||||
allCatalogs.add(armor);
|
|
||||||
allCatalogs.add(wands);
|
|
||||||
allCatalogs.add(rings);
|
|
||||||
allCatalogs.add(artifacts);
|
|
||||||
allCatalogs.add(potions);
|
|
||||||
allCatalogs.add(scrolls);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static LinkedHashMap<LinkedHashMap<Class<? extends Item>, Boolean>, Badges.Badge> catalogBadges = new LinkedHashMap<>();
|
|
||||||
static {
|
|
||||||
catalogBadges.put(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);
|
|
||||||
catalogBadges.put(artifacts, Badges.Badge.ALL_ARTIFACTS_IDENTIFIED);
|
|
||||||
catalogBadges.put(potions, Badges.Badge.ALL_POTIONS_IDENTIFIED);
|
|
||||||
catalogBadges.put(scrolls, Badges.Badge.ALL_SCROLLS_IDENTIFIED);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean allSeen( Collection<Class<?extends Item>> items){
|
|
||||||
for (Class<?extends Item> item : items){
|
|
||||||
if (!isSeen(item)){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isSeen(Class<? extends Item> itemClass){
|
|
||||||
for (LinkedHashMap<Class<? extends Item>, Boolean> catalog : allCatalogs) {
|
|
||||||
if (catalog.containsKey(itemClass)) {
|
|
||||||
return catalog.get(itemClass);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void setSeen(Class<? extends Item> itemClass){
|
|
||||||
for (LinkedHashMap<Class<? extends Item>, Boolean> catalog : allCatalogs) {
|
|
||||||
if (catalog.containsKey(itemClass)) {
|
|
||||||
catalog.put(itemClass, true);
|
|
||||||
saveNeeded = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Badges.validateItemsIdentified();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean saveNeeded = false;
|
|
||||||
|
|
||||||
public static void save(){
|
|
||||||
if (!saveNeeded){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Badges.loadGlobal();
|
|
||||||
|
|
||||||
Bundle bundle = new Bundle();
|
|
||||||
|
|
||||||
ArrayList<String> seen = new ArrayList<>();
|
|
||||||
|
|
||||||
//if we have identified all items of a set, we use the badge to keep track instead.
|
|
||||||
if (!Badges.global.contains(Badges.Badge.ALL_ITEMS_IDENTIFIED)) {
|
|
||||||
for (LinkedHashMap<Class<? extends Item>, Boolean> cat : allCatalogs) {
|
|
||||||
if (!Badges.global.contains(catalogBadges.get(cat))) {
|
|
||||||
for (Class<? extends Item> item : cat.keySet()) {
|
|
||||||
if (cat.get(item)) seen.add(item.getSimpleName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bundle.put( "catalogs", seen.toArray(new String[0]));
|
|
||||||
|
|
||||||
try {
|
|
||||||
OutputStream output = Game.instance.openFileOutput( "journal.dat", Game.MODE_PRIVATE );
|
|
||||||
Bundle.write( bundle, output );
|
|
||||||
output.close();
|
|
||||||
saveNeeded = false;
|
|
||||||
} catch (IOException e) {
|
|
||||||
ShatteredPixelDungeon.reportException(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean loaded = false;
|
|
||||||
|
|
||||||
public static void load( ){
|
|
||||||
if (loaded){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Badges.loadGlobal();
|
|
||||||
|
|
||||||
//logic for if we have all badges
|
|
||||||
if (Badges.global.contains(Badges.Badge.ALL_ITEMS_IDENTIFIED)){
|
|
||||||
for ( LinkedHashMap<Class<? extends Item>, Boolean> cat : allCatalogs){
|
|
||||||
for (Class<? extends Item> item : cat.keySet()){
|
|
||||||
cat.put(item, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
loaded = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//catalog-specific badge logic
|
|
||||||
for (LinkedHashMap<Class<? extends Item>, Boolean> cat : allCatalogs){
|
|
||||||
if (Badges.global.contains(catalogBadges.get(cat))){
|
|
||||||
for (Class<? extends Item> item : cat.keySet()){
|
|
||||||
cat.put(item, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//general save/load
|
|
||||||
try {
|
|
||||||
InputStream input = Game.instance.openFileInput("journal.dat");
|
|
||||||
Bundle bundle = Bundle.read(input);
|
|
||||||
input.close();
|
|
||||||
|
|
||||||
List<String> seen = Arrays.asList(bundle.getStringArray("catalogs"));
|
|
||||||
|
|
||||||
for ( LinkedHashMap<Class<? extends Item>, Boolean> cat : allCatalogs){
|
|
||||||
for (Class<? extends Item> item : cat.keySet()){
|
|
||||||
if (seen.contains( item.getSimpleName() )) {
|
|
||||||
cat.put(item, true );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
loaded = true;
|
|
||||||
} catch (IOException e){
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
/*
|
||||||
|
* Pixel Dungeon
|
||||||
|
* Copyright (C) 2012-2015 Oleg Dolya
|
||||||
|
*
|
||||||
|
* Shattered Pixel Dungeon
|
||||||
|
* Copyright (C) 2014-2017 Evan Debenham
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.shatteredpixel.shatteredpixeldungeon.journal;
|
||||||
|
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
|
||||||
|
import com.watabou.noosa.Game;
|
||||||
|
import com.watabou.utils.Bundle;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
public class Journal {
|
||||||
|
|
||||||
|
private static final String JOURNAL_FILE = "journal.dat";
|
||||||
|
|
||||||
|
private static boolean loaded = false;
|
||||||
|
|
||||||
|
public static void loadGlobal(){
|
||||||
|
if (loaded){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Bundle bundle;
|
||||||
|
try {
|
||||||
|
InputStream input = Game.instance.openFileInput( JOURNAL_FILE );
|
||||||
|
bundle = Bundle.read(input);
|
||||||
|
input.close();
|
||||||
|
|
||||||
|
} catch (IOException e){
|
||||||
|
bundle = new Bundle();
|
||||||
|
}
|
||||||
|
|
||||||
|
Catalog.restore( bundle );
|
||||||
|
|
||||||
|
loaded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//package-private
|
||||||
|
static boolean saveNeeded = false;
|
||||||
|
|
||||||
|
public static void saveGlobal(){
|
||||||
|
if (!saveNeeded){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
|
||||||
|
Catalog.store(bundle);
|
||||||
|
|
||||||
|
try {
|
||||||
|
OutputStream output = Game.instance.openFileOutput( JOURNAL_FILE, Game.MODE_PRIVATE );
|
||||||
|
Bundle.write( bundle, output );
|
||||||
|
output.close();
|
||||||
|
saveNeeded = false;
|
||||||
|
} catch (IOException e) {
|
||||||
|
ShatteredPixelDungeon.reportException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -47,7 +47,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.bags.SeedPouch;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.bags.WandHolster;
|
import com.shatteredpixel.shatteredpixeldungeon.items.bags.WandHolster;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.ScrollOfTeleportation;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalogs;
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Journal;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.RegularLevel;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.features.Chasm;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.traps.Trap;
|
||||||
|
@ -440,7 +440,7 @@ public class GameScene extends PixelScene {
|
||||||
|
|
||||||
scene = null;
|
scene = null;
|
||||||
Badges.saveGlobal();
|
Badges.saveGlobal();
|
||||||
Catalogs.save();
|
Journal.saveGlobal();
|
||||||
|
|
||||||
super.destroy();
|
super.destroy();
|
||||||
}
|
}
|
||||||
|
@ -450,7 +450,7 @@ public class GameScene extends PixelScene {
|
||||||
try {
|
try {
|
||||||
Dungeon.saveAll();
|
Dungeon.saveAll();
|
||||||
Badges.saveGlobal();
|
Badges.saveGlobal();
|
||||||
Catalogs.save();
|
Journal.saveGlobal();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
ShatteredPixelDungeon.reportException(e);
|
ShatteredPixelDungeon.reportException(e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.actors.hero.HeroClass;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.BannerSprites;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.BannerSprites;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.BannerSprites.Type;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.BannerSprites.Type;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Speck;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalogs;
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Journal;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.Archs;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.Archs;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.ui.ExitButton;
|
import com.shatteredpixel.shatteredpixeldungeon.ui.ExitButton;
|
||||||
|
@ -84,7 +84,7 @@ public class StartScene extends PixelScene {
|
||||||
super.create();
|
super.create();
|
||||||
|
|
||||||
Badges.loadGlobal();
|
Badges.loadGlobal();
|
||||||
Catalogs.load();
|
Journal.loadGlobal();
|
||||||
|
|
||||||
uiCamera.visible = false;
|
uiCamera.visible = false;
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
|
import com.shatteredpixel.shatteredpixeldungeon.items.rings.Ring;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
|
import com.shatteredpixel.shatteredpixeldungeon.items.scrolls.Scroll;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalogs;
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Catalog;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.journal.Notes;
|
import com.shatteredpixel.shatteredpixeldungeon.journal.Notes;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
import com.shatteredpixel.shatteredpixeldungeon.messages.Messages;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
|
@ -64,7 +64,7 @@ public class WndJournal extends WndTabbed {
|
||||||
private NotesTab notesTab;
|
private NotesTab notesTab;
|
||||||
private CatalogTab catalogTab;
|
private CatalogTab catalogTab;
|
||||||
|
|
||||||
public static int last_index = 0;
|
public static int last_index = 2;
|
||||||
|
|
||||||
public WndJournal(){
|
public WndJournal(){
|
||||||
|
|
||||||
|
@ -362,25 +362,25 @@ public class WndJournal extends WndTabbed {
|
||||||
ArrayList<Class<? extends Item>> itemClasses;
|
ArrayList<Class<? extends Item>> itemClasses;
|
||||||
final HashMap<Class<? extends Item>, Boolean> known = new HashMap<>();
|
final HashMap<Class<? extends Item>, Boolean> known = new HashMap<>();
|
||||||
if (currentItemIdx == WEAPON_IDX) {
|
if (currentItemIdx == WEAPON_IDX) {
|
||||||
itemClasses = new ArrayList<>(Catalogs.weapons());
|
itemClasses = new ArrayList<>(Catalog.WEAPONS.items());
|
||||||
for (Class<? extends Item> cls : itemClasses) known.put(cls, true);
|
for (Class<? extends Item> cls : itemClasses) known.put(cls, true);
|
||||||
} else if (currentItemIdx == ARMOR_IDX){
|
} else if (currentItemIdx == ARMOR_IDX){
|
||||||
itemClasses = new ArrayList<>(Catalogs.armor());
|
itemClasses = new ArrayList<>(Catalog.ARMOR.items());
|
||||||
for (Class<? extends Item> cls : itemClasses) known.put(cls, true);
|
for (Class<? extends Item> cls : itemClasses) known.put(cls, true);
|
||||||
} else if (currentItemIdx == WAND_IDX){
|
} else if (currentItemIdx == WAND_IDX){
|
||||||
itemClasses = new ArrayList<>(Catalogs.wands());
|
itemClasses = new ArrayList<>(Catalog.WANDS.items());
|
||||||
for (Class<? extends Item> cls : itemClasses) known.put(cls, true);
|
for (Class<? extends Item> cls : itemClasses) known.put(cls, true);
|
||||||
} else if (currentItemIdx == RING_IDX){
|
} else if (currentItemIdx == RING_IDX){
|
||||||
itemClasses = new ArrayList<>(Catalogs.rings());
|
itemClasses = new ArrayList<>(Catalog.RINGS.items());
|
||||||
for (Class<? extends Item> cls : itemClasses) known.put(cls, Ring.getKnown().contains(cls));
|
for (Class<? extends Item> cls : itemClasses) known.put(cls, Ring.getKnown().contains(cls));
|
||||||
} else if (currentItemIdx == ARTIF_IDX){
|
} else if (currentItemIdx == ARTIF_IDX){
|
||||||
itemClasses = new ArrayList<>(Catalogs.artifacts());
|
itemClasses = new ArrayList<>(Catalog.ARTIFACTS.items());
|
||||||
for (Class<? extends Item> cls : itemClasses) known.put(cls, true);
|
for (Class<? extends Item> cls : itemClasses) known.put(cls, true);
|
||||||
} else if (currentItemIdx == POTION_IDX){
|
} else if (currentItemIdx == POTION_IDX){
|
||||||
itemClasses = new ArrayList<>(Catalogs.potions());
|
itemClasses = new ArrayList<>(Catalog.POTIONS.items());
|
||||||
for (Class<? extends Item> cls : itemClasses) known.put(cls, Potion.getKnown().contains(cls));
|
for (Class<? extends Item> cls : itemClasses) known.put(cls, Potion.getKnown().contains(cls));
|
||||||
} else if (currentItemIdx == SCROLL_IDX) {
|
} else if (currentItemIdx == SCROLL_IDX) {
|
||||||
itemClasses = new ArrayList<>(Catalogs.scrolls());
|
itemClasses = new ArrayList<>(Catalog.SCROLLS.items());
|
||||||
for (Class<? extends Item> cls : itemClasses) known.put(cls, Scroll.getKnown().contains(cls));
|
for (Class<? extends Item> cls : itemClasses) known.put(cls, Scroll.getKnown().contains(cls));
|
||||||
} else {
|
} else {
|
||||||
itemClasses = new ArrayList<>();
|
itemClasses = new ArrayList<>();
|
||||||
|
@ -392,10 +392,10 @@ public class WndJournal extends WndTabbed {
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
//specifically known items appear first, then seen items, then unknown items.
|
//specifically known items appear first, then seen items, then unknown items.
|
||||||
if (known.get(a) && Catalogs.isSeen(a)) result -= 2;
|
if (known.get(a) && Catalog.isSeen(a)) result -= 2;
|
||||||
if (known.get(b) && Catalogs.isSeen(b)) result += 2;
|
if (known.get(b) && Catalog.isSeen(b)) result += 2;
|
||||||
if (Catalogs.isSeen(a)) result --;
|
if (Catalog.isSeen(a)) result --;
|
||||||
if (Catalogs.isSeen(b)) result ++;
|
if (Catalog.isSeen(b)) result ++;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -404,7 +404,7 @@ public class WndJournal extends WndTabbed {
|
||||||
float pos = 0;
|
float pos = 0;
|
||||||
for (Class<? extends Item> itemClass : itemClasses) {
|
for (Class<? extends Item> itemClass : itemClasses) {
|
||||||
try{
|
try{
|
||||||
CatalogItem item = new CatalogItem(itemClass.newInstance(), known.get(itemClass), Catalogs.isSeen(itemClass));
|
CatalogItem item = new CatalogItem(itemClass.newInstance(), known.get(itemClass), Catalog.isSeen(itemClass));
|
||||||
item.setRect( 0, pos, width, ITEM_HEIGHT );
|
item.setRect( 0, pos, width, ITEM_HEIGHT );
|
||||||
content.add( item );
|
content.add( item );
|
||||||
items.add( item );
|
items.add( item );
|
||||||
|
|
Loading…
Reference in New Issue
Block a user