No more hard-coded fixed size TileCollection. No more crashes because

you used a new tile.
This commit is contained in:
Zukero
2017-08-09 18:07:01 +02:00
parent 45d3ab9fb5
commit f8fd6888d7

View File

@@ -1,16 +1,17 @@
package com.gpl.rpg.AndorsTrail.resource.tiles;
import java.util.HashMap;
import java.util.HashSet;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.ScaleDrawable;
import android.os.AsyncTask;
import android.widget.ImageView;
import android.widget.TextView;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.ability.ActorConditionType;
@@ -20,11 +21,11 @@ import com.gpl.rpg.AndorsTrail.model.item.Inventory;
import com.gpl.rpg.AndorsTrail.model.item.ItemContainer;
import com.gpl.rpg.AndorsTrail.model.item.ItemContainer.ItemEntry;
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
import com.gpl.rpg.AndorsTrail.model.map.*;
import com.gpl.rpg.AndorsTrail.util.L;
import java.util.HashMap;
import java.util.HashSet;
import com.gpl.rpg.AndorsTrail.model.map.LayeredTileMap;
import com.gpl.rpg.AndorsTrail.model.map.MapObject;
import com.gpl.rpg.AndorsTrail.model.map.MonsterSpawnArea;
import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
import com.gpl.rpg.AndorsTrail.model.map.TMXMapTranslator;
public final class TileManager {
public static final int CHAR_HERO = 1;
@@ -61,7 +62,7 @@ public final class TileManager {
public final TileCache tileCache = new TileCache();
public final TileCollection preloadedTiles = new TileCollection(118);
public TileCollection preloadedTiles;// = new TileCollection(118);
public TileCollection currentMapTiles;
public TileCollection adjacentMapTiles;
private final HashSet<Integer> preloadedTileIDs = new HashSet<Integer>();
@@ -248,12 +249,13 @@ public final class TileManager {
public void loadPreloadedTiles(Resources r) {
int maxTileID = tileCache.getMaxTileID();
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
if (maxTileID > preloadedTiles.maxTileID) {
L.log("ERROR: TileManager.preloadedTiles needs to be initialized with at least " + maxTileID + " slots. Application will crash now.");
throw new IndexOutOfBoundsException("ERROR: TileManager.preloadedTiles needs to be initialized with at least " + maxTileID + " slots. Application will crash now.");
}
}
// if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
// if (maxTileID > preloadedTiles.maxTileID) {
// L.log("ERROR: TileManager.preloadedTiles needs to be initialized with at least " + maxTileID + " slots. Application will crash now.");
// throw new IndexOutOfBoundsException("ERROR: TileManager.preloadedTiles needs to be initialized with at least " + maxTileID + " slots. Application will crash now.");
// }
// }
preloadedTiles = new TileCollection(maxTileID);
for(int i = TileManager.CHAR_HERO; i <= maxTileID; ++i) {
preloadedTileIDs.add(i);
}