From 36f7a7aaa6128f53dbdcf6fdbb33e8768e58f998 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Sat, 15 Jul 2017 04:24:14 -0400 Subject: [PATCH] v0.6.1: implemented item for document pages --- core/src/main/assets/items.png | Bin 14616 -> 14692 bytes .../shatteredpixeldungeon/items/Heap.java | 12 +++ .../items/journal/DocumentPage.java | 73 ++++++++++++++++++ .../items/journal/GuidePage.java | 38 +++++++++ .../journal/Document.java | 8 ++ .../sprites/ItemSpriteSheet.java | 2 + .../messages/items/items.properties | 6 ++ 7 files changed, 139 insertions(+) create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/DocumentPage.java create mode 100644 core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/GuidePage.java diff --git a/core/src/main/assets/items.png b/core/src/main/assets/items.png index cee918fce9e45b67ac3e6ea9771edf0e7674f0cd..ab6ebdb11de6f7be2302182c475de102bd3c1819 100644 GIT binary patch literal 14692 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 literal 14616 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 WS;_h~x9v|WM-QDm_{PrX#{U2`QB-vR diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Heap.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Heap.java index 5c97af703..e52a63855 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Heap.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/Heap.java @@ -46,6 +46,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.food.Blandfruit; import com.shatteredpixel.shatteredpixeldungeon.items.food.ChargrilledMeat; import com.shatteredpixel.shatteredpixeldungeon.items.food.FrozenCarpaccio; import com.shatteredpixel.shatteredpixeldungeon.items.food.MysteryMeat; +import com.shatteredpixel.shatteredpixeldungeon.items.journal.DocumentPage; import com.shatteredpixel.shatteredpixeldungeon.items.potions.Potion; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfExperience; import com.shatteredpixel.shatteredpixeldungeon.items.potions.PotionOfHealing; @@ -533,8 +534,19 @@ public class Heap implements Bundlable { pos = bundle.getInt( POS ); seen = bundle.getBoolean( SEEN ); type = Type.valueOf( bundle.getString( TYPE ) ); + items = new LinkedList( (Collection) ((Collection) bundle.getCollection( ITEMS )) ); items.removeAll(Collections.singleton(null)); + + //remove any document pages that either don't exist anymore or that the player already has + for (Item item : items.toArray(new Item[0])){ + if (item instanceof DocumentPage + && ( !((DocumentPage) item).document().pages().contains(((DocumentPage) item).page()) + || ((DocumentPage) item).document().hasPage(((DocumentPage) item).page()))){ + items.remove(item); + } + } + } @Override diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/DocumentPage.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/DocumentPage.java new file mode 100644 index 000000000..fd666f003 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/DocumentPage.java @@ -0,0 +1,73 @@ +/* + * 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 + */ + +package com.shatteredpixel.shatteredpixeldungeon.items.journal; + +import com.shatteredpixel.shatteredpixeldungeon.Assets; +import com.shatteredpixel.shatteredpixeldungeon.actors.hero.Hero; +import com.shatteredpixel.shatteredpixeldungeon.items.Item; +import com.shatteredpixel.shatteredpixeldungeon.journal.Document; +import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.watabou.noosa.audio.Sample; +import com.watabou.utils.Bundle; + +public abstract class DocumentPage extends Item { + + { + image = ItemSpriteSheet.MASTERY; + } + + public abstract Document document(); + + private String page; + + public void page( String page ){ + this.page = page; + } + + public String page(){ + return page; + } + + @Override + public final boolean doPickUp(Hero hero) { + GameScene.pickUpJournal(this); + document().addPage(page); + Sample.INSTANCE.play( Assets.SND_ITEM ); + hero.spendAndNext( TIME_TO_PICK_UP ); + return true; + } + + private static final String PAGE = "page"; + + @Override + public void storeInBundle(Bundle bundle) { + super.storeInBundle(bundle); + bundle.put( PAGE, page() ); + } + + @Override + public void restoreFromBundle(Bundle bundle) { + super.restoreFromBundle(bundle); + page = bundle.getString( PAGE ); + } +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/GuidePage.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/GuidePage.java new file mode 100644 index 000000000..03934cafa --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/journal/GuidePage.java @@ -0,0 +1,38 @@ +/* + * 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 + */ + +package com.shatteredpixel.shatteredpixeldungeon.items.journal; + +import com.shatteredpixel.shatteredpixeldungeon.journal.Document; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; + +public class GuidePage extends DocumentPage { + + { + image = ItemSpriteSheet.GUIDE_PAGE; + } + + @Override + public Document document() { + return Document.ADVENTURERS_GUIDE; + } + +} diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Document.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Document.java index 53913b58d..173f24e09 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Document.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/journal/Document.java @@ -40,6 +40,14 @@ public enum Document { return pages.keySet(); } + public boolean addPage( String page ) { + if (pages.containsKey(page) && !pages.get(page)){ + pages.put(page, true); + return true; + } + return false; + } + public boolean hasPage( String page ){ return pages.containsKey(page) && pages.get(page); } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java index afa7dcd5f..0b329152e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/sprites/ItemSpriteSheet.java @@ -64,12 +64,14 @@ public class ItemSpriteSheet { public static final int PETAL = UNCOLLECTIBLE+2; public static final int SANDBAG = UNCOLLECTIBLE+3; public static final int DBL_BOMB = UNCOLLECTIBLE+4; + public static final int GUIDE_PAGE = UNCOLLECTIBLE+5; static{ assignItemRect(GOLD, 15, 13); assignItemRect(DEWDROP, 10, 10); assignItemRect(PETAL, 8, 8); assignItemRect(SANDBAG, 10, 10); assignItemRect(DBL_BOMB, 14, 13); + assignItemRect(GUIDE_PAGE, 10, 11); } private static final int CONTAINERS = xy(1, 3); //16 slots diff --git a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties index 57fba1e5b..e55011c00 100644 --- a/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties +++ b/core/src/main/resources/com/shatteredpixel/shatteredpixeldungeon/messages/items/items.properties @@ -390,6 +390,12 @@ items.food.pasty.cane_desc=A huge sugary sweet candy cane! It's big enough to fi +##journal items +items.journal.documentpage.name=torn page +items.journal.documentpage.desc=A lone page, probably torn from a book of some sort. You'll need to pick it up to read it. + + + ###keys items.keys.goldenkey.name=golden key items.keys.goldenkey.desc=The notches on this golden key are tiny and intricate. Maybe it can open some chest lock?