diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMetamorphosis.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMetamorphosis.java index cd5c87d3b..a5d8e4eb2 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMetamorphosis.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/scrolls/exotic/ScrollOfMetamorphosis.java @@ -100,6 +100,8 @@ public class ScrollOfMetamorphosis extends ExoticScroll { public static WndMetamorphChoose INSTANCE; + TalentsPane pane; + public WndMetamorphChoose(){ super(); @@ -130,12 +132,12 @@ public class ScrollOfMetamorphosis extends ExoticScroll { } } - TalentsPane p = new TalentsPane(TalentButton.Mode.METAMORPH_CHOOSE, talents); - add(p); - p.setPos(0, top); - p.setSize(120, p.content().height()); - resize((int)p.width(), (int)p.bottom()); - p.setPos(0, top); + pane = new TalentsPane(TalentButton.Mode.METAMORPH_CHOOSE, talents); + add(pane); + pane.setPos(0, top); + pane.setSize(120, pane.content().height()); + resize((int)pane.width(), (int)pane.bottom()); + pane.setPos(0, top); } @Override @@ -154,6 +156,12 @@ public class ScrollOfMetamorphosis extends ExoticScroll { curItem.collect(); } } + + @Override + public void offset(int xOffset, int yOffset) { + super.offset(xOffset, yOffset); + pane.setPos(pane.left(), pane.top()); //triggers layout + } } public static class WndMetamorphReplace extends Window { diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentButton.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentButton.java index b0094aee8..c5dc7520a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentButton.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentButton.java @@ -117,12 +117,13 @@ public class TalentButton extends Button { protected void onClick() { super.onClick(); + Window toAdd; if (mode == Mode.UPGRADE && Dungeon.hero != null && Dungeon.hero.isAlive() && Dungeon.hero.talentPointsAvailable(tier) > 0 && Dungeon.hero.pointsInTalent(talent) < talent.maxPoints()){ - ShatteredPixelDungeon.scene().addToFront(new WndInfoTalent(talent, pointsInTalent, new WndInfoTalent.TalentButtonCallback() { + toAdd = new WndInfoTalent(talent, pointsInTalent, new WndInfoTalent.TalentButtonCallback() { @Override public String prompt() { @@ -133,9 +134,9 @@ public class TalentButton extends Button { public void call() { upgradeTalent(); } - })); + }); } else if (mode == Mode.METAMORPH_CHOOSE && Dungeon.hero != null && Dungeon.hero.isAlive()) { - ShatteredPixelDungeon.scene().addToFront(new WndInfoTalent(talent, pointsInTalent, new WndInfoTalent.TalentButtonCallback() { + toAdd = new WndInfoTalent(talent, pointsInTalent, new WndInfoTalent.TalentButtonCallback() { @Override public String prompt() { @@ -149,9 +150,9 @@ public class TalentButton extends Button { } GameScene.show(new ScrollOfMetamorphosis.WndMetamorphReplace(talent, tier)); } - })); + }); } else if (mode == Mode.METAMORPH_REPLACE && Dungeon.hero != null && Dungeon.hero.isAlive()) { - ShatteredPixelDungeon.scene().addToFront(new WndInfoTalent(talent, pointsInTalent, new WndInfoTalent.TalentButtonCallback() { + toAdd = new WndInfoTalent(talent, pointsInTalent, new WndInfoTalent.TalentButtonCallback() { @Override public String prompt() { @@ -204,9 +205,15 @@ public class TalentButton extends Button { } } - })); + }); } else { - ShatteredPixelDungeon.scene().addToFront(new WndInfoTalent(talent, pointsInTalent, null)); + toAdd = new WndInfoTalent(talent, pointsInTalent, null); + } + + if (ShatteredPixelDungeon.scene() instanceof GameScene){ + GameScene.show(toAdd); + } else { + ShatteredPixelDungeon.scene().addToFront(toAdd); } } diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Window.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Window.java index 116259f6f..b4a58c472 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Window.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/Window.java @@ -131,6 +131,7 @@ public class Window extends Group implements Signal.Listener { shadow.boxRect( camera.x / camera.zoom, camera.y / camera.zoom, chrome.width(), chrome.height ); } + //windows with scroll panes will likely need to override this and refresh them when offset changes public void offset( int xOffset, int yOffset ){ camera.x -= this.xOffset * camera.zoom; this.xOffset = xOffset; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java index 9d77cd28b..ed0a4ede3 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndHero.java @@ -112,6 +112,13 @@ public class WndHero extends WndTabbed { select( lastIdx ); } + @Override + public void offset(int xOffset, int yOffset) { + super.offset(xOffset, yOffset); + talents.layout(); + buffs.layout(); + } + private class StatsTab extends Group { private static final int GAP = 6; @@ -136,7 +143,11 @@ public class WndHero extends WndTabbed { @Override protected void onClick() { super.onClick(); - ShatteredPixelDungeon.scene().addToFront(new WndHeroInfo(hero.heroClass)); + if (ShatteredPixelDungeon.scene() instanceof GameScene){ + GameScene.show(new WndHeroInfo(hero.heroClass)); + } else { + ShatteredPixelDungeon.scene().addToFront(new WndHeroInfo(hero.heroClass)); + } } }; infoButton.setRect(title.right(), 0, 16, 16); 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 b4eef7800..217a2eba9 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndJournal.java @@ -134,7 +134,16 @@ public class WndJournal extends WndTabbed { select(last_index); } - + + @Override + public void offset(int xOffset, int yOffset) { + super.offset(xOffset, yOffset); + guideTab.layout(); + alchemyTab.layout(); + catalogTab.layout(); + notesTab.layout(); + } + private static class ListItem extends Component { protected RenderedTextBlock label; diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndKeyBindings.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndKeyBindings.java index 2e2e56e35..b685bdaf0 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndKeyBindings.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndKeyBindings.java @@ -156,6 +156,12 @@ public class WndKeyBindings extends Window { } + @Override + public void offset(int xOffset, int yOffset) { + super.offset(xOffset, yOffset); + bindingsList.setPos(bindingsList.left(), bindingsList.top()); //calls layout + } + @Override public void onBackPressed() { //do nothing, avoids accidental back presses which would lose progress. diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndSadGhost.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndSadGhost.java index ff73de850..bb7c72dd5 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndSadGhost.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndSadGhost.java @@ -30,6 +30,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.Item; import com.shatteredpixel.shatteredpixeldungeon.items.armor.Armor; import com.shatteredpixel.shatteredpixeldungeon.items.weapon.Weapon; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.FetidRatSprite; import com.shatteredpixel.shatteredpixeldungeon.sprites.GnollTricksterSprite; @@ -143,7 +144,7 @@ public class WndSadGhost extends Window { } @Override protected void onClick() { - ShatteredPixelDungeon.scene().addToFront(new RewardWindow(item)); + GameScene.show(new RewardWindow(item)); } }; add(slot); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndWandmaker.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndWandmaker.java index 6f3f39cbd..b06774793 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndWandmaker.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/windows/WndWandmaker.java @@ -31,6 +31,7 @@ import com.shatteredpixel.shatteredpixeldungeon.items.quest.CorpseDust; import com.shatteredpixel.shatteredpixeldungeon.items.quest.Embers; import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; import com.shatteredpixel.shatteredpixeldungeon.plants.Rotberry; +import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene; import com.shatteredpixel.shatteredpixeldungeon.scenes.PixelScene; import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; import com.shatteredpixel.shatteredpixeldungeon.ui.ItemSlot; @@ -137,7 +138,7 @@ public class WndWandmaker extends Window { @Override protected void onClick() { if (Dungeon.hero.belongings.contains(questItem)) { - ShatteredPixelDungeon.scene().addToFront(new RewardWindow(item)); + GameScene.show(new RewardWindow(item)); } else { hide(); }