diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java index ddc77eab1..d0e5a8a5a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/ChangesScene.java @@ -45,6 +45,7 @@ import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.v0_7_X_Changes; import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.v0_8_X_Changes; import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.v0_9_X_Changes; import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.v1_X_Changes; +import com.shatteredpixel.shatteredpixeldungeon.ui.changelist.v2_X_Changes; import com.shatteredpixel.shatteredpixeldungeon.windows.IconTitle; import com.watabou.noosa.Camera; import com.watabou.noosa.Image; @@ -130,21 +131,24 @@ public class ChangesScene extends PixelScene { switch (changesSelected){ case 0: default: - v1_X_Changes.addAllChanges(changeInfos); + v2_X_Changes.addAllChanges(changeInfos); break; case 1: - v0_9_X_Changes.addAllChanges(changeInfos); + v1_X_Changes.addAllChanges(changeInfos); break; case 2: - v0_8_X_Changes.addAllChanges(changeInfos); + v0_9_X_Changes.addAllChanges(changeInfos); break; case 3: - v0_7_X_Changes.addAllChanges(changeInfos); + v0_8_X_Changes.addAllChanges(changeInfos); break; case 4: - v0_6_X_Changes.addAllChanges(changeInfos); + v0_7_X_Changes.addAllChanges(changeInfos); break; case 5: + v0_6_X_Changes.addAllChanges(changeInfos); + break; + case 6: v0_5_X_Changes.addAllChanges(changeInfos); v0_4_X_Changes.addAllChanges(changeInfos); v0_3_X_Changes.addAllChanges(changeInfos); @@ -205,7 +209,7 @@ public class ChangesScene extends PixelScene { panel.innerHeight() + 2); list.scrollTo(0, 0); - StyledButton btn1_1 = new StyledButton(Chrome.Type.GREY_BUTTON_TR, "1.X"){ + StyledButton btn2_X = new StyledButton(Chrome.Type.GREY_BUTTON_TR, "2.X"){ @Override protected void onClick() { super.onClick(); @@ -215,11 +219,11 @@ public class ChangesScene extends PixelScene { } } }; - if (changesSelected != 0) btn1_1.textColor( 0xBBBBBB ); - btn1_1.setRect(list.left()-4f, list.bottom(), 22, changesSelected == 0 ? 19 : 15); - addToBack(btn1_1); + if (changesSelected != 0) btn2_X.textColor( 0xBBBBBB ); + btn2_X.setRect(list.left()-4f, list.bottom(), 21, changesSelected == 0 ? 19 : 15); + addToBack(btn2_X); - StyledButton btn0_9 = new StyledButton(Chrome.Type.GREY_BUTTON_TR, "0.9"){ + StyledButton btn1_X = new StyledButton(Chrome.Type.GREY_BUTTON_TR, "1.X"){ @Override protected void onClick() { super.onClick(); @@ -229,11 +233,11 @@ public class ChangesScene extends PixelScene { } } }; - if (changesSelected != 1) btn0_9.textColor( 0xBBBBBB ); - btn0_9.setRect(btn1_1.right()+1, list.bottom(), 22, changesSelected == 1 ? 19 : 15); - addToBack(btn0_9); + if (changesSelected != 1) btn1_X.textColor( 0xBBBBBB ); + btn1_X.setRect(btn2_X.right()-2, list.bottom(), 21, changesSelected == 1 ? 19 : 15); + addToBack(btn1_X); - StyledButton btn0_8 = new StyledButton(Chrome.Type.GREY_BUTTON_TR, "0.8"){ + StyledButton btn0_9 = new StyledButton(Chrome.Type.GREY_BUTTON_TR, "0.9"){ @Override protected void onClick() { super.onClick(); @@ -243,11 +247,11 @@ public class ChangesScene extends PixelScene { } } }; - if (changesSelected != 2) btn0_8.textColor( 0xBBBBBB ); - btn0_8.setRect(btn0_9.right() + 1, list.bottom(), 22, changesSelected == 2 ? 19 : 15); - addToBack(btn0_8); - - StyledButton btn0_7 = new StyledButton(Chrome.Type.GREY_BUTTON_TR, "0.7"){ + if (changesSelected != 2) btn0_9.textColor( 0xBBBBBB ); + btn0_9.setRect(btn1_X.right()-2, list.bottom(), 21, changesSelected == 2 ? 19 : 15); + addToBack(btn0_9); + + StyledButton btn0_8 = new StyledButton(Chrome.Type.GREY_BUTTON_TR, "0.8"){ @Override protected void onClick() { super.onClick(); @@ -257,11 +261,11 @@ public class ChangesScene extends PixelScene { } } }; - if (changesSelected != 3) btn0_7.textColor( 0xBBBBBB ); - btn0_7.setRect(btn0_8.right() + 1, btn0_8.top(), 22, changesSelected == 3 ? 19 : 15); - addToBack(btn0_7); + if (changesSelected != 3) btn0_8.textColor( 0xBBBBBB ); + btn0_8.setRect(btn0_9.right()-2, list.bottom(), 21, changesSelected == 3 ? 19 : 15); + addToBack(btn0_8); - StyledButton btn0_6 = new StyledButton(Chrome.Type.GREY_BUTTON_TR, "0.6"){ + StyledButton btn0_7 = new StyledButton(Chrome.Type.GREY_BUTTON_TR, "0.7"){ @Override protected void onClick() { super.onClick(); @@ -271,11 +275,11 @@ public class ChangesScene extends PixelScene { } } }; - if (changesSelected != 4) btn0_6.textColor( 0xBBBBBB ); - btn0_6.setRect(btn0_7.right() + 1, btn0_8.top(), 22, changesSelected == 4 ? 19 : 15); - addToBack(btn0_6); + if (changesSelected != 4) btn0_7.textColor( 0xBBBBBB ); + btn0_7.setRect(btn0_8.right()-2, btn0_8.top(), 21, changesSelected == 4 ? 19 : 15); + addToBack(btn0_7); - StyledButton btnOld = new StyledButton(Chrome.Type.GREY_BUTTON_TR,"0.5-1"){ + StyledButton btn0_6 = new StyledButton(Chrome.Type.GREY_BUTTON_TR, "0.6"){ @Override protected void onClick() { super.onClick(); @@ -285,8 +289,22 @@ public class ChangesScene extends PixelScene { } } }; - if (changesSelected != 5) btnOld.textColor( 0xBBBBBB ); - btnOld.setRect(btn0_6.right() + 1, btn0_8.top(), 26, changesSelected == 5 ? 19 : 15); + if (changesSelected != 5) btn0_6.textColor( 0xBBBBBB ); + btn0_6.setRect(btn0_7.right()-2, btn0_8.top(), 21, changesSelected == 5 ? 19 : 15); + addToBack(btn0_6); + + StyledButton btnOld = new StyledButton(Chrome.Type.GREY_BUTTON_TR, "0.5-1"){ + @Override + protected void onClick() { + super.onClick(); + if (changesSelected != 6) { + changesSelected = 6; + ShatteredPixelDungeon.seamlessResetScene(); + } + } + }; + if (changesSelected != 6) btnOld.textColor( 0xBBBBBB ); + btnOld.setRect(btn0_6.right()-2, btn0_8.top(), 27, changesSelected == 6 ? 19 : 15); addToBack(btnOld); Archs archs = new Archs(); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_1_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_1_X_Changes.java index 43da3e24a..b741cb953 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_1_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_1_X_Changes.java @@ -91,8 +91,8 @@ public class v0_1_X_Changes { changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Developer Commentary", "_-_ Released August 5th, 2014\n" + + "_-_ 9 days after Pixel Dungeon source release\n" + "_-_ 69 days after Pixel Dungeon v1.7.1\n" + - "_-_ 9 days after v1.7.1 source release\n" + "\n" + "v0.1.0 and v0.1.1 were extremely early Shattered updates that were only distributed via the Pixel Dungeon Subreddit. At this stage of development Shattered was basically the same game as Pixel Dungeon v1.7.1.\n" + "\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_2_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_2_X_Changes.java index 828d2f06c..d496c72bf 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_2_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_2_X_Changes.java @@ -217,6 +217,7 @@ public class v0_2_X_Changes { changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Developer Commentary", "_-_ Released September 15th, 2014\n" + "_-_ 31 days after Shattered v0.1.1\n" + + "_-_ 41 days after Shattered v0.1.0\n" + "\n" + "v0.2.0 was the first version of Shattered to release on Google Play! I had originally wanted to wait longer, but I was getting flooded with messages about it.\n" + "\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_3_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_3_X_Changes.java index cfaec1714..2e2bd9b74 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_3_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_3_X_Changes.java @@ -279,8 +279,8 @@ public class v0_3_X_Changes { changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Developer Commentary", "_-_ Released May 26th, 2015\n" + - "_-_ 253 days after Shattered v0.2.0\n" + "_-_ 92 days after Shattered v0.2.4\n" + + "_-_ 253 days after Shattered v0.2.0\n" + "\n" + "v0.3.0 was Shattered's second major item category rework, and Shattered's first real class rework!\n" + "\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_4_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_4_X_Changes.java index 8fc3454a8..352f3769c 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_4_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_4_X_Changes.java @@ -190,8 +190,8 @@ public class v0_4_X_Changes { changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Developer Commentary", "_-_ Released June 20th, 2016\n" + - "_-_ 391 days after Shattered v0.3.0\n" + "_-_ 50 days after Shattered v0.3.5\n" + + "_-_ 391 days after Shattered v0.3.0\n" + "\n" + "v0.4.0 was Shattered's third major item category update, this time addressing weapons! I see this update as the start of a new era for Shattered's development. For the first time a major update was adding far more content than it was reworking or repurposing.\n" + "\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_5_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_5_X_Changes.java index a69881b3f..1c7ec0153 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_5_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_5_X_Changes.java @@ -45,12 +45,12 @@ public class v0_5_X_Changes { changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Developer Commentary", "_-_ Released February 8th, 2017\n" + - "_-_ 233 days after Shattered v0.4.0\n" + "_-_ 115 days after Shattered v0.4.3\n" + + "_-_ 233 days after Shattered v0.4.0\n" + "\n" + "v0.5.0 was the first major update that didn't focus on a category of items, instead it was all about the game's visuals! This visual overhaul was a very important update for Shattered, as it created an immediate visual difference between it and the original Pixel Dungeon. At this stage Shattered was starting to become less of an addition to Pixel Dungeon and more of its own game in the same spirit. Having an updated set of graphics really helped sell people on this idea.\n" + - "\n" + - "v0.5.0 was also Shattered's longest-developed update yet. While I don't think there was much I could do about this for v0.5.0 and v0.6.0, it started an unfortunate trend of major updates taking up to half a year! I eventually broke this trend in v0.9.0 by splitting these larger updates into smaller parts.")); + "\n" + + "v0.5.0 was also Shattered's longest-developed update yet. While I don't think there was much I could do about this for v0.5.0 and v0.6.0, it started an unfortunate trend of major updates taking up to half a year! I eventually broke this trend in v0.9.0 by splitting these larger updates into smaller parts.")); changes.addButton( new ChangeButton( Icons.get(Icons.STAIRS), "New Dungeon Visual Style!", "_-_ Walls and some terrain now have depth\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_7_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_7_X_Changes.java index afffbccd8..9806b414a 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_7_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_7_X_Changes.java @@ -747,8 +747,8 @@ public class v0_7_X_Changes { changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Developer Commentary", "_-_ Released Oct 18th, 2018\n" + - "_-_ 501 days after Shattered v0.6.0\n" + "_-_ 168 days after Shattered v0.6.5\n" + + "_-_ 501 days after Shattered v0.6.0\n" + "\n" + "v0.7.0 was Shattered's second longest-developed update at almost 6 months! This update took so long because it included my first attempt at an entirely new gameplay system: item crafting via alchemy!\n" + "\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_8_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_8_X_Changes.java index fe834955c..3627cb39e 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_8_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_8_X_Changes.java @@ -274,8 +274,8 @@ public class v0_8_X_Changes { "_-_ 72 days after Shattered v0.8.0\n" + "\n" + "In terms of game content v0.8.1 was mostly a followup to v0.8.0. There were a lot of items that needed to be buffed or nerfed as a result of all the boss and enemy changes. I also took this as an opportunity to make a few item reworks. A few of the new boss and enemy mechanics were also adjusted based on balance data and player feedback.\n" + - "\n" + - "This update had some pretty big additions aside from game content though, with hero splash art and new sound effects! The splash art in particular was a long time coming, I first approached Aleksandar about them in 2016! While new game content is perhaps more exciting, these presentation improvements were a really important addition to Shattered, especially when it comes to enticing new players to try the game.")); + "\n" + + "This update had some pretty big additions aside from game content though, with hero splash art and new sound effects! The splash art in particular was a long time coming, I first approached Aleksandar about them in 2016! While new game content is perhaps more exciting, these presentation improvements were a really important addition to Shattered, especially when it comes to enticing new players to try the game.")); changes.addButton( new ChangeButton(Icons.get(Icons.DISPLAY), "New Hero Select!", "The game's hero select screen has been completely overhauled, and how shows off the heroes in more detail than ever before.\n\n" + @@ -481,8 +481,8 @@ public class v0_8_X_Changes { changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Developer Commentary", "_-_ Released April 16th, 2020\n" + - "_-_ 546 days after Shattered v0.7.0\n" + "_-_ 197 days after Shattered v0.7.5\n" + + "_-_ 546 days after Shattered v0.7.0\n" + "\n" + "v0.8.0 is easily the largest update Shattered has ever received in terms of game content. It included sweeping changes to basically every enemy after floor 10. This included full reworks to three of the game's bosses, which were some of the most well-received changes I've ever made to Shattered.\n" + "\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_9_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_9_X_Changes.java index d7d9b8aef..12f9fe827 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_9_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v0_9_X_Changes.java @@ -235,7 +235,7 @@ public class v0_9_X_Changes { "_-_ Released February 26th, 2021\n" + "_-_ 78 days after Shattered v0.9.1\n" + "\n" + - "Dev commentary will be added here in the future.")); + "Dev commentary will be added here in the next major update.")); changes.addButton(new ChangeButton(Icons.get(Icons.TALENT), "Tier Three Talents!", "_32 new talents have been added that span levels 13 to 20!_\n\n" + @@ -389,7 +389,11 @@ public class v0_9_X_Changes { "_-_ Released December 11th, 2020\n" + "_-_ 68 days after Shattered v0.9.0\n" + "\n" + - "Dev commentary will be added here in the next major update.")); + "v0.9.1 continued on the momentum of v0.9.0, adding a new tier of talents spanning the mid game. These talents were a lot more satisfying for players to use, as they were able to more significantly shape gameplay when compared to the early game talents added in v0.9.0.\n" + + "\n" + + "I also became a lot more sure that I was making the right call by splitting the talent system into multiple updates. v0.9.1 was released quickly, more than doubled the number of talents, and made a bunch of crucial improvements to the talents added in v0.9.0. Had I released the entire system in one go then these sorts of growing pains would have stuck around for much longer.\n" + + "\n" + + "v0.9.1 also includes the first major changes to level generation since v0.6.2! While the same base algorithms are still used to lay levels out, v0.9.1 made overall level structures more chaotic and varied, which really helped individual layouts feel more unique.")); changes.addButton(new ChangeButton(Icons.get(Icons.TALENT), "Tier Two Talents!", "_A second tier of talents has been added, including twenty new talents spanning levels 7-12!_\n\n" + @@ -541,7 +545,11 @@ public class v0_9_X_Changes { "_-_ 61 days after Shattered v0.8.2\n" + "_-_ 173 days after Shattered v0.8.0\n" + "\n" + - "Dev commentary will be added here in the next major update.")); + "v0.9.0 was the beginning of Shattered's second new gameplay system! The talent system was primarily designed to address consistent feedback that leveling up wasn't very satisfying. I wanted talents to deepen character customization and give the player a reason to feel excited about levelling up.\n" + + "\n" + + "I opted to split the talent system over multiple updates, rather than implement it all at once. This mean that v0.9.0 had an impressively short dev time of just two months, although it also meant that the talent system was pretty barebones to start.\n" + + "\n" + + "This update also included Shattered's first new challenge! The goal of hostile champions was to increase overall difficulty by adding new mechanics to the game, instead of removing them. This worked out very well, and led to a followup challenge addition just a couple of updates later.")); changes.addButton(new ChangeButton(Icons.get(Icons.TALENT), "Hero Talents!", "_A new gameplay system has been added!_\n\n" + diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v1_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v1_X_Changes.java index 1957050f2..88cb62090 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v1_X_Changes.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v1_X_Changes.java @@ -55,7 +55,6 @@ import java.util.ArrayList; public class v1_X_Changes { public static void addAllChanges( ArrayList changeInfos ){ - add_Coming_Soon(changeInfos); add_v1_4_Changes(changeInfos); add_v1_3_Changes(changeInfos); add_v1_2_Changes(changeInfos); @@ -63,100 +62,11 @@ public class v1_X_Changes { add_v1_0_Changes(changeInfos); } - public static void add_Coming_Soon( ArrayList changeInfos ) { - - ChangeInfo changes = new ChangeInfo("Coming Soon", true, ""); - changes.hardlight(0xCCCCCC); - changeInfos.add(changes); - - changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Overview", - "The next Shattered update will be v2.0.0, which is going to focus almost entirely on adding a new hero!\n\n" + - "v2.0.0 will likely have a few blog posts as I make progress on implementing the new hero. Expect to see the first of those posts in November.")); - - changes.addButton( new ChangeButton(Icons.get(Icons.TALENT), "A New Hero!", - "_The new hero in v2.0.0 will be the Duelist!_\n\nThe duelist will be able to use weapons in ways other heroes cannot, through charge-based special abilities, and other mechanics via her talents and subclasses. Like all the other heroes, the duelist will have 2 subclasses, 3 armor abilities, and 26 talents!")); - - changes.addButton( new ChangeButton(Icons.get(Icons.PREFS), "Side Content", - "I don't yet have any specific plans for other content in v2.0.0. I want to mostly focus on the Duelist, so don't expect as much side content as in previous updates, but I'm sure that there will be some amount of smaller additions and adjustments.")); - - changes.addButton( new ChangeButton(new ItemSprite(ItemSpriteSheet.PICKAXE), "Blacksmith Quest?", - "I was originally planning for the next update to be v1.5.0, and include a rework to the blacksmith's quest.\n\nWe're now in the last quarter of 2022 though, and I suspect people would much rather see a new hero release next. I also heavily implied a new hero would come this year back in the 'Shattered Pixel Dungeon in 2022' blog post.\n\nThis doesn't mean that the quest rework is never going to happen though, I'm just readjusting my priorities and will likely get to it in 2023 instead.")); - - } - public static void add_v1_4_Changes( ArrayList changeInfos ) { ChangeInfo changes = new ChangeInfo("v1.4", true, ""); changes.hardlight(Window.TITLE_COLOR); changeInfos.add(changes); - changes = new ChangeInfo("v1.4.3 & v1.4.2", false, null); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(new Image(Assets.Sprites.SPINNER, 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes") + " v1.4.3", - "Fixed (caused by v1.4.2)\n" + - "_-_ Crashes with bright fist and shock elemental\n" + - "_-_ Rare crashes caused by spectral necromancers\n\n" + - "Fixed (existed prior to v1.4)\n" + - "_-_ Various rare audiovisual errors\n" + - "_-_ Rare crashes with radial inventory selector\n" + - "_-_ Boss health bar not appearing in rare cases\n" + - "_-_ Buff icons sometimes going outside of character info windows")); - - changes.addButton(new ChangeButton(Icons.get(Icons.BUFFS), "Balance Tweaks", - "I've made a few balance tweaks to things that were added/changed in v1.4.0:\n\n" + - "_- Sandals of Nature_ energy costs reduced by 20%\n" + - "_- Sandals of Nature_ seeds needed to upgrade reverted to 3/6/9 from 4/7/10\n\n" + - "_- Blocking_ proc rate scaling with weapon level reduced by 50%\n\n" + - "_- Empowered Strike_ special effect boost up to 50% per level, from 33%\n" + - "_- Deathless Fury_ cooldown reduced to 3/2/1 levels, from 4/3/2")); - - changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), Messages.get(ChangesScene.class, "misc"), - "_-_ The buff bar now condenses itself if many buffs are visible at once. This raises the limit of on-screen buffs to 15.\n\n" + - "_-_ Plants now trigger after time freeze ends, just like traps\n\n" + - "_-_ Clarified description for boss score in rankings\n" + - "_-_ Yog's laser now deducts score even if the hero dodges it\n" + - "_-_ Goo no longer deducts score by healing in water\n\n" + - "_-_ Added lullaby vfx to the stone of deep sleep\n\n" + - "_-_ The sandals of nature now include the name of the most recently fed seed in their description\n\n" + - "_-_ Updated translations and translator credits")); - - changes.addButton(new ChangeButton(new Image(Assets.Sprites.SPINNER, 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes") + " v1.4.2", - "Fixed (caused by v1.4)\n" + - "_-_ Various rare crash bugs\n" + - "_-_ Various errors and inconsistencies with trampling hero's own position\n\n" + - "Fixed (existed prior to v1.4)\n" + - "_-_ Various rare crash bugs\n" + - "_-_ Various rare audiovisual errors\n" + - "_-_ Goo Immediately using its pump up attack if a previous pump up was interrupted by sleep\n" + - "_-_ Caves boss arena not displacing all items on the tile that caves in\n" + - "_-_ Recharging effects sometimes getting an extra action on game load\n" + - "_-_ Screen orientation changes cancelling the scroll of enchantment\n" + - "_-_ Magical infusion incorrectly clearing curses on wands and rings\n" + - "_-_ Projecting weapons not reaching through webs in rare cases\n" + - "_-_ Death by necromancer summoning damage not producing a record in rankings")); - - changes = new ChangeInfo("v1.4.1", false, null); - changes.hardlight(Window.TITLE_COLOR); - changeInfos.add(changes); - - changes.addButton(new ChangeButton(new Image(Assets.Sprites.SPINNER, 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes"), - "Fixed (caused by v1.4)\n" + - "_-_ Various minor visual and textual errors\n" + - "_-_ Blooming enchantment triggering more often than intended\n" + - "_-_ Errors with charge use on timekeeper's hourglass\n" + - "_-_ Some changes missing from v1.4 changelog\n\n" + - "Fixed (existed prior to v1.4)\n" + - "_-_ Multiplicity glyph duplicating NPCs in rare cases\n" + - "_-_ Rare cases where potion of healing talents wouldn't trigger\n" + - "_-_ Cursed horn of plenty affecting non-food items\n" + - "_-_ Being able to self-target with cursed wands in rare cases\n" + - "_-_ Some thrown weapons triggering traps as Tengu jumps\n" + - "_-_ Magic resistance not applying to some cursed wand effects\n" + - "_-_ Some users seeing rankings dates in local format, instead of international\n" + - "_-_ Exploits during ascension challenge that let players still use shops\n" + - "_-_ Elastic and battlemage blast wave ability conflicting with each other")); - changes = new ChangeInfo(Messages.get(ChangesScene.class, "new"), false, null); changes.hardlight(Window.TITLE_COLOR); changeInfos.add(changes); @@ -210,31 +120,53 @@ public class v1_X_Changes { "Desktop and mobile landscape users will now see a new hero select screen that better makes use of screen real-estate.")); changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), Messages.get(ChangesScene.class, "misc") + " 1", - "_-_ Daily runs can now be replayed for practise\n" + + "_Highlights:_\n" + + "_-_ Daily runs can now be replayed for practice\n" + + "_-_ Updated translations and translator credits\n" + + "_-_ Added more achievements to Shattered on Google Play Games\n" + + "_-_ The buff bar now condenses itself if many buffs are visible at once. This raises the limit of on-screen buffs to 15\n" + + "\n" + + "_Hero Actions:_\n" + "_-_ Waiting now always takes exactly 1 turn, regardless of hero speed\n" + "_-_ Grass the hero is standing on can now be trampled by selecting the hero's position\n" + "_-_ Hero now pauses before ascending/descending if enemies are nearby\n" + - "_-_ Goo's pump up attack now always gives the hero at least 1 action to react\n" + - "_-_ DM-300 now knocks back during rockfall even if hero is 1 tile away\n" + - "_-_ Improved behaviour of ally AI when told to hold a position\n" + - "_-_ Slightly adjusted enemy stats on ascension to smooth out difficulty\n" + - "_-_ Rotberry plant now gives a small puff of toxic gas when trampled\n" + - "_-_ Items and enemies can no longer spawn in aquarium room water\n" + - "_-_ Blooming enchant now tries to avoid placing grass on the hero\n" + + "\n" + + "_Items:_\n" + "_-_ Wand of Disintegration no longer harms undiscovered neutral characters\n" + + "_-_ Blooming enchant now tries to avoid placing grass on the hero\n" + "_-_ The scroll holder can now hold arcane resin\n" + - "_-_ Improved room merging logic in a few specific situations")); + "_-_ Rotberry plant now gives a small puff of toxic gas when trampled\n" + + "_-_ Plants now trigger after time freeze ends, just like traps")); changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), Messages.get(ChangesScene.class, "misc") + " 2", + "_Allies & Enemies:_\n" + + "_-_ Improved behavior of ally AI when told to hold a position\n" + + "_-_ Goo's pump up attack now always gives the hero at least 1 action to react\n" + + "_-_ DM-300 now knocks back during rockfall even if hero is 1 tile away\n" + + "_-_ Slightly adjusted enemy stats on ascension to smooth out difficulty\n" + + "\n" + + "_UI/VFX:_\n" + "_-_ Throwing weapons now show their quantity in orange when one is about to break\n" + "_-_ Item boosts from potion of mastery or curse infusion now change the color of text in that item's item slot\n" + "_-_ Various minor UI improvements to hero select and rankings\n" + + "_-_ Added sacrifical fire and demon spawners to the landmarks page\n" + "_-_ Added some ascension dialogue for the ghost hero\n" + "_-_ Slightly improved the marsupial rat attacking animation\n" + "_-_ Improved chains vfx, especially for prison guards\n" + - "_-_ Added sacrifical fire and demon spawners to the landmarks page\n" + + "_-_ Added lullaby vfx to the stone of deep sleep")); + + changes.addButton(new ChangeButton(Icons.get(Icons.PREFS), Messages.get(ChangesScene.class, "misc") + " 3", + "_Rankings:_\n" + + "_-_ Clarified description for boss score in rankings\n" + + "_-_ Yog's laser now deducts score even if the hero dodges it\n" + + "_-_ Goo no longer deducts score by healing in water\n" + + "\n" + + "_Levelgen:_\n" + + "_-_ Items and enemies can no longer spawn in aquarium room water\n" + + "_-_ Improved room merging logic in a few specific situations\n" + + "\n" + + "_Controls:_\n" + "_-_ Added a copy and paste button to text input windows\n" + - "_-_ Added more achievements to Shattered on Google Play Games\n" + "_-_ Adjusted default controller bindings slightly\n" + "_-_ The 'switch enemy' keybind now also switches tabs on tabbed windows\n" + "_-_ On desktop, the game now attempts to keep mouse and controller pointer potions in sync\n" + @@ -243,59 +175,87 @@ public class v1_X_Changes { "_-_ Heroes can now be renamed individually")); changes.addButton(new ChangeButton(new Image(Assets.Sprites.SPINNER, 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes") + " 1", - "Fixed\n" + - "_-_ Victory and Champion badges not be awarded in some cases\n" + + "Fixed the following bugs:\n\n" + + "_Highlights:_\n" + + "_-_ Victory and Champion badges not being awarded in some cases\n" + "_-_ Various rare crash and hang bugs\n" + "_-_ Various minor visual/textual errors\n" + + "\n" + + "_Allies & Enemies:_\n" + "_-_ Characters rarely managing to enter eternal fire\n" + - "_-_ Summons from guardian traps counting as regular states in some cases\n" + - "_-_ Invisibility effects not working on enemies\n" + - "_-_ Rare cases where giant enemies couldn't attack\n" + - "_-_ Confusing text when a weapon or armor is partly uncursed\n" + - "_-_ 'No Weapons in His Presence' badge not stating that ring of force counts as a weapon\n" + - "_-_ Various cases where the friendly fire badge was not correctly awarded\n" + - "_-_ 13th armor ability incorrectly clearing champion enemy buffs\n" + - "_-_ Exploits where the gladiator could build combo on ally characters\n" + - "_-_ Cases where piranhas could live for a turn on land\n" + - "_-_ Honeypots not reacting correctly to being teleported\n" + - "_-_ Rare cases where lost inventory and items on stairs could softlock the game\n" + - "_-_ Hero armor transferring rarely deleting the Warrior's broken seal")); + "_-_ Summons from guardian traps counting as regular statues in some cases\n" + + "_-_ Rare cases where ranged allies would refuse to target nearby enemies\n" + + "_-_ Various rare cases where characters might stack on each other\n" + + "_-_ Albino rats causing bleed when hitting for 0 damage\n" + + "_-_ Necromancers being able to summon through crystal doors\n" + + "_-_ Giant necromancers summoning skeletons into doorways\n" + + "_-_ Goo Immediately using its pump up attack if a previous pump up was interrupted by sleep")); changes.addButton(new ChangeButton(new Image(Assets.Sprites.SPINNER, 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes") + " 2", - "Fixed\n" + + "_Items pt.1:_\n" + + "_-_ Honeypots not reacting correctly to being teleported\n" + + "_-_ Rare cases where lost inventory and items on stairs could softlock the game\n" + + "_-_ Hero armor transferring rarely deleting the Warrior's broken seal\n" + "_-_ Scrolls of Mirror Image not identifying in rare cases\n" + - "_-_ Various incorrect interaction between kinetic/viscosity and damage mitigating effects\n" + + "_-_ Various incorrect interactions between kinetic/viscosity and damage mitigating effects\n" + "_-_ Wand of Fireblast sometimes not igniting adjacent item or barricades\n" + "_-_ Ring of Furor not affecting Sniper special abilities\n" + "_-_ Cursed rings of force still heavily buffing melee attacks\n" + - "_-_ Controller axis mapping issues on Android\n" + "_-_ Armband not breaking invisibility\n" + "_-_ Various quirks with charge spending on timekeeper's hourglass\n" + "_-_ Stones of aggression working much more effectively than intended\n" + - "_-_ Various rare fog of war errors when the hero was knocked a high distance\n" + "_-_ Chalice of Blood benefitting from recharging while hero is starving\n" + "_-_ Cases where explosive curse would create explosions at the wrong location\n" + - "_-_ Rare cases where ranged allies would refuse to target nearby enemies\n" + - "_-_ Rare cases where items would not correctly appear in the rankings screen\n" + - "_-_ Errors with wild magic or flurry and knockback effects\n" + - "_-_ Magical Sight not making the hero immune to blindness")); + "_-_ Additional cases where magical spellbook could generate scrolls of lullaby")); changes.addButton(new ChangeButton(new Image(Assets.Sprites.SPINNER, 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes") + " 3", - "Fixed\n" + - "_-_ Additional cases where magical spellbook could generate scrolls of lullaby\n" + - "_-_ Targeting logic sometimes being incorrect on armor abilities\n" + - "_-_ Shadow clone not benefiting from certain glyphs\n" + + "_Items pt.2:_\n" + "_-_ Heavy boomerangs getting an accuracy penalty when returning\n" + "_-_ Rare consistency errors in potion of might buff description\n" + - "_-_ Various rare cases where characters might stack on each other\n" + - "_-_ Dailies using seeds that are also user-enterable\n" + - "_-_ Knockback effects paralyzing dead characters\n" + "_-_ Death to aqua blast counting as death to a geyser trap\n" + - "_-_ Albino rats causing bleed when hitting for 0 damage\n" + - "_-_ Prizes from sacrifice rooms now always being the same with the same dungeon seed\n" + - "_-_ Necromancers being able to summon through crystal doors\n" + "_-_ Reading spellbook not spending a turn if the scroll was cancelled\n" + - "_-_ Giant necromancers summoning skeletons into doorways")); + "_-_ Screen orientation changes cancelling the scroll of enchantment\n" + + "_-_ Magical infusion incorrectly clearing curses on wands and rings\n" + + "_-_ Projecting weapons not reaching through webs in rare cases\n" + + "_-_ Multiplicity glyph duplicating NPCs in rare cases\n" + + "_-_ Rare cases where potion of healing talents wouldn't trigger\n" + + "_-_ Cursed horn of plenty affecting non-food items\n" + + "_-_ Being able to self-target with cursed wands in rare cases\n" + + "_-_ Some thrown weapons triggering traps as Tengu jumps\n" + + "_-_ Magic resistance not applying to some cursed wand effects")); + + changes.addButton(new ChangeButton(new Image(Assets.Sprites.SPINNER, 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes") + " 4", + "_Effects:_\n" + + "_-_ Invisibility effects not working when applied to enemies\n" + + "_-_ Rare cases where giant enemies couldn't attack\n" + + "_-_ 13th armor ability incorrectly clearing champion enemy buffs\n" + + "_-_ Exploits where the gladiator could build combo on ally characters\n" + + "_-_ Cases where piranhas could live for a turn on land\n" + + "_-_ Errors with wild magic or flurry and knockback effects\n" + + "_-_ Magical Sight not making the hero immune to blindness\n" + + "_-_ Targeting logic sometimes being incorrect on armor abilities\n" + + "_-_ Shadow clone not benefiting from certain glyphs\n" + + "_-_ Knockback effects paralyzing dead characters\n" + + "_-_ Caves boss arena not displacing all items on the tile that caves in\n" + + "_-_ Recharging effects sometimes getting an extra action on game load\n" + + "_-_ Exploits during ascension challenge that let players still use shops\n" + + "_-_ Elastic and battlemage blast wave ability conflicting with each other")); + + changes.addButton(new ChangeButton(new Image(Assets.Sprites.SPINNER, 144, 0, 16, 16), Messages.get(ChangesScene.class, "bugfixes") + " 5", + "_Misc:_\n" + + "_-_ Dailies using seeds that are also user-enterable\n" + + "_-_ Confusing text when a weapon or armor is partly uncursed\n" + + "_-_ 'No Weapons in His Presence' badge not stating that ring of force counts as a weapon\n" + + "_-_ Various cases where the friendly fire badge was not correctly awarded\n" + + "_-_ Controller axis mapping issues on Android\n" + + "_-_ Various rare fog of war errors when the hero was knocked a high distance\n" + + "_-_ Rare cases where items would not correctly appear in the rankings screen\n" + + "_-_ Prizes from sacrifice rooms not always being the same with the same dungeon seed\n" + + "_-_ Rare crashes with radial inventory selector\n" + + "_-_ Boss health bar not appearing in rare cases\n" + + "_-_ Buff icons sometimes going outside of character info windows\n" + + "_-_ Death by necromancer summoning damage not producing a record in rankings\n" + + "_-_ Some users seeing rankings dates in local format, instead of international")); changes = new ChangeInfo(Messages.get(ChangesScene.class, "buffs"), false, null); changes.hardlight(CharSprite.POSITIVE); @@ -340,9 +300,9 @@ public class v1_X_Changes { changeInfos.add(changes); changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Developer Commentary", - "_-_ v1.3.0 Released July 6th, 2022\n" + - "_-_ 105 days after Shattered v1.2.0\n" + - "Expect dev commentary here in the future.")); + "_-_ Released July 6th, 2022\n" + + "_-_ 105 days after Shattered v1.2.0\n\n" + + "Dev commentary will be added here in the future.")); Image ic; ic = Icons.get(Icons.SEED); @@ -519,9 +479,9 @@ public class v1_X_Changes { changeInfos.add(changes); changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Developer Commentary", - "_-_ v1.2.0 Released March 23rd, 2022\n" + - "_-_ 103 days after Shattered v1.1.0\n" + - "Expect dev commentary here in the future.")); + "_-_ Released March 23rd, 2022\n" + + "_-_ 103 days after Shattered v1.1.0\n\n" + + "Dev commentary will be added here in the future.")); changes.addButton( new ChangeButton(Icons.get(Icons.DISPLAY_LAND), "Desktop Enhancements and Steam Release!", "_Shattered Pixel Dungeon has received a bunch of new features in preparation for its release on Steam!_\n\n" + @@ -706,9 +666,9 @@ public class v1_X_Changes { changeInfos.add(changes); changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Developer Commentary", - "_-_ v1.1.0 released December 10th, 2021\n" + - "_-_ 115 days after Shattered v1.0.0\n" + - "Expect dev commentary here in the future.")); + "_-_ Released December 10th, 2021\n" + + "_-_ 115 days after Shattered v1.0.0\n\n" + + "Dev commentary will be added here in the future.")); changes.addButton(new ChangeButton(new ItemSprite(ItemSpriteSheet.ENERGY), "Alchemical Energy Overhaul", "_The role of Alchemical Energy in the alchemy system has been totally overhauled!_\n\n" + @@ -889,8 +849,7 @@ public class v1_X_Changes { "_-_ 316 days after Shattered v0.9.0\n" + "_-_ A bit more than 7 years after v0.1.0!\n" + "\n" + - "_That's right, we've hit v1.0.0!_ This update was previously called v0.9.4 while in beta.\n\n" + - "Shattered will also now use the _major.minor.patch_ version naming scheme moving forward. So, the next patch will be v1.0.1, and the next update will be v1.1.0. _This change does not affect my plans for future updates!_\n\n" + + "_That's right, the big v1.0.0!_ In this update Shattered switched to the industry standard _major.minor.patch_ version naming scheme. Prior to this update Shattered's updates were versioned with _0.major.minor[patch]_, where patch was a letter. Rather than jumping all the way from v0.9.3 to v10.0.0, I opted to reset Shattered back to v1.0.0 for this update.\n\n" + "Expect more dev commentary here in the future.")); changes.addButton( new ChangeButton(Icons.get(Icons.DISPLAY_PORT), "iOS Release!", diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v2_X_Changes.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v2_X_Changes.java new file mode 100644 index 000000000..0cff1ca31 --- /dev/null +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/changelist/v2_X_Changes.java @@ -0,0 +1,82 @@ +/* + * Pixel Dungeon + * Copyright (C) 2012-2015 Oleg Dolya + * + * Shattered Pixel Dungeon + * Copyright (C) 2014-2022 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.ui.changelist; + +import com.shatteredpixel.shatteredpixeldungeon.messages.Messages; +import com.shatteredpixel.shatteredpixeldungeon.scenes.ChangesScene; +import com.shatteredpixel.shatteredpixeldungeon.sprites.CharSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSprite; +import com.shatteredpixel.shatteredpixeldungeon.sprites.ItemSpriteSheet; +import com.shatteredpixel.shatteredpixeldungeon.ui.Icons; +import com.shatteredpixel.shatteredpixeldungeon.ui.Window; + +import java.util.ArrayList; + +public class v2_X_Changes { + + public static void addAllChanges( ArrayList changeInfos ){ + //add_Coming_Soon(changeInfos); + add_v2_0_Changes(changeInfos); + } + + //TODO + public static void add_Coming_Soon( ArrayList changeInfos ) { + + ChangeInfo changes = new ChangeInfo("Coming Soon", true, ""); + changes.hardlight(0xCCCCCC); + changeInfos.add(changes); + + + } + + //TODO + public static void add_v2_0_Changes( ArrayList changeInfos ) { + + ChangeInfo changes = new ChangeInfo("v2.0-BETA", true, ""); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes = new ChangeInfo(Messages.get(ChangesScene.class, "new"), false, null); + changes.hardlight(Window.TITLE_COLOR); + changeInfos.add(changes); + + changes.addButton( new ChangeButton(Icons.get(Icons.SHPX), "Developer Commentary", + "_-_ Released October 4th, 2022\n" + + "_-_ 90 days after Shattered v1.3.0\n" + + "\n" + + "Dev commentary will be added here in the future.")); + + changes = new ChangeInfo(Messages.get(ChangesScene.class, "changes"), false, null); + changes.hardlight(CharSprite.WARNING); + changeInfos.add(changes); + + changes = new ChangeInfo(Messages.get(ChangesScene.class, "buffs"), false, null); + changes.hardlight(CharSprite.POSITIVE); + changeInfos.add(changes); + + changes = new ChangeInfo(Messages.get(ChangesScene.class, "nerfs"), false, null); + changes.hardlight(CharSprite.NEGATIVE); + changeInfos.add(changes); + + } + +}