diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/CustomNoteButton.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/CustomNoteButton.java index 33b06ba74..1bbcc4cb1 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/CustomNoteButton.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/CustomNoteButton.java @@ -33,12 +33,11 @@ import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.windows.WndBag; +import com.shatteredpixel.shatteredpixeldungeon.windows.WndJournal; import com.shatteredpixel.shatteredpixeldungeon.windows.WndJournalItem; import com.shatteredpixel.shatteredpixeldungeon.windows.WndOptions; import com.shatteredpixel.shatteredpixeldungeon.windows.WndTextInput; import com.shatteredpixel.shatteredpixeldungeon.windows.WndTitledMessage; -import com.watabou.noosa.Game; -import com.watabou.utils.Callback; import com.watabou.utils.Reflection; import java.util.ArrayList; @@ -66,39 +65,8 @@ public class CustomNoteButton extends IconButton { return; } - GameScene.show(new WndOptions(Icons.SCROLL_COLOR.get(), - Messages.get(CustomNoteButton.class, "title"), - Messages.get(CustomNoteButton.class, "desc"), - Messages.get(CustomNoteButton.class, "new_text"), - Messages.get(CustomNoteButton.class, "new_floor"), - Messages.get(CustomNoteButton.class, "new_inv"), - Messages.get(CustomNoteButton.class, "new_type")){ - @Override - protected void onSelect(int index) { - if (index == 0){ - Notes.CustomRecord custom = new Notes.CustomRecord("", ""); - addNote(custom, - Messages.get(CustomNoteButton.class, "new_text"), - Messages.get(CustomNoteButton.class, "new_text_title")); - } else if (index == 1){ - GameScene.show(new WndDepthSelect()); - } else if (index == 2){ - GameScene.selectItem(itemSelector); - } else { - GameScene.show(new WndItemtypeSelect()); - } - } + GameScene.show(new WndNoteTypeSelect()); - @Override - public void hide() { - //do nothing, prevents window closing when user steps back in note creation process - } - - @Override - public void onBackPressed() { - super.hide(); //actually hide in this case - } - }); } @Override @@ -106,6 +74,49 @@ public class CustomNoteButton extends IconButton { return Messages.get(this, "title"); } + private static WndNoteTypeSelect NOTE_SELECT_INSTANCE; + + private class WndNoteTypeSelect extends WndOptions { + + public WndNoteTypeSelect(){ + super(Icons.SCROLL_COLOR.get(), + Messages.get(CustomNoteButton.class, "title"), + Messages.get(CustomNoteButton.class, "desc"), + Messages.get(CustomNoteButton.class, "new_text"), + Messages.get(CustomNoteButton.class, "new_floor"), + Messages.get(CustomNoteButton.class, "new_inv"), + Messages.get(CustomNoteButton.class, "new_type")); + NOTE_SELECT_INSTANCE = this; + } + + @Override + protected void onSelect(int index) { + if (index == 0){ + Notes.CustomRecord custom = new Notes.CustomRecord("", ""); + addNote(null, custom, + Messages.get(CustomNoteButton.class, "new_text"), + Messages.get(CustomNoteButton.class, "new_text_title")); + } else if (index == 1){ + GameScene.show(new WndDepthSelect()); + } else if (index == 2){ + GameScene.selectItem(itemSelector); + } else { + GameScene.show(new WndItemtypeSelect()); + } + } + + @Override + public void hide() { + //do nothing, prevents window closing when user steps back in note creation process + } + + @Override + public void onBackPressed() { + super.hide(); //actually hide in this case + NOTE_SELECT_INSTANCE = null; + } + } + private class WndDepthSelect extends WndTitledMessage { public WndDepthSelect(){ @@ -125,7 +136,7 @@ public class CustomNoteButton extends IconButton { RedButton btnDepth = new RedButton(Integer.toString(finalI)){ @Override protected void onClick() { - addNote(new Notes.CustomRecord(finalI, "", ""), + addNote(WndDepthSelect.this, new Notes.CustomRecord(finalI, "", ""), Messages.get(CustomNoteButton.class, "new_floor"), Messages.get(CustomNoteButton.class, "new_floor_title", finalI)); } @@ -175,7 +186,7 @@ public class CustomNoteButton extends IconButton { ((EquipableItem) item).customNoteID = custom.ID(); } - addNote(custom, + addNote(null, custom, Messages.get(CustomNoteButton.class, "new_inv"), Messages.get(CustomNoteButton.class, "new_item_title", Messages.titleCase(item.name()))); } @@ -207,7 +218,7 @@ public class CustomNoteButton extends IconButton { ItemButton itemButton = new ItemButton(){ @Override protected void onClick() { - addNote(new Notes.CustomRecord(item, "", ""), + addNote(WndItemtypeSelect.this, new Notes.CustomRecord(item, "", ""), Messages.get(CustomNoteButton.class, "new_type"), Messages.get(CustomNoteButton.class, "new_item_title", Messages.titleCase(item.name()))); } @@ -271,7 +282,8 @@ public class CustomNoteButton extends IconButton { public void onSelect(boolean positive, String text) { if (positive && !text.isEmpty()){ rec.editText(text, rec.desc()); - refreshScene(rec); + CustomNoteWindow.this.hide(); + ShatteredPixelDungeon.scene().addToFront(new CustomNoteWindow(rec)); } } }); @@ -295,7 +307,8 @@ public class CustomNoteButton extends IconButton { public void onSelect(boolean positive, String text) { if (positive){ rec.editText(rec.title(), text); - refreshScene(rec); + CustomNoteWindow.this.hide(); + ShatteredPixelDungeon.scene().addToFront(new CustomNoteWindow(rec)); } } }); @@ -316,7 +329,8 @@ public class CustomNoteButton extends IconButton { protected void onSelect(int index) { if (index == 0){ Notes.remove(rec); - refreshScene(null); + CustomNoteWindow.this.hide(); + ShatteredPixelDungeon.scene().addToFront(new WndJournal()); } } }); @@ -334,7 +348,7 @@ public class CustomNoteButton extends IconButton { } } - private static void addNote(Notes.CustomRecord note, String promptTitle, String prompttext){ + private static void addNote(Window parentWindow, Notes.CustomRecord note, String promptTitle, String prompttext){ GameScene.show(new WndTextInput(promptTitle, prompttext, "", @@ -347,32 +361,21 @@ public class CustomNoteButton extends IconButton { if (positive && !text.isEmpty()){ Notes.add(note); note.editText(text, ""); - refreshScene(null); + if (parentWindow != null) { + parentWindow.hide(); + } + if (WndBag.INSTANCE != null) { + WndBag.INSTANCE.hide(); + } + if (NOTE_SELECT_INSTANCE != null){ + NOTE_SELECT_INSTANCE.onBackPressed(); + } + hide(); + ShatteredPixelDungeon.scene().addToFront(new WndJournal()); + ShatteredPixelDungeon.scene().addToFront(new CustomNoteWindow(note)); } } }); } - private static void refreshScene(Notes.CustomRecord recToShow){ - if (recToShow == null){ - ShatteredPixelDungeon.seamlessResetScene(); - } else { - ShatteredPixelDungeon.seamlessResetScene(new Game.SceneChangeCallback() { - @Override - public void beforeCreate() { - - } - - @Override - public void afterCreate() { - Game.runOnRenderThread(new Callback() { - @Override - public void call() { - ShatteredPixelDungeon.scene().addToFront(new CustomNoteWindow(recToShow)); - } - }); - } - }); - } - } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java index 096e025e2..7a98dad1f 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java @@ -100,8 +100,14 @@ public class WndJournal extends WndTabbed { private BadgesTab badgesTab; public static int last_index = 0; + + private static WndJournal INSTANCE = null; public WndJournal(){ + + if (INSTANCE != null){ + INSTANCE.hide(); + } int width = PixelScene.landscape() ? WIDTH_L : WIDTH_P; int height = PixelScene.landscape() ? HEIGHT_L : HEIGHT_P; @@ -202,6 +208,8 @@ public class WndJournal extends WndTabbed { layoutTabs(); select(last_index); + + INSTANCE = this; } @Override