diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/GamesInProgress.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/GamesInProgress.java
index d0506b2d2..b90577823 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/GamesInProgress.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/GamesInProgress.java
@@ -46,8 +46,8 @@ public class GamesInProgress {
info = new Info();
Dungeon.preview( info, bundle );
- //saves from before 0.4.0 are not supported
- if (info.version < ShatteredPixelDungeon.v0_4_0){
+ //saves from before 0.4.3c are not supported
+ if (info.version < ShatteredPixelDungeon.v0_4_3c){
info = null;
}
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Rankings.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Rankings.java
index 2bd787398..a4ba47b32 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Rankings.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Rankings.java
@@ -240,10 +240,6 @@ public enum Rankings {
}
public static class Record implements Bundlable {
-
- //pre 0.4.1
- public String gameFile;
- private static final String FILE = "gameFile";
private static final String CAUSE = "cause";
private static final String WIN = "win";
@@ -295,7 +291,6 @@ public enum Rankings {
heroClass = HeroClass.restoreInBundle( bundle );
armorTier = bundle.getInt( TIER );
- if (bundle.contains(FILE)) gameFile = bundle.getString(FILE);
if (bundle.contains(DATA)) gameData = bundle.getBundle(DATA);
if (bundle.contains(ID)) gameID = bundle.getString(ID);
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java
index ab05aa1bc..6b9e4705a 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ShatteredPixelDungeon.java
@@ -45,15 +45,15 @@ import javax.microedition.khronos.opengles.GL10;
public class ShatteredPixelDungeon extends Game {
//variable constants for specific older versions of shattered, used for data conversion
- //versions older than v0.4.0 are no longer supported, and data from them is ignored
- public static final int v0_4_0 = 107;
- public static final int v0_4_1 = 114;
- public static final int v0_4_2b = 129;
+ //versions older than v0.4.3c are no longer supported, and data from them is ignored
+ public static final int v0_4_3c = 148;
public static final int v0_5_0b = 157;
public static final int v0_6_0b = 185;
+ public static final int v0_6_1 = 205;
+
public ShatteredPixelDungeon() {
super( WelcomeScene.class );
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blob.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blob.java
index 417d5bbad..7acccef2e 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blob.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/blobs/Blob.java
@@ -88,12 +88,7 @@ public class Blob extends Actor {
if (bundle.contains( CUR )) {
- if (bundle.contains(LENGTH)) {
- cur = new int[bundle.getInt(LENGTH)];
- } else {
- //compatability with pre-0.4.2
- cur = new int[1024];
- }
+ cur = new int[bundle.getInt(LENGTH)];
off = new int[cur.length];
int[] data = bundle.getIntArray(CUR);
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java
index 87832c125..eff9f2e38 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/CloakOfShadows.java
@@ -155,12 +155,6 @@ public class CloakOfShadows extends Artifact {
super.restoreFromBundle(bundle);
stealthed = bundle.getBoolean( STEALTHED );
cooldown = bundle.getInt( COOLDOWN );
-
- //for pre-0.4.1 saves which may have over-levelled cloaks
- if (level() == 15){
- level(14);
- chargeCap = 20;
- }
}
@Override
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/HornOfPlenty.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/HornOfPlenty.java
index 4db1fdf24..db6fb62b3 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/HornOfPlenty.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/items/artifacts/HornOfPlenty.java
@@ -45,7 +45,6 @@ import com.watabou.utils.Bundle;
import java.util.ArrayList;
-//TODO perhaps adjust leveling mechanics on this to go along with 0.6.0 hunger changes
public class HornOfPlenty extends Artifact {
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java
index 7ab1a71ab..ee46df346 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Level.java
@@ -290,8 +290,8 @@ public abstract class Level implements Bundlable {
version = bundle.getInt( VERSION );
- //saves from before 0.4.0 are not supported
- if (version < ShatteredPixelDungeon.v0_4_0){
+ //saves from before 0.4.3c are not supported
+ if (version < ShatteredPixelDungeon.v0_4_3c){
throw new RuntimeException("old save");
}
@@ -318,11 +318,6 @@ public abstract class Level implements Bundlable {
locked = bundle.getBoolean( LOCKED );
- //for pre-0.4.3 saves
- if (version <= ShatteredPixelDungeon.v0_4_2b){
- map = Terrain.convertTilesFrom129( map );
- }
-
// pre-0.6.1 saves
if (version <= ShatteredPixelDungeon.v0_6_0b){
map = Terrain.convertTilesFrom0_6_0b( map );
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java
index 3be7069d5..afef33fd8 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/PrisonBossLevel.java
@@ -603,13 +603,6 @@ public class PrisonBossLevel extends Level {
return super.create();
}
- //for compatibility with pre-0.4.3 saves
- @Override
- public void restoreFromBundle(Bundle bundle) {
- super.restoreFromBundle(bundle);
- pos(11, 8);
- }
-
@Override
protected boolean needsRender(int pos) {
return render[pos] != 0;
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Terrain.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Terrain.java
index 59f7bf45a..1c4287abb 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Terrain.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/Terrain.java
@@ -114,27 +114,6 @@ public class Terrain {
}
}
- //converts terrain values from pre versioncode 120 (0.4.3) saves
- //TODO: remove when no longer supporting saves from 0.4.2b and under
- public static int[] convertTilesFrom129(int[] map){
- for (int i = 0; i < map.length; i++){
-
- int c = map[i];
-
- if (c >= 29){
- if (c <= 32){
- c = 0; //chasm tiles
- } else {
- c = 29; //water tiles
- }
- }
-
- map[i] = c;
-
- }
- return map;
- }
-
//removes signs, places floors instead
public static int[] convertTilesFrom0_6_0b(int[] map){
for (int i = 0; i < map.length; i++){
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LegacyBuilder.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LegacyBuilder.java
deleted file mode 100644
index dd7e5de6c..000000000
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/builders/LegacyBuilder.java
+++ /dev/null
@@ -1,599 +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
- */
-
-package com.shatteredpixel.shatteredpixeldungeon.levels.builders;
-
-import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.npcs.Imp;
-import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
-import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.connection.TunnelRoom;
-import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.RatKingRoom;
-import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.ShopRoom;
-import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.EntranceRoom;
-import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.ExitRoom;
-import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.StandardRoom;
-import com.watabou.utils.Graph;
-import com.watabou.utils.Random;
-import com.watabou.utils.Rect;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.ListIterator;
-
-//This builder exactly mimics pre-0.6.0 levelgen, including all of its limitations
-//Currently implemented during this transition period, it will likely not survive to 0.6.0 release
-
-//this is now broken due to changes elsewhere and serves only as a reference for older logic.
-//DO NOT USE, pending deletion before 0.6.0 release.
-public class LegacyBuilder extends Builder {
-
- public enum Type{
- REGULAR,
- SEWER_BOSS,
- LAST_SHOP
- }
-
- private Type type;
- private int width, height;
- private int minRoomSize, maxRoomSize;
-
- public LegacyBuilder(Type t, int w, int h, int min, int max){
- type = t;
-
- width = w;
- height = h;
-
- minRoomSize = min;
- maxRoomSize = max;
- }
-
- private ArrayList rooms;
-
- public Room roomEntrance;
- public Room roomExit;
-
- protected ArrayList> specials;
-
- @Override
- //The list of rooms passed to this method is ignored
- public ArrayList build(ArrayList ignoredRooms) {
-
- if (!initRooms()){
- return null;
- }
-
- switch(type){
- case REGULAR: default:
- return buildRegularLevel();
- case SEWER_BOSS:
- return buildSewerBossLevel();
- case LAST_SHOP:
- return buildsLastShopLevel();
- }
- }
-
- private ArrayList buildRegularLevel(){
- int distance;
- int retry = 0;
- int minDistance = (int)Math.sqrt( rooms.size() );
- do {
- do {
- roomEntrance = Random.element( rooms );
- } while (roomEntrance.width() <= 4 || roomEntrance.height() <= 4);
-
- do {
- roomExit = Random.element( rooms );
- } while (roomExit == roomEntrance || roomExit.width() <= 4 || roomExit.height() <= 4);
-
- Graph.buildDistanceMap( rooms, roomExit );
- distance = roomEntrance.distance();
-
- if (retry++ > 10) {
- return null;
- }
-
- } while (distance < minDistance);
-
- Room temp = roomEntrance;
- roomEntrance = new EntranceRoom().set(temp);
- rooms.set(rooms.indexOf(temp), roomEntrance);
-
- temp = roomExit;
- roomExit = new ExitRoom().set(temp);
- rooms.set(rooms.indexOf(temp), roomExit);
-
- ArrayList connected = new ArrayList<>();
- connected.add( roomEntrance );
-
- Graph.buildDistanceMap( rooms, roomExit );
- List path = Graph.buildPath( rooms, roomEntrance, roomExit );
-
- Room room = roomEntrance;
- for (Room next : path) {
- room.connect( next );
- room = next;
- connected.add( room );
- }
-
- Graph.setPrice( path, roomEntrance.distance );
-
- Graph.buildDistanceMap( rooms, roomExit );
- path = Graph.buildPath( rooms, roomEntrance, roomExit );
-
- room = roomEntrance;
- for (Room next : path) {
- room.connect( next );
- room = next;
- connected.add( room );
- }
-
- int nConnected = (int)(rooms.size() * Random.Float( 0.5f, 0.7f ));
- while (connected.size() < nConnected) {
-
- Room cr = Random.element( connected );
- Room or = Random.element( cr.neigbours );
- if (!connected.contains( or )) {
-
- cr.connect( or );
- connected.add( or );
- }
- }
-
- /*
- if (Dungeon.shopOnLevel()) {
- Room shop = null;
- for (Room r : roomEntrance.connected.keySet()) {
- if (r.connected.size() == 1 && ((r.width()-2)*(r.height()-2) >= ShopRoom.spaceNeeded())) {
- shop = r;
- break;
- }
- }
-
- if (shop == null) {
- return null;
- } else {
- temp = shop;
- shop = new ShopRoom().set(temp);
- rooms.set(rooms.indexOf(temp), shop);
- }
- }
-
-
- specials = new ArrayList<>( SpecialRoom.SPECIALS );
- if (Dungeon.bossLevel( Dungeon.depth + 1 )) {
- specials.remove( WeakFloorRoom.class );
- }
- if (Dungeon.isChallenged( Challenges.NO_ARMOR )){
- //no sense in giving an armor reward room on a run with no armor.
- specials.remove( CryptRoom.class );
- }
- if (Dungeon.isChallenged( Challenges.NO_HERBALISM )){
- //sorry warden, no lucky sungrass or blandfruit seeds for you!
- specials.remove( GardenRoom.class );
- }*/
-
- if (!assignRoomType())
- return null;
-
- //Quest generation logic
- //disabled due to incompatibilities with old logic
- /*
- if (Dungeon.depth >= 6 && Dungeon.depth <= 9){
- if (!Wandmaker.Quest.spawnRoom( rooms ) && Dungeon.depth == 9)
- return null;
- } else if (Dungeon.depth >= 11 && Dungeon.depth <= 14){
- if (!Blacksmith.Quest.spawn( rooms ) && Dungeon.depth == 14)
- return null;
- }*/
-
- ArrayList resultRooms = new ArrayList<>();
- for (Room r : rooms)
- if (!r.getClass().equals(Room.class))
- resultRooms.add(r);
-
- return resultRooms;
- }
-
- private ArrayList buildSewerBossLevel(){
- int distance;
- //if we ever need to try 20 or more times to find a room, better to give up and try again.
- int retry = 0;
-
- //start with finding an entrance room (will also contain exit)
- //the room must be at least 4x4 and be nearer the top of the map(so that it is less likely something connects to the top)
- do {
- if (retry++ > 20) {
- return null;
- }
- roomEntrance = Random.element( rooms );
- } while (roomEntrance.width() != 9 || roomEntrance.height() < 6 || roomEntrance.top == 0 || roomEntrance.top >= 8);
-
- Room temp = roomEntrance;
- roomEntrance = new EntranceRoom().set(temp);
- rooms.set(rooms.indexOf(temp), roomEntrance);
- roomExit = roomEntrance;
-
- //now find the rest of the rooms for this boss mini-maze
- Room curRoom = null;
- Room lastRoom = roomEntrance;
- //we make 4 rooms, last iteration is tieing the final room to the start
- for(int i = 0; i <= 4; i++){
- retry = 0;
- //find a suitable room the first four times
- //suitable room should be empty, have a distance of 2 from the current room, and not touch the entrance.
- if (i < 4) {
- do {
- if (retry++ > 20) {
- return null;
- }
- curRoom = Random.element(rooms);
- Graph.buildDistanceMap(rooms, curRoom);
- distance = lastRoom.distance();
- } while (!(curRoom.getClass().equals(Room.class)) || distance != 3 || curRoom.neigbours.contains(roomEntrance));
-
- temp = curRoom;
- curRoom = StandardRoom.createRoom().set(temp);
- rooms.set(rooms.indexOf(temp), curRoom);
-
- //otherwise, we're on the last iteration.
- } else {
- //set the current room to the entrance, so we can build a connection to it.
- curRoom = roomEntrance;
- }
-
- //now build a connection between the current room and the last one.
- Graph.buildDistanceMap( rooms, curRoom );
- List path = Graph.buildPath( rooms, lastRoom, curRoom );
-
- Graph.setPrice( path, lastRoom.distance );
-
- path = Graph.buildPath( rooms, lastRoom, curRoom );
-
- Room room = lastRoom;
- for (Room next : path) {
- room.connect( next );
- room = next;
- }
-
- if (i == 4) {
-
- //we must find a room for his royal highness!
- //look at rooms adjacent to the final found room (likely to be furthest from start)
- ArrayList candidates = new ArrayList();
- for (Room r : lastRoom.neigbours) {
- if (r.getClass().equals(Room.class) && r.connected.size() == 0 && !r.neigbours.contains(roomEntrance)) {
- candidates.add(r);
- }
- }
-
- //if we have candidates, pick a room and put the king there
- if (candidates.size() > 0) {
- Room kingsRoom = Random.element(candidates);
- kingsRoom.connect(lastRoom);
-
- temp = kingsRoom;
- kingsRoom = new RatKingRoom().set(temp);
- rooms.set(rooms.indexOf(temp), kingsRoom);
-
- //unacceptable! make a new level...
- } else {
- return null;
- }
- }
- lastRoom = curRoom;
- }
-
- //the connection structure ensures that (most of the time) there is a nice loop for the player to kite the
- //boss around. What's nice is that there is enough chaos such that the loop is rarely straightforward
- //and boring.
-
- //fills our connection rooms in with tunnel
- ListIterator it = rooms.listIterator();
- while (it.hasNext()) {
- Room r = it.next();
- if (r.getClass().equals(Room.class) && r.connected.size() > 0) {
- it.set(new TunnelRoom().set(r));
- }
- }
-
- ArrayList resultRooms = new ArrayList<>();
- for (Room r : rooms)
- if (!r.getClass().equals(Room.class))
- resultRooms.add(r);
-
- return resultRooms;
- }
-
- private ArrayList buildsLastShopLevel(){
- int distance;
- int retry = 0;
- int minDistance = (int)Math.sqrt( rooms.size() );
- do {
- int innerRetry = 0;
- do {
- if (innerRetry++ > 10) {
- return null;
- }
- roomEntrance = Random.element( rooms );
- } while (roomEntrance.width() <= 4 || roomEntrance.height() <= 4);
-
- innerRetry = 0;
- do {
- if (innerRetry++ > 10) {
- return null;
- }
- roomExit = Random.element( rooms );
- } while (roomExit == roomEntrance || roomExit.width() <= 6 || roomExit.height() <= 6 || roomExit.top == 0);
-
- Graph.buildDistanceMap( rooms, roomExit );
- distance = Graph.buildPath( rooms, roomEntrance, roomExit ).size();
-
- if (retry++ > 10) {
- return null;
- }
-
- } while (distance < minDistance);
-
- Room temp = roomEntrance;
- roomEntrance = new EntranceRoom().set(temp);
- rooms.set(rooms.indexOf(temp), roomEntrance);
-
- temp = roomExit;
- roomExit = new ExitRoom().set(temp);
- rooms.set(rooms.indexOf(temp), roomExit);
-
- Graph.buildDistanceMap( rooms, roomExit );
- List path = Graph.buildPath( rooms, roomEntrance, roomExit );
-
- Graph.setPrice( path, roomEntrance.distance );
-
- Graph.buildDistanceMap( rooms, roomExit );
- path = Graph.buildPath( rooms, roomEntrance, roomExit );
-
- Room room = roomEntrance;
- for (Room next : path) {
- room.connect( next );
- room = next;
- }
-
- Room roomShop = null;
- int shopSquare = 0;
- ListIterator it = rooms.listIterator();
- /*
- while (it.hasNext()) {
- Room r = it.next();
- if (r.getClass().equals(Room.class) && r.connected.size() > 0) {
- it.set(r = new PassageRoom().set(r));
- if (r.square() > shopSquare) {
- roomShop = r;
- shopSquare = r.square();
- }
- }
- }*/
-
- if (roomShop == null || shopSquare < 54) {
- return null;
- } else {
- temp = roomShop;
- roomShop = Imp.Quest.isCompleted() ? new ShopRoom().set(temp) : StandardRoom.createRoom().set(temp);
- rooms.set(rooms.indexOf(temp), roomShop);
- }
-
- ArrayList resultRooms = new ArrayList<>();
- for (Room r : rooms)
- if (!r.getClass().equals(Room.class))
- resultRooms.add(r);
-
- return resultRooms;
- }
-
- private boolean initRooms(){
- rooms = new ArrayList<>();
- split( new Rect( 0, 0, width-1, height-1));
-
- if (rooms.size() < 8){
- return false;
- }
-
- Room[] ra = rooms.toArray( new Room[0] );
- for (int i=0; i < ra.length-1; i++) {
- for (int j=i+1; j < ra.length; j++) {
- ra[i].addNeigbour( ra[j] );
- }
- }
-
- return true;
- }
-
- private void split( Rect rect ) {
-
- //To match with rooms
- int w = rect.width()+1;
- int h = rect.height()+1;
-
- if (w > maxRoomSize && h < minRoomSize) {
-
- int vw = Random.Int( rect.left + (minRoomSize/2), rect.right - (minRoomSize/2) );
- split( new Rect( rect.left, rect.top, vw, rect.bottom ) );
- split( new Rect( vw, rect.top, rect.right, rect.bottom ) );
-
- } else
- if (h > maxRoomSize && w < minRoomSize) {
-
- int vh = Random.Int( rect.top + (minRoomSize/2), rect.bottom - (minRoomSize/2) );
- split( new Rect( rect.left, rect.top, rect.right, vh ) );
- split( new Rect( rect.left, vh, rect.right, rect.bottom ) );
-
- } else
- if ((Random.Float() <= (minRoomSize * minRoomSize / rect.square()) && w <= maxRoomSize && h <= maxRoomSize) || w < minRoomSize || h < minRoomSize) {
-
- rooms.add( new Room(rect) );
-
- } else {
-
- if (Random.Float() < (float)(w - 2) / (w + h - 4)) {
- int vw = Random.Int( rect.left + (minRoomSize/2), rect.right - (minRoomSize/2) );
- split( new Rect( rect.left, rect.top, vw, rect.bottom ) );
- split( new Rect( vw, rect.top, rect.right, rect.bottom ) );
- } else {
- int vh = Random.Int( rect.top + (minRoomSize/2), rect.bottom - (minRoomSize/2) );
- split( new Rect( rect.left, rect.top, rect.right, vh ) );
- split( new Rect( rect.left, vh, rect.right, rect.bottom ) );
- }
-
- }
- }
-
- protected boolean assignRoomType() {
-
- int specialRooms = 0;
- boolean pitMade = false;
-
- ListIterator it = rooms.listIterator();
-
- /*
- while (it.hasNext()) {
- Room r = it.next();
- Room temp;
- if (r.getClass().equals(Room.class) &&
- r.connected.size() == 1) {
-
- if (specials.size() > 0 &&
- r.width() > 4 && r.height() > 4 &&
- Random.Int( specialRooms * specialRooms + 2 ) == 0) {
-
- if (Level.pitRoomNeeded && !pitMade) {
-
- temp = r;
- r = new PitRoom().set(temp);
- rooms.set(rooms.indexOf(temp), r);
- pitMade = true;
-
- specials.remove( ArmoryRoom.class );
- specials.remove( CryptRoom.class );
- specials.remove( LaboratoryRoom.class );
- specials.remove( LibraryRoom.class );
- specials.remove( StatueRoom.class );
- specials.remove( TreasuryRoom.class );
- specials.remove( VaultRoom.class );
- specials.remove( WeakFloorRoom.class );
-
- } else if (Dungeon.depth % 5 == 2 && specials.contains( LaboratoryRoom.class )) {
-
- temp = r;
- r = new LaboratoryRoom().set(temp);
- rooms.set(rooms.indexOf(temp), r);
-
- } else if (Dungeon.depth >= Dungeon.transmutation && specials.contains( MagicWellRoom.class )) {
-
- temp = r;
- r = new MagicWellRoom().set(temp);
- rooms.set(rooms.indexOf(temp), r);
-
- } else {
-
- int n = specials.size();
- temp = r;
- try {
- r = specials.get( Math.min( Random.Int( n ), Random.Int( n ) ) ).newInstance().set(temp);
- } catch (Exception e) {
- ShatteredPixelDungeon.reportException(e);
- }
- rooms.set(rooms.indexOf(temp), r);
- if (r instanceof WeakFloorRoom) {
- Level.weakFloorCreated = true;
- }
-
- }
-
- SpecialRoom.useType( r.getClass() );
- specials.remove( r.getClass() );
- specialRooms++;
-
- } else if (Random.Int( 2 ) == 0){
-
- ArrayList neigbours = new ArrayList<>();
- for (Room n : r.neigbours) {
- if (!r.connected.containsKey( n ) &&
- !SpecialRoom.SPECIALS.contains( n.getClass() ) &&
- !(n instanceof PitRoom)) {
-
- neigbours.add( n );
- }
- }
- if (neigbours.size() > 1) {
- r.connect( Random.element( neigbours ) );
- }
- }
- }
- }
-
- if (Level.pitRoomNeeded && !pitMade) return false;
-
- Class extends Room> tunnelType = TunnelRoom.class;
- if ((Dungeon.depth > 5 && Dungeon.depth <= 10) ||
- (Dungeon.depth > 15 && Dungeon.depth <= 20)){
- tunnelType = PassageRoom.class;
- }
-
- int count = 0;
- it = rooms.listIterator();
- while (it.hasNext()) {
- Room r = it.next();
- if (r.getClass().equals(Room.class)) {
- int connections = r.connected.size();
- if (connections == 0) {
-
- } else if (Random.Int( connections * connections ) == 0) {
- it.set(StandardRoom.createRoom().set(r));
- count++;
- } else {
- if (tunnelType == TunnelRoom.class){
- it.set(new TunnelRoom().set(r));
- } else {
- it.set(new PassageRoom().set(r));
- }
- }
- }
- }
-
- while (count < 6) {
- Room r = randomRoom( tunnelType, 20 );
- if (r != null) {
- rooms.set(rooms.indexOf(r), StandardRoom.createRoom().set(r));
- count++;
- } else {
- return false;
- }
- }*/
-
- return true;
- }
-
- private Room randomRoom( Class type, int tries ) {
- for (int i=0; i < tries; i++) {
- Room room = Random.element( rooms );
- if (room.getClass().equals(type)) {
- return room;
- }
- }
- return null;
- }
-}
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java
index 84134e233..6c2f0a864 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/scenes/WelcomeScene.java
@@ -25,7 +25,6 @@ import android.opengl.GLES20;
import com.shatteredpixel.shatteredpixeldungeon.Assets;
import com.shatteredpixel.shatteredpixeldungeon.Badges;
-import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
import com.shatteredpixel.shatteredpixeldungeon.Rankings;
import com.shatteredpixel.shatteredpixeldungeon.ShatteredPixelDungeon;
import com.shatteredpixel.shatteredpixeldungeon.effects.BannerSprites;
@@ -38,14 +37,11 @@ import com.watabou.noosa.Game;
import com.watabou.noosa.Image;
import com.watabou.noosa.audio.Sample;
-import java.util.ArrayList;
-import java.util.UUID;
-
import javax.microedition.khronos.opengles.GL10;
public class WelcomeScene extends PixelScene {
- private static int LATEST_UPDATE = 205;
+ private static int LATEST_UPDATE = ShatteredPixelDungeon.v0_6_1;
@Override
public void create() {
@@ -154,37 +150,19 @@ public class WelcomeScene extends PixelScene {
}
private void updateVersion(int previousVersion){
- //rankings conversion
- if (previousVersion <= ShatteredPixelDungeon.v0_4_1){
+
+ //update rankings, to update any data which may be outdated
+ if (previousVersion < LATEST_UPDATE){
try {
Rankings.INSTANCE.load();
- for (Rankings.Record rec : Rankings.INSTANCE.records) {
- if (rec.gameFile != null) {
- try {
- Dungeon.loadGame(rec.gameFile, false);
- rec.gameID = rec.gameFile.replaceAll("\\D", "");
-
- Rankings.INSTANCE.saveGameData(rec);
- } catch (Exception e) {
- rec.gameID = rec.gameFile.replaceAll("\\D", "");
- rec.gameData = null;
- }
-
- String file = rec.gameFile;
- rec.gameFile = "";
- Game.instance.deleteFile(file);
- } else if (rec.gameID == null) {
- rec.gameID = UUID.randomUUID().toString();
- }
- }
Rankings.INSTANCE.save();
} catch (Exception e) {
//if we encounter a fatal error, then just clear the rankings
Game.instance.deleteFile( Rankings.RANKINGS_FILE );
}
-
}
+ //remove changed badges
if (previousVersion <= ShatteredPixelDungeon.v0_6_0b){
Badges.disown(Badges.Badge.ALL_WANDS_IDENTIFIED);
Badges.disown(Badges.Badge.ALL_RINGS_IDENTIFIED);