diff --git a/AndorsTrail/res/xml/blackwater_mountain0.tmx b/AndorsTrail/res/xml/blackwater_mountain0.tmx
index d598c42cf..3cca9675c 100644
--- a/AndorsTrail/res/xml/blackwater_mountain0.tmx
+++ b/AndorsTrail/res/xml/blackwater_mountain0.tmx
@@ -55,7 +55,7 @@
- eJx9VFsOgjAQLE3xHsqnX8bEfx9f/ineQC+gyAFWOZRH8Fjuwm4YSmWSCaHtTKfbhUfuWhA/K+aV+WLemQ94ptakIOOl6q66XvSx9pJYMwVSHUE+1Jb5eM3aj31umXMb5pNJwbkmpP0XmufD8wVkk3E/6+cE3wA5Q5dFMM87CmSfGvYzD/M2DdbVslpe80cdag2yh2STsxRwpn94h15n/vKUcctfh6GmhnOSrsPa7rn2O+XBD/cxT4I7RBTR+4rft+yxdB1PflgbZAWe6G13ZZljPwNF56R87Nn2SdQXJXuclRc/PKf5yp1/w9hTIHOp+/5M1L3SDPNE7yMavR/radyXtFdsDns5lSfG1D+BoPbHrK8t9idqU/8N/K6lRj/QYlHK
+ eJx9VEsSgjAMrZ3iPZSlK8cZ935W7hRvgBcQ5ABRD+URPJaJJMOjFN5MhqHNe31JA1Xm/iB+1hwlx5PjzlHBM5WTgqwXyis1X/gx95rImQIpj8AfcotsmLPxQ53bzLktx4ODgnPvkNZfqp8P7+fgTdb9vNsTfAP4DK0XwSJrQyDnNHCeaZi2cbCv5tX8mj7ykGuQM8Sb1JJDTWN4hY5n+vKUdfPfhD6ngTpJ87C3B+79XuPo++eYJsEdIvLofc3vO9ZYuTbOvt8bjBo0UdvuyjzHegaK6qRsqPmfk2guCta4aFx9v07U/YahpkDmIXXfn5G+S36tHhaJ2Ue89X5spvFc0lmxPZzllJ8YU/8Egt6fZl0PcD6Rm/pv4HctNf8AzgJRyg==
@@ -63,9 +63,9 @@
eJxjYGBgcGZlIAiIUTNUATl+g+kpokAvOihkRdDkmEuuvcQCkLto5bYiHGZTI93Rwr2kAEJ+IOQ+aoZ5IZI56GYWEukOGI3NX840TCMgAABj2w13
-
+
- eJwTZGBgEBzEGAaobR46wKeOEB+bWYSAIAGaWP349BDrd3IBpWYSG97kmkkNs/GlI2qaRao5yOZhM5sYd1ADUBLW5ORfAF3NCF8=
+ eJwTZGBgEBzEGAaobR46wKeOEB+bWYSAIAGaWP349BDrd3IBpWYSG97kmkkNs/GlI3LcSU7aJGQGLjFC+qkBKAlrcvIvAIBVCIE=
@@ -75,7 +75,7 @@
-
- eJytV1tuwjAQjKL0YBXiAJVQj9J/4kj88wHXLatmpWWYfdhlpEhg7N3Z2bFjpsnHYZ6m78dzfDyn+W/svLzOW8nYRsa8uYhPyCn4+YjjIu7FeQqt9WvP2TrWCzesS3he9zGvZqYvzpcYTPMM3hrM6emJ9d/IPJsj6otXp6K3VxWwnJGHKh623yUWi8O8OwLlczU5pAfMl+hdi7PxofJty3PcDFinrGf6Wo9k+8fzJ65bgWuPvpfAs9i/yIOyxtPXy9ucXvXC1mrjiSbYF7ZHLTw+Izyrsdi+sv3M3ifZ2ad72kN0LinXaA76RD+vZMwD04DxVl1Qwyx+z15WMF1H/Rr5LvOkRXY3GHkPCqSuzCcKPQeyXA18YHvQnM+oRdY35fyOc2RL9hR6zHKr3NksMr7/uRtuhfuQcseeV3VEfjYO9izTlQF5MF6RFlGebXn2ZsX3Nh7zpMRU747uQQvvXataZvdB/T16j9yMBh6q/yVQw+o6RbTPUfseL3jjVd+zOn4B8eZf4w==
+ eJytV1tqwzAQNME9WCk9QCH0KP2Pbch/PpLrNkszsJnOPuR2wGAr0j5mZyVlmmK8Habp8/6835/j4WfsNP+et4ixTYxFcxmv5NPw9ZLbZdya8wDk+vHwuQ6st9g4L4vz8hiLclb88nyzoTivEK1hnxGfnP9VzPM+srpEeQKjtepA+cw01NGw/zZbyo7S7h4gnovzYTVQumTtepycDhHvOj/brcB52nrFr9dI1T+RPnndQrGO8HtONMv1yzRoayJ+I79rUKtR+Fy9PeOE66J61COKR41X/HZtqb7y9azOk2rvQ09HyPYlxJrNYZ3gfRFjERQHKm7wwhxW9kd6GVC87tVrprtKkx7V3WDPOWiwvCqdANgHKl8r6cDXYA3emYuqboj5P/aRregp1piPrXNn86ji/cvdcGvchxA717zLI8fn7XDNKl4VOA4VV8ZF5mebn7XZ0b23pzRpNqHdvT3oEZ214LK6D+L37By5Og4idP9LMIfddUDW58z9iBai8a7uVR7fn2FgOQ==
diff --git a/AndorsTrail/res/xml/fields4.tmx b/AndorsTrail/res/xml/fields4.tmx
index 64e4143cf..22ac5dbb4 100644
--- a/AndorsTrail/res/xml/fields4.tmx
+++ b/AndorsTrail/res/xml/fields4.tmx
@@ -72,7 +72,7 @@
-
+
diff --git a/AndorsTrail/res/xml/fields5.tmx b/AndorsTrail/res/xml/fields5.tmx
index 9c09a992d..ce2566cc9 100644
--- a/AndorsTrail/res/xml/fields5.tmx
+++ b/AndorsTrail/res/xml/fields5.tmx
@@ -50,12 +50,12 @@
- eJztlEsOgzAMRLOg4ipUPUiOwP1vAkhUBTS2E/+y6WKExMIvHo9dX6Wsu6rwfZefqP9IC6EnA9V+MqrAo1hXUTXQGywc1K/kFcXU8KR+rT5q+uUy48FcAAPlOYLL5TeCSXkbkSHEQ3vryeV2hJqvhSntRMRcW/dxBJO7hZE8j5ukqf85NYp7aJ50ot7eyrZyNWyrv71cbYa5efX27ZGjXr53flv5UTvD8TPuEuJn3sIvd8QNzvI4M09/7l0bzfCXdQ==
+ eJztlLsNgDAMRFOAWAXEIBmB/TcBJBAfnT/YcdJQnJAo/OLz2blPadmUhe+ULlH/kUZCbwaq/WZkgUex7qJqoDd4OKhfySuKaeFJ/Xp9tPTLZaYEcwQMlOcILpffCCblbUSGEA/tbUkutyPUfD1MaSci5qrdxxZM7hZG8krcJEv9+VAr7q6hs4l6u5bt5VrYXn+/cq0ZlmYW0as2Lxp+6fxq+VE7w/Fr3CXEr3kLT26LG1zL45p5+rlPrcQwl3M=
- eJy1Vstug0AMRAi+Jf2D5trS5t5S+incQyLlzoH8bmOFUSaO92FCR0JEG7Njj2cNRZGHl/p6f60f/5O17bzelEXxPl+/l+vzcv2U6f3leWvvUBzzMNf3fMU4sce2ttetuCbAk+LSOFbX+766z2FT3zgFFp+HR9cl6OsbP4AcZL1ZiY9xqNIxbw6fxNBkPo9+Sq1fT3Byj1L+Zc6ltVqeiEE4xWdL9Q15sDfOiPWsV9+Y58fq3ksyjzYGr7fWZz2/xEsxH0w0HwQhT3m8pHVFvOg5kqbc12P1OAu9nCFd96pGQHLBPP+geE9POZbrORtzaDDWupnb01PEdpS7nrP/CejSKd0EfGZO82+pe7fCbGdAJ9F8UP09UQ4tvTd3C73EubPmAvYzzlJP79bcvmqvyx6t8Yzm1/CeG+119K8t7Z5ZnoMGuecmpQl6luLP2YvB+SHnifo3Uu0p/rVq1UDfQ/xLagX0txHPw4NxZpjfMw+Rn563Ap5T1oxk/tz3IzTm2D7ybcRAnDWbU4DGFtek9uMY6xvVM7+h8VmdPw1Lf6yx9jm1p3w8GOdIr+saJe4PM/pvzg==
+ eJy1Vstug0AMRAi+Jf2D5trS5t6m9FO4h0TKnQP53cYKo0yM92FCR0JEG7Njj2cNRZGHl/p2f63n/8nadlpvyqJ4n67f6/V5vX7K9P7yvLV3KI55mOt7umKc2GNb2+tWXBPgSXFpnKrb/VA95rCp75wCi8/Do+sSdPWdH0AOst6sxMc4VumYN4dPYmgyn0c/pdavJzi5Ryn/MufSWi1PxCCc4rOl+oY82BlnxHrWq2/M80P16CWZRxuD11vrs55f4qWYD0aaD4KQpzxe0roiXvQcSFPu66maz0IvZ0jXg6oRkFwwzz8o3tNTjuV6LsYc6o21duL29BSxLeWu5+x/Arq0SjcBn5nz9Fvq3q0w2xnQSTTvVX/PlMOe3pu7hV7i3FlzAfsZZ6mjd2tuX7XXZY99OddN82t4z432OvpncWt+eA4a5J6blCboWYo/Zy8G54ecR+rfQLWn+NeqVQN9D/EvqRXQ30Y8D4/GmWF+zzxEfnreCnhOWTOS+XPfj9CYY7vItxEDcdZsTgEaW1yj2o9jrG9Uz/yGxhd1/jQs/bHG2ufUnvJxb5wjva5rlLg/kwdwFg==
diff --git a/AndorsTrail/res/xml/flagstone0.tmx b/AndorsTrail/res/xml/flagstone0.tmx
index 30f85be45..2e41ccc9e 100644
--- a/AndorsTrail/res/xml/flagstone0.tmx
+++ b/AndorsTrail/res/xml/flagstone0.tmx
@@ -68,7 +68,7 @@
eJztVFsKwCAM8wre/7KDfQ1J06RWv1YQBppHY90cY8x/vXWaX63b+tG+mx3D3iq13x1PCL/Ll2l13qvix3kvGQ/ydOodMUznf0LRy3y5590+Vq+RTsTLMM7dVHKJfFY9KppKVrsz685317wq+19NR5uVe17xG2EUPnZ+N2v2lqI56NaN+kXVoct6OKnpZH2zX3YXmedMC2FRjx3aqBfEj/adzCJ/6zeb5cp8MD6EUzVVbkWzkqGjjbAPe5EkIQ==
-
+
@@ -81,6 +81,12 @@
+
+
+
+
+
+
diff --git a/AndorsTrail/res/xml/loneford4.tmx b/AndorsTrail/res/xml/loneford4.tmx
index 81ca54b31..f738f544b 100644
--- a/AndorsTrail/res/xml/loneford4.tmx
+++ b/AndorsTrail/res/xml/loneford4.tmx
@@ -68,7 +68,14 @@
eJwTZGBgEBzEmAGNJkaeFICuh5BbqGEPKf4m1x5izEXGAJjWBbc=
-
+
+
+
+
+
+
+
+
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/VisualEffectCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/VisualEffectCollection.java
index 15b46c2d6..73d958f34 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/VisualEffectCollection.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/VisualEffectCollection.java
@@ -25,7 +25,7 @@ public final class VisualEffectCollection {
private static VisualEffect createEffect(DynamicTileLoader loader, int drawableID, ConstRange frameRange, int duration, int textColor) {
int[] frameIconIDs = new int[frameRange.max - frameRange.current];
for(int i = 0; i < frameIconIDs.length; ++i) {
- frameIconIDs[i] = loader.getTileID(drawableID, frameRange.current + i);
+ frameIconIDs[i] = loader.prepareTileID(drawableID, frameRange.current + i);
}
return new VisualEffect(frameIconIDs, duration, textColor);
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/WorldSetup.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/WorldSetup.java
index 1cf3f42f4..8374a34e7 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/WorldSetup.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/WorldSetup.java
@@ -104,14 +104,20 @@ public final class WorldSetup {
}
private int continueWorld() {
- return Savegames.loadWorld(world, androidContext.get(), loadFromSlot);
+ Context ctx = androidContext.get();
+ int result = Savegames.loadWorld(world, ctx, loadFromSlot);
+ if (result == Savegames.LOAD_RESULT_SUCCESS) {
+ MovementController.loadCurrentTileMap(ctx.getResources(), world);
+ }
+ return result;
}
private void createNewWorld() {
+ Context ctx = androidContext.get();
world.model = new ModelContainer();
- world.model.player.initializeNewPlayer_(world.itemTypes, world.dropLists, newHeroName);
+ world.model.player.initializeNewPlayer(world.itemTypes, world.dropLists, newHeroName);
Controller.playerRested(world, null);
- MovementController.respawnPlayer(world);
+ MovementController.respawnPlayer(ctx.getResources(), world);
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ActorStatsController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ActorStatsController.java
index ce52d9567..a9c747944 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ActorStatsController.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ActorStatsController.java
@@ -16,7 +16,7 @@ import com.gpl.rpg.AndorsTrail.model.item.Inventory;
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnEquip;
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse;
import com.gpl.rpg.AndorsTrail.model.item.ItemType;
-import com.gpl.rpg.AndorsTrail.model.map.LayeredWorldMap;
+import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
import com.gpl.rpg.AndorsTrail.model.map.MonsterSpawnArea;
public class ActorStatsController {
@@ -136,7 +136,7 @@ public class ActorStatsController {
}
}
- public void applyConditionsToMonsters(LayeredWorldMap map, boolean isFullRound) {
+ public void applyConditionsToMonsters(PredefinedMap map, boolean isFullRound) {
for (MonsterSpawnArea a : map.spawnAreas) {
for (Monster m : a.monsters) {
applyConditionsToMonster(m, isFullRound);
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java
index b73597f45..34b8c76cd 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java
@@ -20,7 +20,7 @@ import com.gpl.rpg.AndorsTrail.model.actor.Monster;
import com.gpl.rpg.AndorsTrail.model.actor.MonsterType;
import com.gpl.rpg.AndorsTrail.model.item.ItemTraits_OnUse;
import com.gpl.rpg.AndorsTrail.model.item.Loot;
-import com.gpl.rpg.AndorsTrail.model.map.LayeredWorldMap;
+import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
import com.gpl.rpg.AndorsTrail.model.map.MonsterSpawnArea;
import com.gpl.rpg.AndorsTrail.util.Coord;
import com.gpl.rpg.AndorsTrail.view.MainView;
@@ -105,7 +105,7 @@ public final class CombatController {
}
}
public void setCombatSelection(Coord p) {
- LayeredWorldMap map = model.currentMap;
+ PredefinedMap map = model.currentMap;
Monster m = map.getMonsterAt(p);
if (m != null) {
setCombatSelection(m, p);
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Controller.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Controller.java
index 0f9799196..3f12c2025 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Controller.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/Controller.java
@@ -10,7 +10,7 @@ import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
-import com.gpl.rpg.AndorsTrail.model.map.LayeredWorldMap;
+import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
import com.gpl.rpg.AndorsTrail.model.map.MapObject;
import com.gpl.rpg.AndorsTrail.util.Coord;
import com.gpl.rpg.AndorsTrail.view.MainView;
@@ -67,8 +67,8 @@ public final class Controller {
player.addExperience(-lostExp);
model.statistics.addPlayerDeath(lostExp);
playerRested(world, null);
- MovementController.respawnPlayer(world);
final MainActivity act = view.mainActivity;
+ MovementController.respawnPlayer(act.getResources(), world);
act.updateStatus();
act.mainview.notifyMapChanged();
act.message(act.getResources().getString(R.string.combat_hero_dies, lostExp));
@@ -84,7 +84,7 @@ public final class Controller {
player.spawnPlace = area.id;
player.spawnMap = world.model.currentMap.name;
}
- for (LayeredWorldMap m : world.maps.predefinedMaps) {
+ for (PredefinedMap m : world.maps.predefinedMaps) {
if (m.visited) m.spawnAll(world);
}
}
@@ -102,7 +102,7 @@ public final class Controller {
}
public void resetMaps() {
- for (LayeredWorldMap m : world.maps.predefinedMaps) {
+ for (PredefinedMap m : world.maps.predefinedMaps) {
if (m == model.currentMap) continue;
m.resetIfNotRecentlyVisited();
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java
index a7b08d9eb..54c251ed9 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java
@@ -1,5 +1,7 @@
package com.gpl.rpg.AndorsTrail.controller;
+import android.content.res.Resources;
+
import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
import com.gpl.rpg.AndorsTrail.context.ViewContext;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
@@ -7,9 +9,10 @@ import com.gpl.rpg.AndorsTrail.model.ModelContainer;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
import com.gpl.rpg.AndorsTrail.model.item.Loot;
-import com.gpl.rpg.AndorsTrail.model.map.LayeredWorldMap;
+import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
import com.gpl.rpg.AndorsTrail.model.map.MapObject;
import com.gpl.rpg.AndorsTrail.model.map.MonsterSpawnArea;
+import com.gpl.rpg.AndorsTrail.model.map.TMXMapReader;
import com.gpl.rpg.AndorsTrail.util.Coord;
import com.gpl.rpg.AndorsTrail.util.L;
@@ -25,14 +28,14 @@ public final class MovementController {
}
public void placePlayerAt(int objectType, String mapName, String placeName, int offset_x, int offset_y) {
- placePlayerAt(world, objectType, mapName, placeName, offset_x, offset_y);
+ placePlayerAt(view.mainActivity.getResources(), world, objectType, mapName, placeName, offset_x, offset_y);
view.mainActivity.clearMessages();
view.mainActivity.mainview.notifyMapChanged();
}
- public static void placePlayerAt(final WorldContext world, int objectType, String mapName, String placeName, int offset_x, int offset_y) {
+ public static void placePlayerAt(final Resources res, final WorldContext world, int objectType, String mapName, String placeName, int offset_x, int offset_y) {
if (mapName == null || placeName == null) return;
- LayeredWorldMap newMap = world.maps.findPredefinedMap(mapName);
+ PredefinedMap newMap = world.maps.findPredefinedMap(mapName);
if (newMap == null) {
L.log("Cannot find map " + mapName);
return;
@@ -46,6 +49,7 @@ public final class MovementController {
if (model.currentMap != null) model.currentMap.updateLastVisitTime();
model.currentMap = newMap;
+ loadCurrentTileMap(res, world);
model.player.position.set(place.position.topLeft);
model.player.position.x += Math.min(offset_x, place.position.size.width-1);
model.player.position.y += Math.min(offset_y, place.position.size.height-1);
@@ -55,12 +59,12 @@ public final class MovementController {
else playerVisitsMap(world, newMap);
}
- private static void playerVisitsMapFirstTime(final WorldContext world, LayeredWorldMap m) {
+ private static void playerVisitsMapFirstTime(final WorldContext world, PredefinedMap m) {
m.spawnAll(world);
m.createAllContainerLoot();
m.visited = true;
}
- private static void playerVisitsMap(final WorldContext world, LayeredWorldMap m) {
+ private static void playerVisitsMap(final WorldContext world, PredefinedMap m) {
// Respawn everything if a certain time has elapsed.
if (!m.isRecentlyVisited()) m.spawnAll(world);
}
@@ -148,7 +152,7 @@ public final class MovementController {
public void moveToNextIfPossible(boolean handleEvents) {
final Player player = model.player;
- final LayeredWorldMap currentMap = model.currentMap;
+ final PredefinedMap currentMap = model.currentMap;
final Coord newPosition = player.nextPosition;
for (MapObject o : currentMap.eventObjects) {
@@ -173,8 +177,8 @@ public final class MovementController {
}
}
- public static void respawnPlayer(final WorldContext world) {
- placePlayerAt(world, MapObject.MAPEVENT_REST, world.model.player.spawnMap, world.model.player.spawnPlace, 0, 0);
+ public static void respawnPlayer(final Resources res, final WorldContext world) {
+ placePlayerAt(res, world, MapObject.MAPEVENT_REST, world.model.player.spawnMap, world.model.player.spawnPlace, 0, 0);
}
public static void moveBlockedActors(final WorldContext world) {
@@ -196,7 +200,7 @@ public final class MovementController {
// If any monsters somehow spawned on an unwalkable tile, we move the monster to a new position on the spawnarea
// This could happen if we change some tile to non-walkable in a future version.
- for (LayeredWorldMap map : world.maps.predefinedMaps) {
+ for (PredefinedMap map : world.maps.predefinedMaps) {
for (MonsterSpawnArea a : map.spawnAreas) {
for (Monster m : a.monsters) {
if (!world.model.currentMap.isWalkable(m.rectPosition)) {
@@ -208,4 +212,8 @@ public final class MovementController {
}
}
}
+
+ public static void loadCurrentTileMap(Resources res, WorldContext world) {
+ world.model.currentTileMap = TMXMapReader.readLayeredTileMap(res, world.tileStore, world.model.currentMap);
+ }
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ModelContainer.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ModelContainer.java
index 4ce01b862..ef873d48b 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ModelContainer.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ModelContainer.java
@@ -6,14 +6,16 @@ import java.io.IOException;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.actor.Player;
-import com.gpl.rpg.AndorsTrail.model.map.LayeredWorldMap;
+import com.gpl.rpg.AndorsTrail.model.map.LayeredTileMap;
+import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
public final class ModelContainer {
public final Player player;
public final InterfaceData uiSelections;
public final GameStatistics statistics;
- public LayeredWorldMap currentMap;
+ public PredefinedMap currentMap;
+ public LayeredTileMap currentTileMap;
public ModelContainer() {
player = new Player();
@@ -31,6 +33,7 @@ public final class ModelContainer {
this.uiSelections.selectedMonster = currentMap.getMonsterAt(uiSelections.selectedPosition);
}
this.statistics = new GameStatistics(src, world, fileversion);
+ this.currentTileMap = null;
}
public void writeToParcel(DataOutputStream dest, int flags) throws IOException {
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/ActorConditionTypeCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/ActorConditionTypeCollection.java
index 910f6ba5f..86de06a5e 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/ActorConditionTypeCollection.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/ability/ActorConditionTypeCollection.java
@@ -27,13 +27,13 @@ public class ActorConditionTypeCollection {
public void initialize(DynamicTileLoader tileLoader) {
CombatTraits t = new CombatTraits();
t.attackChance = 5;
- conditionTypes.add(new ActorConditionType("bless", "Bless", tileLoader.getTileID("items_tiles", 13+22*14), false, null, null, new AbilityModifierTraits(0, 0, 0, t)));
+ conditionTypes.add(new ActorConditionType("bless", "Bless", tileLoader.prepareTileID("items_tiles", 13+22*14), false, null, null, new AbilityModifierTraits(0, 0, 0, t)));
t = new CombatTraits();
t.damagePotential.set(2, 2);
- conditionTypes.add(new ActorConditionType("str", "Strength", tileLoader.getTileID("items_tiles", 0+25*14), false, null, null, new AbilityModifierTraits(0, 0, 0, t)));
+ conditionTypes.add(new ActorConditionType("str", "Strength", tileLoader.prepareTileID("items_tiles", 0+25*14), false, null, null, new AbilityModifierTraits(0, 0, 0, t)));
- conditionTypes.add(new ActorConditionType("regen", "Regeneration", tileLoader.getTileID("items_tiles", 7+22*14), false, new StatsModifierTraits(VisualEffectCollection.EFFECT_RESTORE_HP, new ConstRange(1, 1), null), null, null));
- conditionTypes.add(new ActorConditionType("poison", "Poison", tileLoader.getTileID("items_tiles", 4+24*14), true, new StatsModifierTraits(VisualEffectCollection.EFFECT_POISON, new ConstRange(-1, -1), null), null, null));
+ conditionTypes.add(new ActorConditionType("regen", "Regeneration", tileLoader.prepareTileID("items_tiles", 7+22*14), false, new StatsModifierTraits(VisualEffectCollection.EFFECT_RESTORE_HP, new ConstRange(1, 1), null), null, null));
+ conditionTypes.add(new ActorConditionType("poison", "Poison", tileLoader.prepareTileID("items_tiles", 4+24*14), true, new StatsModifierTraits(VisualEffectCollection.EFFECT_POISON, new ConstRange(-1, -1), null), null, null));
}
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java
index fac6647e4..cfc0eecd7 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/actor/Player.java
@@ -44,7 +44,7 @@ public final class Player extends Actor {
this.inventory = new Inventory();
}
- public void initializeNewPlayer_(ItemTypeCollection types, DropListCollection dropLists, String name) {
+ public void initializeNewPlayer(ItemTypeCollection types, DropListCollection dropLists, String name) {
CombatTraits combat = new CombatTraits();
combat.attackCost = 3;
combat.attackChance = 60;
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/LayeredTileMap.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/LayeredTileMap.java
new file mode 100644
index 000000000..a96b75e48
--- /dev/null
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/LayeredTileMap.java
@@ -0,0 +1,20 @@
+package com.gpl.rpg.AndorsTrail.model.map;
+
+import com.gpl.rpg.AndorsTrail.util.Size;
+
+public final class LayeredTileMap {
+ public static int LAYER_GROUND = 0;
+ public static int LAYER_OBJECTS = 1;
+ public static int LAYER_ABOVE = 2;
+
+ public final Size size;
+ public final MapLayer[] layers;
+
+ public LayeredTileMap(Size size, MapLayer[] layers) {
+ this.size = size;
+ assert(size.width > 0);
+ assert(size.height > 0);
+ assert(layers.length == 3);
+ this.layers = layers;
+ }
+}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/MapCollection.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/MapCollection.java
index 2833b31ef..35d5682e9 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/MapCollection.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/MapCollection.java
@@ -11,12 +11,12 @@ import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.util.L;
public final class MapCollection {
- public final ArrayList predefinedMaps = new ArrayList();
+ public final ArrayList predefinedMaps = new ArrayList();
public MapCollection() {}
- public LayeredWorldMap findPredefinedMap(String name) {
- for (LayeredWorldMap m : predefinedMaps) {
+ public PredefinedMap findPredefinedMap(String name) {
+ for (PredefinedMap m : predefinedMaps) {
if (m.name.equals(name)) return m;
}
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
@@ -26,7 +26,7 @@ public final class MapCollection {
}
public void reset() {
- for (LayeredWorldMap m : predefinedMaps) {
+ for (PredefinedMap m : predefinedMaps) {
m.reset();
}
}
@@ -34,7 +34,7 @@ public final class MapCollection {
// Selftest method. Not part of the game logic.
public void verifyData(WorldContext world) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- for (LayeredWorldMap m : predefinedMaps) {
+ for (PredefinedMap m : predefinedMaps) {
for (MapObject o : m.eventObjects) {
if (o.type == MapObject.MAPEVENT_NEWMAP) {
final String desc = "Map \"" + m.name + "\", place \"" + o.id + "\"";
@@ -43,7 +43,7 @@ public final class MapCollection {
} else if (o.place == null || o.place.length() <= 0) {
L.log("OPTIMIZE: " + desc + " has no destination place.");
} else {
- LayeredWorldMap destination = findPredefinedMap(o.map);
+ PredefinedMap destination = findPredefinedMap(o.map);
if (destination == null) {
L.log("WARNING: " + desc + " references non-existing destination map \"" + o.map + "\".");
continue;
@@ -110,7 +110,7 @@ public final class MapCollection {
// Selftest method. Not part of the game logic.
public void DEBUG_getRequiredQuestStages(HashSet requiredStages) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- for (LayeredWorldMap m : predefinedMaps) {
+ for (PredefinedMap m : predefinedMaps) {
for (MapObject o : m.eventObjects) {
if (o.type == MapObject.MAPEVENT_KEYAREA) {
if (o.requireQuestProgress == null) continue;
@@ -124,7 +124,7 @@ public final class MapCollection {
// Selftest method. Not part of the game logic.
public void DEBUG_getUsedPhrases(HashSet usedPhrases) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- for (LayeredWorldMap m : predefinedMaps) {
+ for (PredefinedMap m : predefinedMaps) {
for (MapObject o : m.eventObjects) {
if (o.type == MapObject.MAPEVENT_KEYAREA || o.type == MapObject.MAPEVENT_SIGN) {
if (o.id == null || o.id.length() <= 0) continue;
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/LayeredWorldMap.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/PredefinedMap.java
similarity index 94%
rename from AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/LayeredWorldMap.java
rename to AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/PredefinedMap.java
index 3bc782fbd..b770d7656 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/LayeredWorldMap.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/PredefinedMap.java
@@ -17,36 +17,31 @@ import com.gpl.rpg.AndorsTrail.util.CoordRect;
import com.gpl.rpg.AndorsTrail.util.L;
import com.gpl.rpg.AndorsTrail.util.Size;
-public final class LayeredWorldMap {
- public static int LAYER_GROUND = 0;
- public static int LAYER_OBJECTS = 1;
- public static int LAYER_ABOVE = 2;
+public final class PredefinedMap {
private static final long VISIT_RESET = 0;
+ public final int xmlResourceId;
public final String name;
public final Size size;
- public final MapLayer[] layers;
public final MapObject[] eventObjects;
public final MonsterSpawnArea[] spawnAreas;
public final ArrayList groundBags = new ArrayList();
- //public final boolean hasFOW;
- //public final boolean[][] isVisible;
- public final boolean[][] isWalkable;
public boolean visited = false;
public long lastVisitTime = VISIT_RESET;
+
+ public final boolean[][] isWalkable;
- public LayeredWorldMap(String name, Size size, MapLayer[] layers, boolean[][] isWalkable, MapObject[] eventObjects, MonsterSpawnArea[] spawnAreas, boolean hasFOW) {
+ public PredefinedMap(int xmlResourceId, String name, Size size, boolean[][] isWalkable, MapObject[] eventObjects, MonsterSpawnArea[] spawnAreas, boolean hasFOW) {
+ this.xmlResourceId = xmlResourceId;
this.name = name;
this.size = size;
this.eventObjects = eventObjects;
this.spawnAreas = spawnAreas;
assert(size.width > 0);
assert(size.height > 0);
- assert(layers.length == 3);
assert(isWalkable.length == size.width);
assert(isWalkable[0].length == size.height);
this.isWalkable = isWalkable;
- this.layers = layers;
}
public final boolean isWalkable(final Coord p) {
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapReader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapReader.java
index 936acc6a6..841ae3336 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapReader.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapReader.java
@@ -4,7 +4,6 @@ import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
import java.util.zip.GZIPInputStream;
import java.util.zip.InflaterInputStream;
@@ -17,6 +16,7 @@ import com.gpl.rpg.AndorsTrail.model.item.DropList;
import com.gpl.rpg.AndorsTrail.model.item.DropListCollection;
import com.gpl.rpg.AndorsTrail.model.quest.QuestProgress;
import com.gpl.rpg.AndorsTrail.resource.DynamicTileLoader;
+import com.gpl.rpg.AndorsTrail.resource.TileStore;
import com.gpl.rpg.AndorsTrail.util.Base64;
import com.gpl.rpg.AndorsTrail.util.Coord;
import com.gpl.rpg.AndorsTrail.util.CoordRect;
@@ -24,13 +24,18 @@ import com.gpl.rpg.AndorsTrail.util.L;
import com.gpl.rpg.AndorsTrail.util.Range;
import com.gpl.rpg.AndorsTrail.util.Size;
+import android.content.res.Resources;
import android.content.res.XmlResourceParser;
public final class TMXMapReader {
private ArrayList maps = new ArrayList();
- public TMXMap read(XmlResourceParser xrp, String name) {
- final TMXMap currentMap = new TMXMap();
+ public void read(Resources r, int xmlResourceId, String name) {
+ read(r.getXml(xmlResourceId), xmlResourceId, name);
+ }
+ private TMXMap read(XmlResourceParser xrp, int xmlResourceId, String name) {
+ final TMXMap map = new TMXMap();
+ map.xmlResourceId = xmlResourceId;
try {
// Map format: http://sourceforge.net/apps/mediawiki/tiled/index.php?title=Examining_the_map_format
int eventType;
@@ -38,106 +43,20 @@ public final class TMXMapReader {
if (eventType == XmlResourceParser.START_TAG) {
String s = xrp.getName();
if (s.equals("map")) {
- currentMap.name = name;
- currentMap.orientation = xrp.getAttributeValue(null, "orientation");
- currentMap.width = xrp.getAttributeIntValue(null, "width", -1);
- currentMap.height = xrp.getAttributeIntValue(null, "height", -1);
- currentMap.tilewidth = xrp.getAttributeIntValue(null, "tilewidth", -1);
- currentMap.tileheight = xrp.getAttributeIntValue(null, "tileheight", -1);
+ map.name = name;
+ map.orientation = xrp.getAttributeValue(null, "orientation");
+ map.width = xrp.getAttributeIntValue(null, "width", -1);
+ map.height = xrp.getAttributeIntValue(null, "height", -1);
+ map.tilewidth = xrp.getAttributeIntValue(null, "tilewidth", -1);
+ map.tileheight = xrp.getAttributeIntValue(null, "tileheight", -1);
readCurrentTagUntilEnd(xrp, new TagHandler() {
public void handleTag(XmlResourceParser xrp, String tagName) throws XmlPullParserException, IOException {
if (tagName.equals("tileset")) {
- final TMXTileSet ts = new TMXTileSet();
- currentMap.tileSets.add(ts);
- ts.firstgid = xrp.getAttributeIntValue(null, "firstgid", 1);
- ts.name = xrp.getAttributeValue(null, "name");
- ts.tilewidth = xrp.getAttributeIntValue(null, "tilewidth", -1);
- ts.tileheight = xrp.getAttributeIntValue(null, "tileheight", -1);
- readCurrentTagUntilEnd(xrp, new TagHandler() {
- public void handleTag(XmlResourceParser xrp, String tagName) {
- if (tagName.equals("image")) {
- ts.imageSource = xrp.getAttributeValue(null, "source");
- ts.imageName = ts.imageSource;
-
- int v = ts.imageName.lastIndexOf('/');
- if (v >= 0) ts.imageName = ts.imageName.substring(v+1);
- }
- }
- });
- } else if (tagName.equals("layer")) {
- final TMXLayer layer = new TMXLayer();
- currentMap.layers.add(layer);
- layer.name = xrp.getAttributeValue(null, "name");
- layer.width = xrp.getAttributeIntValue(null, "width", 1);
- layer.height = xrp.getAttributeIntValue(null, "height", 1);
- layer.gids = new int[layer.width][layer.height];
- readCurrentTagUntilEnd(xrp, new TagHandler() {
- public void handleTag(XmlResourceParser xrp, String tagName) throws XmlPullParserException, IOException {
- if (tagName.equals("data")) {
- String compressionMethod = xrp.getAttributeValue(null, "compression");
- xrp.next();
- String data = xrp.getText().trim();
- final int len = layer.width * layer.height * 4;
-
- ByteArrayInputStream bi = new ByteArrayInputStream(Base64.decode(data));
- if (compressionMethod == null) compressionMethod = "none";
-
- InflaterInputStream zi;
- if (compressionMethod.equalsIgnoreCase("zlib")) {
- zi = new InflaterInputStream(bi);
- } else if (compressionMethod.equalsIgnoreCase("gzip")) {
- zi = new GZIPInputStream(bi, len);
- } else {
- throw new IOException("Unhandled compression method \"" + compressionMethod + "\" for map layer " + layer.name);
- }
-
- byte[] buffer = new byte[len];
- copyStreamToBuffer(zi, buffer, len);
-
- zi.close();
- bi.close();
- int i = 0;
- for(int y = 0; y < layer.height; ++y) {
- for(int x = 0; x < layer.width; ++x, i += 4) {
- int gid = readIntLittleEndian(buffer, i);
- //if (gid != 0) L.log(getHexString(buffer, i) + " -> " + gid);
- layer.gids[x][y] = gid;
- //L.log("(" + x + "," + y + ") : " + layer.gids[x][y]);
- }
- }
- }
- }
- });
+ map.tileSets.add(readTMXTileSet(xrp));
} else if (tagName.equals("objectgroup")) {
- final TMXObjectGroup group = new TMXObjectGroup();
- currentMap.objectGroups.add(group);
- group.name = xrp.getAttributeValue(null, "name");
- group.width = xrp.getAttributeIntValue(null, "width", 1);
- group.height = xrp.getAttributeIntValue(null, "height", 1);
- readCurrentTagUntilEnd(xrp, new TagHandler() {
- public void handleTag(XmlResourceParser xrp, String tagName) throws XmlPullParserException, IOException {
- if (tagName.equals("object")) {
- final TMXObject object = new TMXObject();
- group.objects.add(object);
- object.name = xrp.getAttributeValue(null, "name");
- object.type = xrp.getAttributeValue(null, "type");
- object.x = xrp.getAttributeIntValue(null, "x", -1);
- object.y = xrp.getAttributeIntValue(null, "y", -1);
- object.width = xrp.getAttributeIntValue(null, "width", -1);
- object.height = xrp.getAttributeIntValue(null, "height", -1);
- readCurrentTagUntilEnd(xrp, new TagHandler() {
- public void handleTag(XmlResourceParser xrp, String tagName) {
- if (tagName.equals("property")) {
- final TMXProperty property = new TMXProperty();
- object.properties.add(property);
- property.name = xrp.getAttributeValue(null, "name");
- property.value = xrp.getAttributeValue(null, "value");
- }
- }
- });
- }
- }
- });
+ map.objectGroups.add(readTMXObjectGroup(xrp));
+ } else if (tagName.equals("layer")) {
+ map.layers.add(readTMXMapLayer(xrp));
}
}
});
@@ -150,8 +69,145 @@ public final class TMXMapReader {
} catch (IOException e) {
L.log("Error reading map \"" + name + "\": IOException : " + e.toString());
}
- maps.add(currentMap);
- return currentMap;
+ maps.add(map);
+ return map;
+ }
+
+
+ private static void readLayerMap(XmlResourceParser xrp, final String name, final TMXLayerMap map) {
+ try {
+ int eventType;
+ while ((eventType = xrp.next()) != XmlResourceParser.END_DOCUMENT) {
+ if (eventType == XmlResourceParser.START_TAG) {
+ String s = xrp.getName();
+ if (s.equals("map")) {
+ map.width = xrp.getAttributeIntValue(null, "width", -1);
+ map.height = xrp.getAttributeIntValue(null, "height", -1);
+ readCurrentTagUntilEnd(xrp, new TagHandler() {
+ public void handleTag(XmlResourceParser xrp, String tagName) throws XmlPullParserException, IOException {
+ if (tagName.equals("tileset")) {
+ map.tileSets.add(readTMXTileSet(xrp));
+ } else if (tagName.equals("layer")) {
+ map.layers.add(readTMXMapLayer(xrp));
+ }
+ }
+ });
+ }
+ }
+ }
+ xrp.close();
+ } catch (XmlPullParserException e) {
+ L.log("Error reading layered map \"" + name + "\": XmlPullParserException : " + e.toString());
+ } catch (IOException e) {
+ L.log("Error reading layered map \"" + name + "\": IOException : " + e.toString());
+ }
+ }
+
+
+ private static TMXTileSet readTMXTileSet(XmlResourceParser xrp) throws XmlPullParserException, IOException {
+ final TMXTileSet ts = new TMXTileSet();
+ ts.firstgid = xrp.getAttributeIntValue(null, "firstgid", 1);
+ ts.name = xrp.getAttributeValue(null, "name");
+ ts.tilewidth = xrp.getAttributeIntValue(null, "tilewidth", -1);
+ ts.tileheight = xrp.getAttributeIntValue(null, "tileheight", -1);
+ readCurrentTagUntilEnd(xrp, new TagHandler() {
+ public void handleTag(XmlResourceParser xrp, String tagName) {
+ if (tagName.equals("image")) {
+ ts.imageSource = xrp.getAttributeValue(null, "source");
+ ts.imageName = ts.imageSource;
+
+ int v = ts.imageName.lastIndexOf('/');
+ if (v >= 0) ts.imageName = ts.imageName.substring(v+1);
+ }
+ }
+ });
+ return ts;
+ }
+
+ private static TMXObjectGroup readTMXObjectGroup(XmlResourceParser xrp) throws XmlPullParserException, IOException {
+ final TMXObjectGroup group = new TMXObjectGroup();
+ group.name = xrp.getAttributeValue(null, "name");
+ group.width = xrp.getAttributeIntValue(null, "width", 1);
+ group.height = xrp.getAttributeIntValue(null, "height", 1);
+ readCurrentTagUntilEnd(xrp, new TagHandler() {
+ public void handleTag(XmlResourceParser xrp, String tagName) throws XmlPullParserException, IOException {
+ if (tagName.equals("object")) {
+ group.objects.add(readTMXObject(xrp));
+ }
+ }
+ });
+ return group;
+ }
+
+ private static TMXObject readTMXObject(XmlResourceParser xrp) throws XmlPullParserException, IOException {
+ final TMXObject object = new TMXObject();
+ object.name = xrp.getAttributeValue(null, "name");
+ object.type = xrp.getAttributeValue(null, "type");
+ object.x = xrp.getAttributeIntValue(null, "x", -1);
+ object.y = xrp.getAttributeIntValue(null, "y", -1);
+ object.width = xrp.getAttributeIntValue(null, "width", -1);
+ object.height = xrp.getAttributeIntValue(null, "height", -1);
+ readCurrentTagUntilEnd(xrp, new TagHandler() {
+ public void handleTag(XmlResourceParser xrp, String tagName) {
+ if (tagName.equals("property")) {
+ final TMXProperty property = new TMXProperty();
+ object.properties.add(property);
+ property.name = xrp.getAttributeValue(null, "name");
+ property.value = xrp.getAttributeValue(null, "value");
+ }
+ }
+ });
+ return object;
+ }
+
+ private static TMXLayer readTMXMapLayer(XmlResourceParser xrp) throws XmlPullParserException, IOException {
+ final TMXLayer layer = new TMXLayer();
+ layer.name = xrp.getAttributeValue(null, "name");
+ layer.width = xrp.getAttributeIntValue(null, "width", 1);
+ layer.height = xrp.getAttributeIntValue(null, "height", 1);
+ layer.gids = new int[layer.width][layer.height];
+ readCurrentTagUntilEnd(xrp, new TagHandler() {
+ public void handleTag(XmlResourceParser xrp, String tagName) throws XmlPullParserException, IOException {
+ if (tagName.equals("data")) {
+ readTMXMapLayerData(xrp, layer);
+ }
+ }
+ });
+ return layer;
+ }
+
+ private static void readTMXMapLayerData(XmlResourceParser xrp, final TMXLayer layer) throws XmlPullParserException, IOException {
+ String compressionMethod = xrp.getAttributeValue(null, "compression");
+ xrp.next();
+ String data = xrp.getText().trim();
+ final int len = layer.width * layer.height * 4;
+
+ ByteArrayInputStream bi = new ByteArrayInputStream(Base64.decode(data));
+ if (compressionMethod == null) compressionMethod = "none";
+
+ InflaterInputStream zi;
+ if (compressionMethod.equalsIgnoreCase("zlib")) {
+ zi = new InflaterInputStream(bi);
+ } else if (compressionMethod.equalsIgnoreCase("gzip")) {
+ zi = new GZIPInputStream(bi, len);
+ } else {
+ throw new IOException("Unhandled compression method \"" + compressionMethod + "\" for map layer " + layer.name);
+ }
+
+ byte[] buffer = new byte[len];
+ copyStreamToBuffer(zi, buffer, len);
+
+ zi.close();
+ bi.close();
+ int i = 0;
+ for(int y = 0; y < layer.height; ++y) {
+ for(int x = 0; x < layer.width; ++x, i += 4) {
+ int gid = readIntLittleEndian(buffer, i);
+ //if (gid != 0) L.log(getHexString(buffer, i) + " -> " + gid);
+ layer.gids[x][y] = gid;
+ //L.log("(" + x + "," + y + ") : " + layer.gids[x][y]);
+ }
+ }
}
private static void copyStreamToBuffer(InflaterInputStream zi, byte[] buffer, int len) throws IOException {
@@ -202,11 +258,11 @@ public final class TMXMapReader {
(buffer[offset + 3] << 24) & 0xff000000;
}
- public ArrayList transformMaps(DynamicTileLoader tileLoader, MonsterTypeCollection monsterTypes, DropListCollection dropLists) {
+ public ArrayList transformMaps(DynamicTileLoader tileLoader, MonsterTypeCollection monsterTypes, DropListCollection dropLists) {
return transformMaps(maps, tileLoader, monsterTypes, dropLists);
}
- public ArrayList transformMaps(Collection maps, DynamicTileLoader tileLoader, MonsterTypeCollection monsterTypes, DropListCollection dropLists) {
- ArrayList result = new ArrayList();
+ public ArrayList transformMaps(Collection maps, DynamicTileLoader tileLoader, MonsterTypeCollection monsterTypes, DropListCollection dropLists) {
+ ArrayList result = new ArrayList();
for (TMXMap m : maps) {
assert(m.name != null);
@@ -221,36 +277,18 @@ public final class TMXMapReader {
}
}
final Size mapSize = new Size(m.width, m.height);
- MapLayer[] layers = new MapLayer[] {
- new MapLayer(mapSize)
- ,new MapLayer(mapSize)
- ,new MapLayer(mapSize)
- };
for (TMXLayer layer : m.layers) {
- int ixMapLayer = -2;
String layerName = layer.name;
assert(layerName != null);
assert(layerName.length() > 0);
layerName = layerName.toLowerCase();
- if (layerName.startsWith("object")) {
- ixMapLayer = LayeredWorldMap.LAYER_OBJECTS;
- } else if (layerName.startsWith("ground")) {
- ixMapLayer = LayeredWorldMap.LAYER_GROUND;
- } else if (layerName.startsWith("above")) {
- ixMapLayer = LayeredWorldMap.LAYER_ABOVE;
- } else if (layerName.startsWith("walk")) {
- ixMapLayer = -1;
- } else if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
- L.log("OPTIMIZE: cannot handle layer " + layerName + " from map " + m.name);
- continue;
- }
for (int y = 0; y < layer.height; ++y) {
for (int x = 0; x < layer.width; ++x) {
int gid = layer.gids[x][y];
if (gid <= 0) continue;
- if (ixMapLayer == -1) {
+ if (layerName.startsWith("walk")) {
isWalkable[x][y] = false;
} else {
Pair p = getTile(m, gid);
@@ -258,7 +296,7 @@ public final class TMXMapReader {
String tilesetName = (String) p.first;
int localId = (Integer) p.second;
- layers[ixMapLayer].tiles[x][y] = tileLoader.getTileID(tilesetName, localId);
+ tileLoader.prepareTileID(tilesetName, localId);
}
}
}
@@ -370,13 +408,60 @@ public final class TMXMapReader {
MonsterSpawnArea[] _spawnAreas = new MonsterSpawnArea[spawnAreas.size()];
_spawnAreas = spawnAreas.toArray(_spawnAreas);
- result.add(new LayeredWorldMap(m.name, mapSize, layers, isWalkable, _eventObjects, _spawnAreas, false));
+ result.add(new PredefinedMap(m.xmlResourceId, m.name, mapSize, isWalkable, _eventObjects, _spawnAreas, false));
}
return result;
}
- private static Pair getTile(final TMXMap map, final int gid) {
+
+ private static LayeredTileMap transformMap(TMXLayerMap map, TileStore tileStore) {
+ final Size mapSize = new Size(map.width, map.height);
+ final MapLayer[] layers = new MapLayer[] {
+ new MapLayer(mapSize)
+ ,new MapLayer(mapSize)
+ ,new MapLayer(mapSize)
+ };
+ for (TMXLayer layer : map.layers) {
+ int ixMapLayer = -2;
+ String layerName = layer.name;
+ assert(layerName != null);
+ assert(layerName.length() > 0);
+ layerName = layerName.toLowerCase();
+ if (layerName.startsWith("object")) {
+ ixMapLayer = LayeredTileMap.LAYER_OBJECTS;
+ } else if (layerName.startsWith("ground")) {
+ ixMapLayer = LayeredTileMap.LAYER_GROUND;
+ } else if (layerName.startsWith("above")) {
+ ixMapLayer = LayeredTileMap.LAYER_ABOVE;
+ } else {
+ continue;
+ }
+
+ for (int y = 0; y < layer.height; ++y) {
+ for (int x = 0; x < layer.width; ++x) {
+ int gid = layer.gids[x][y];
+ if (gid <= 0) continue;
+
+ Pair p = getTile(map, gid);
+ if (p == null) continue;
+
+ String tilesetName = (String) p.first;
+ int localId = (Integer) p.second;
+ layers[ixMapLayer].tiles[x][y] = tileStore.getTileID(tilesetName, localId);
+ }
+ }
+ }
+ return new LayeredTileMap(mapSize, layers);
+ }
+
+ public static LayeredTileMap readLayeredTileMap(Resources res, TileStore tileStore, PredefinedMap map) {
+ TMXLayerMap result = new TMXLayerMap();
+ readLayerMap(res.getXml(map.xmlResourceId), map.name, result);
+ return transformMap(result, tileStore);
+ }
+
+ private static Pair getTile(final TMXLayerMap map, final int gid) {
for(int i = map.tileSets.size() - 1; i >= 0; --i) {
TMXTileSet ts = map.tileSets.get(i);
if (ts.firstgid <= gid) {
@@ -387,7 +472,7 @@ public final class TMXMapReader {
return null;
}
- private static class Pair {
+ private static final class Pair {
public final T1 first;
public final T2 second;
public Pair(T1 first, T2 second) {
@@ -396,18 +481,21 @@ public final class TMXMapReader {
}
}
- public class TMXMap {
+ public static final class TMXMap extends TMXLayerMap {
+ public int xmlResourceId;
public String name;
public String orientation;
- public int width;
- public int height;
public int tilewidth;
public int tileheight;
- public List tileSets = new ArrayList();
- public List layers = new ArrayList();
- public List objectGroups = new ArrayList();
+ public ArrayList objectGroups = new ArrayList();
}
- public class TMXTileSet {
+ public static class TMXLayerMap {
+ public int width;
+ public int height;
+ public ArrayList tileSets = new ArrayList();
+ public ArrayList layers = new ArrayList();
+ }
+ public static final class TMXTileSet {
public int firstgid;
public String name;
public int tilewidth;
@@ -415,28 +503,28 @@ public final class TMXMapReader {
public String imageSource;
public String imageName;
}
- public class TMXLayer {
+ public static final class TMXLayer {
public String name;
public int width;
public int height;
public int[][] gids;
}
- public class TMXObjectGroup {
+ public static final class TMXObjectGroup {
public String name;
public int width;
public int height;
- public List objects = new ArrayList();
+ public ArrayList objects = new ArrayList();
}
- public class TMXObject {
+ public static final class TMXObject {
public String name;
public String type;
public int x;
public int y;
public int width;
public int height;
- public List properties = new ArrayList();
+ public ArrayList properties = new ArrayList();
}
- public class TMXProperty {
+ public static final class TMXProperty {
public String name;
public String value;
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/DynamicTileLoader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/DynamicTileLoader.java
index 405f571dc..34844b1f9 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/DynamicTileLoader.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/DynamicTileLoader.java
@@ -49,7 +49,7 @@ public final class DynamicTileLoader {
return null;
}
- public int getTileID(int tilesetImageResourceID, int localId) {
+ public int prepareTileID(int tilesetImageResourceID, int localId) {
TilesetBitmap b = getTilesetBitmap(tilesetImageResourceID);
if (b == null) {
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
@@ -57,13 +57,13 @@ public final class DynamicTileLoader {
}
return currentTileStoreIndex-1;
}
- return getTileID(b, localId);
+ return prepareTileID(b, localId);
}
- public int getTileID(String tilesetName, int localId) {
+ public int prepareTileID(String tilesetName, int localId) {
for (TilesetBitmap b : preparedTilesets) {
if (b.tilesetName.equals(tilesetName)) {
- return getTileID(b, localId);
+ return prepareTileID(b, localId);
}
}
if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) {
@@ -83,7 +83,7 @@ public final class DynamicTileLoader {
return new Size(1, 1);
}
- private int getTileID(TilesetBitmap tileset, int localId) {
+ private int prepareTileID(TilesetBitmap tileset, int localId) {
int tileStoreIndex = 0;
if (tileset.tilesToLoad.containsKey(localId)) {
tileStoreIndex = tileset.tilesToLoad.get(localId);
@@ -120,8 +120,10 @@ public final class DynamicTileLoader {
Bitmap tilesetImage = createTilesetImage(b);
for (int localId : b.tilesToLoad.keySet()) {
int tileStoreIndex = b.tilesToLoad.get(localId);
- store.bitmaps[tileStoreIndex] = createTileFromTileset(tilesetImage, b, localId);
- if (store.bitmaps[tileStoreIndex] == tilesetImage) recycle = false;
+ Bitmap tile = createTileFromTileset(tilesetImage, b, localId);
+ if (tile == tilesetImage) recycle = false;
+
+ store.setBitmap(tileStoreIndex, tile, b.tilesetName, localId);
}
if (recycle) tilesetImage.recycle();
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java
index 16cfc78cd..a8eb442dd 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/ResourceLoader.java
@@ -39,10 +39,10 @@ public final class ResourceLoader {
loader.prepareTileset(R.drawable.char_hero, "char_hero", src_sz1x1, defaultTileSize);
loader.prepareTileset(R.drawable.map_tiles_1_2, "map_tiles_1_2", src_mapTileSize, defaultTileSize);
loader.prepareTileset(R.drawable.map_tiles_2_7, "map_tiles_2_7", src_mapTileSize, defaultTileSize);
- /*tiles.iconID_CHAR_HERO = */loader.getTileID(R.drawable.char_hero, 0);
- /*tiles.iconID_attackselect = */loader.getTileID(R.drawable.map_tiles_1_2, 6+16*5);
- /*tiles.iconID_moveselect = */loader.getTileID(R.drawable.map_tiles_1_2, 7+16*5);
- /*tiles.iconID_groundbag = */loader.getTileID(R.drawable.map_tiles_2_7, 13+16*0);
+ /*tiles.iconID_CHAR_HERO = */loader.prepareTileID(R.drawable.char_hero, 0);
+ /*tiles.iconID_attackselect = */loader.prepareTileID(R.drawable.map_tiles_1_2, 6+16*5);
+ /*tiles.iconID_moveselect = */loader.prepareTileID(R.drawable.map_tiles_1_2, 7+16*5);
+ /*tiles.iconID_groundbag = */loader.prepareTileID(R.drawable.map_tiles_2_7, 13+16*0);
loader.flush();
@@ -245,193 +245,193 @@ public final class ResourceLoader {
TMXMapReader mapReader = new TMXMapReader();
if (AndorsTrailApplication.DEVELOPMENT_DEBUGRESOURCES) {
- mapReader.read(r.getXml(R.xml.debugmap), "debugmap");
+ mapReader.read(r, R.xml.debugmap, "debugmap");
} else {
- mapReader.read(r.getXml(R.xml.home), "home");
- mapReader.read(r.getXml(R.xml.crossglen), "crossglen");
- mapReader.read(r.getXml(R.xml.crossglen_farmhouse), "crossglen_farmhouse");
- mapReader.read(r.getXml(R.xml.crossglen_farmhouse_basement), "crossglen_farmhouse_basement");
- mapReader.read(r.getXml(R.xml.crossglen_hall), "crossglen_hall");
- mapReader.read(r.getXml(R.xml.crossglen_smith), "crossglen_smith");
- mapReader.read(r.getXml(R.xml.crossglen_cave), "crossglen_cave");
- mapReader.read(r.getXml(R.xml.wild1), "wild1");
- mapReader.read(r.getXml(R.xml.wild2), "wild2");
- mapReader.read(r.getXml(R.xml.wild3), "wild3");
- mapReader.read(r.getXml(R.xml.jan_pitcave1), "jan_pitcave1");
- mapReader.read(r.getXml(R.xml.jan_pitcave2), "jan_pitcave2");
- mapReader.read(r.getXml(R.xml.jan_pitcave3), "jan_pitcave3");
- mapReader.read(r.getXml(R.xml.fallhaven_nw), "fallhaven_nw");
- mapReader.read(r.getXml(R.xml.snakecave1), "snakecave1");
- mapReader.read(r.getXml(R.xml.snakecave2), "snakecave2");
- mapReader.read(r.getXml(R.xml.snakecave3), "snakecave3");
- mapReader.read(r.getXml(R.xml.wild4), "wild4");
- mapReader.read(r.getXml(R.xml.hauntedhouse1), "hauntedhouse1");
- mapReader.read(r.getXml(R.xml.hauntedhouse2), "hauntedhouse2");
- mapReader.read(r.getXml(R.xml.fallhaven_ne), "fallhaven_ne");
- mapReader.read(r.getXml(R.xml.fallhaven_church), "fallhaven_church");
- mapReader.read(r.getXml(R.xml.fallhaven_barn), "fallhaven_barn");
- mapReader.read(r.getXml(R.xml.fallhaven_potions), "fallhaven_potions");
- mapReader.read(r.getXml(R.xml.fallhaven_gravedigger), "fallhaven_gravedigger");
- mapReader.read(r.getXml(R.xml.fallhaven_clothes), "fallhaven_clothes");
- mapReader.read(r.getXml(R.xml.fallhaven_arcir), "fallhaven_arcir");
- mapReader.read(r.getXml(R.xml.fallhaven_arcir_basement), "fallhaven_arcir_basement");
- mapReader.read(r.getXml(R.xml.fallhaven_athamyr), "fallhaven_athamyr");
- mapReader.read(r.getXml(R.xml.fallhaven_rigmor), "fallhaven_rigmor");
- mapReader.read(r.getXml(R.xml.fallhaven_tavern), "fallhaven_tavern");
- mapReader.read(r.getXml(R.xml.fallhaven_prison), "fallhaven_prison");
- mapReader.read(r.getXml(R.xml.fallhaven_derelict), "fallhaven_derelict");
- mapReader.read(r.getXml(R.xml.fallhaven_nocmar), "fallhaven_nocmar");
- mapReader.read(r.getXml(R.xml.catacombs1), "catacombs1");
- mapReader.read(r.getXml(R.xml.catacombs2), "catacombs2");
- mapReader.read(r.getXml(R.xml.catacombs3), "catacombs3");
- mapReader.read(r.getXml(R.xml.catacombs4), "catacombs4");
- mapReader.read(r.getXml(R.xml.hauntedhouse3), "hauntedhouse3");
- mapReader.read(r.getXml(R.xml.hauntedhouse4), "hauntedhouse4");
- mapReader.read(r.getXml(R.xml.fallhaven_sw), "fallhaven_sw");
- mapReader.read(r.getXml(R.xml.wild5), "wild5");
- mapReader.read(r.getXml(R.xml.wild6), "wild6");
- mapReader.read(r.getXml(R.xml.wild6_house), "wild6_house");
- mapReader.read(r.getXml(R.xml.wild7), "wild7");
- mapReader.read(r.getXml(R.xml.wild8), "wild8");
- mapReader.read(r.getXml(R.xml.wild9), "wild9");
- mapReader.read(r.getXml(R.xml.wild10), "wild10");
- mapReader.read(r.getXml(R.xml.flagstone0), "flagstone0");
- mapReader.read(r.getXml(R.xml.flagstone_inner), "flagstone_inner");
- mapReader.read(r.getXml(R.xml.flagstone_upper), "flagstone_upper");
- mapReader.read(r.getXml(R.xml.flagstone1), "flagstone1");
- mapReader.read(r.getXml(R.xml.flagstone2), "flagstone2");
- mapReader.read(r.getXml(R.xml.flagstone3), "flagstone3");
- mapReader.read(r.getXml(R.xml.flagstone4), "flagstone4");
- mapReader.read(r.getXml(R.xml.wild11), "wild11");
- mapReader.read(r.getXml(R.xml.wild12), "wild12");
- mapReader.read(r.getXml(R.xml.wild11_clearing), "wild11_clearing");
- mapReader.read(r.getXml(R.xml.clearing_level1), "clearing_level1");
- mapReader.read(r.getXml(R.xml.clearing_level2), "clearing_level2");
- mapReader.read(r.getXml(R.xml.fallhaven_se), "fallhaven_se");
- mapReader.read(r.getXml(R.xml.fallhaven_lumberjack), "fallhaven_lumberjack");
- mapReader.read(r.getXml(R.xml.fallhaven_alaun), "fallhaven_alaun");
- mapReader.read(r.getXml(R.xml.fallhaven_storage), "fallhaven_storage");
- mapReader.read(r.getXml(R.xml.fallhaven_farmer), "fallhaven_farmer");
- mapReader.read(r.getXml(R.xml.wild13), "wild13");
- mapReader.read(r.getXml(R.xml.wild14), "wild14");
- mapReader.read(r.getXml(R.xml.wild14_cave), "wild14_cave");
- mapReader.read(r.getXml(R.xml.wild14_clearing), "wild14_clearing");
- mapReader.read(r.getXml(R.xml.wild15), "wild15");
- mapReader.read(r.getXml(R.xml.wild15_house), "wild15_house");
- mapReader.read(r.getXml(R.xml.road1), "road1");
- mapReader.read(r.getXml(R.xml.foaming_flask), "foaming_flask");
- mapReader.read(r.getXml(R.xml.fallhaven_derelict2), "fallhaven_derelict2");
- mapReader.read(r.getXml(R.xml.vilegard_n), "vilegard_n");
- mapReader.read(r.getXml(R.xml.vilegard_s), "vilegard_s");
- mapReader.read(r.getXml(R.xml.vilegard_sw), "vilegard_sw");
- mapReader.read(r.getXml(R.xml.vilegard_ogam), "vilegard_ogam");
- mapReader.read(r.getXml(R.xml.vilegard_chapel), "vilegard_chapel");
- mapReader.read(r.getXml(R.xml.vilegard_tavern), "vilegard_tavern");
- mapReader.read(r.getXml(R.xml.vilegard_armorer), "vilegard_armorer");
- mapReader.read(r.getXml(R.xml.vilegard_smith), "vilegard_smith");
- mapReader.read(r.getXml(R.xml.vilegard_wrye), "vilegard_wrye");
- mapReader.read(r.getXml(R.xml.vilegard_kaori), "vilegard_kaori");
- mapReader.read(r.getXml(R.xml.vilegard_erttu), "vilegard_erttu");
- mapReader.read(r.getXml(R.xml.road2), "road2");
- mapReader.read(r.getXml(R.xml.road3), "road3");
- mapReader.read(r.getXml(R.xml.road4), "road4");
- mapReader.read(r.getXml(R.xml.road4_gargoylecave), "road4_gargoylecave");
- mapReader.read(r.getXml(R.xml.road5), "road5");
- mapReader.read(r.getXml(R.xml.road5_house), "road5_house");
- mapReader.read(r.getXml(R.xml.gargoylecave1), "gargoylecave1");
- mapReader.read(r.getXml(R.xml.gargoylecave2), "gargoylecave2");
- mapReader.read(r.getXml(R.xml.gargoylecave3), "gargoylecave3");
- mapReader.read(r.getXml(R.xml.gargoylecave4), "gargoylecave4");
- mapReader.read(r.getXml(R.xml.blackwater_mountain0), "blackwater_mountain0");
- mapReader.read(r.getXml(R.xml.blackwater_mountain1), "blackwater_mountain1");
- mapReader.read(r.getXml(R.xml.blackwater_mountain2), "blackwater_mountain2");
- mapReader.read(r.getXml(R.xml.blackwater_mountain3), "blackwater_mountain3");
- mapReader.read(r.getXml(R.xml.blackwater_mountain4), "blackwater_mountain4");
- mapReader.read(r.getXml(R.xml.blackwater_mountain5), "blackwater_mountain5");
- mapReader.read(r.getXml(R.xml.blackwater_mountain6), "blackwater_mountain6");
- mapReader.read(r.getXml(R.xml.blackwater_mountain7), "blackwater_mountain7");
- mapReader.read(r.getXml(R.xml.blackwater_mountain8), "blackwater_mountain8");
- mapReader.read(r.getXml(R.xml.blackwater_mountain9), "blackwater_mountain9");
- mapReader.read(r.getXml(R.xml.blackwater_mountain10), "blackwater_mountain10");
- mapReader.read(r.getXml(R.xml.blackwater_mountain11), "blackwater_mountain11");
- mapReader.read(r.getXml(R.xml.blackwater_mountain12), "blackwater_mountain12");
- mapReader.read(r.getXml(R.xml.blackwater_mountain13), "blackwater_mountain13");
- mapReader.read(r.getXml(R.xml.blackwater_mountain14), "blackwater_mountain14");
- mapReader.read(r.getXml(R.xml.blackwater_mountain15), "blackwater_mountain15");
- mapReader.read(r.getXml(R.xml.blackwater_mountain16), "blackwater_mountain16");
- mapReader.read(r.getXml(R.xml.blackwater_mountain17), "blackwater_mountain17");
- mapReader.read(r.getXml(R.xml.blackwater_mountain18), "blackwater_mountain18");
- mapReader.read(r.getXml(R.xml.blackwater_mountain19), "blackwater_mountain19");
- mapReader.read(r.getXml(R.xml.blackwater_mountain20), "blackwater_mountain20");
- mapReader.read(r.getXml(R.xml.blackwater_mountain21), "blackwater_mountain21");
- mapReader.read(r.getXml(R.xml.blackwater_mountain22), "blackwater_mountain22");
- mapReader.read(r.getXml(R.xml.blackwater_mountain23), "blackwater_mountain23");
- mapReader.read(r.getXml(R.xml.blackwater_mountain24), "blackwater_mountain24");
- mapReader.read(r.getXml(R.xml.blackwater_mountain25), "blackwater_mountain25");
- mapReader.read(r.getXml(R.xml.blackwater_mountain26), "blackwater_mountain26");
- mapReader.read(r.getXml(R.xml.blackwater_mountain27), "blackwater_mountain27");
- mapReader.read(r.getXml(R.xml.blackwater_mountain28), "blackwater_mountain28");
- mapReader.read(r.getXml(R.xml.blackwater_mountain29), "blackwater_mountain29");
- mapReader.read(r.getXml(R.xml.blackwater_mountain30), "blackwater_mountain30");
- mapReader.read(r.getXml(R.xml.blackwater_mountain31), "blackwater_mountain31");
- mapReader.read(r.getXml(R.xml.blackwater_mountain32), "blackwater_mountain32");
- mapReader.read(r.getXml(R.xml.blackwater_mountain33), "blackwater_mountain33");
- mapReader.read(r.getXml(R.xml.blackwater_mountain34), "blackwater_mountain34");
- mapReader.read(r.getXml(R.xml.blackwater_mountain35), "blackwater_mountain35");
- mapReader.read(r.getXml(R.xml.blackwater_mountain36), "blackwater_mountain36");
- mapReader.read(r.getXml(R.xml.blackwater_mountain37), "blackwater_mountain37");
- mapReader.read(r.getXml(R.xml.blackwater_mountain38), "blackwater_mountain38");
- mapReader.read(r.getXml(R.xml.blackwater_mountain39), "blackwater_mountain39");
- mapReader.read(r.getXml(R.xml.blackwater_mountain40), "blackwater_mountain40");
- mapReader.read(r.getXml(R.xml.blackwater_mountain41), "blackwater_mountain41");
- mapReader.read(r.getXml(R.xml.blackwater_mountain42), "blackwater_mountain42");
- mapReader.read(r.getXml(R.xml.blackwater_mountain43), "blackwater_mountain43");
- mapReader.read(r.getXml(R.xml.blackwater_mountain44), "blackwater_mountain44");
- mapReader.read(r.getXml(R.xml.blackwater_mountain45), "blackwater_mountain45");
- mapReader.read(r.getXml(R.xml.blackwater_mountain46), "blackwater_mountain46");
- mapReader.read(r.getXml(R.xml.blackwater_mountain47), "blackwater_mountain47");
- mapReader.read(r.getXml(R.xml.blackwater_mountain48), "blackwater_mountain48");
- mapReader.read(r.getXml(R.xml.blackwater_mountain49), "blackwater_mountain49");
- mapReader.read(r.getXml(R.xml.blackwater_mountain50), "blackwater_mountain50");
- mapReader.read(r.getXml(R.xml.blackwater_mountain51), "blackwater_mountain51");
- mapReader.read(r.getXml(R.xml.blackwater_mountain52), "blackwater_mountain52");
- mapReader.read(r.getXml(R.xml.wild0), "wild0");
- mapReader.read(r.getXml(R.xml.crossroads), "crossroads");
- /*mapReader.read(r.getXml(R.xml.fields0), "fields0");
- mapReader.read(r.getXml(R.xml.fields1), "fields1");
- mapReader.read(r.getXml(R.xml.fields2), "fields2");
- mapReader.read(r.getXml(R.xml.fields3), "fields3");
- mapReader.read(r.getXml(R.xml.fields4), "fields4");
- mapReader.read(r.getXml(R.xml.fields5), "fields5");
- mapReader.read(r.getXml(R.xml.fields6), "fields6");
- mapReader.read(r.getXml(R.xml.fields7), "fields7");
- mapReader.read(r.getXml(R.xml.fields8), "fields8");
- mapReader.read(r.getXml(R.xml.fields9), "fields9");
- mapReader.read(r.getXml(R.xml.fields10), "fields10");
- mapReader.read(r.getXml(R.xml.fields11), "fields11");
- mapReader.read(r.getXml(R.xml.fields12), "fields12");
- mapReader.read(r.getXml(R.xml.houseatcrossroads0), "houseatcrossroads0");
- mapReader.read(r.getXml(R.xml.houseatcrossroads1), "houseatcrossroads1");
- mapReader.read(r.getXml(R.xml.houseatcrossroads2), "houseatcrossroads2");
- mapReader.read(r.getXml(R.xml.houseatcrossroads3), "houseatcrossroads3");
- mapReader.read(r.getXml(R.xml.houseatcrossroads4), "houseatcrossroads4");
- mapReader.read(r.getXml(R.xml.houseatcrossroads5), "houseatcrossroads5");
- mapReader.read(r.getXml(R.xml.loneford1), "loneford1");
- mapReader.read(r.getXml(R.xml.loneford2), "loneford2");
- mapReader.read(r.getXml(R.xml.loneford3), "loneford3");
- mapReader.read(r.getXml(R.xml.loneford4), "loneford4");
- mapReader.read(r.getXml(R.xml.loneford5), "loneford5");
- mapReader.read(r.getXml(R.xml.loneford6), "loneford6");
- mapReader.read(r.getXml(R.xml.loneford7), "loneford7");
- mapReader.read(r.getXml(R.xml.loneford8), "loneford8");
- mapReader.read(r.getXml(R.xml.loneford9), "loneford9");
- mapReader.read(r.getXml(R.xml.loneford10), "loneford10");
- mapReader.read(r.getXml(R.xml.roadbeforecrossroads), "roadbeforecrossroads");
- mapReader.read(r.getXml(R.xml.roadtocarntower0), "roadtocarntower0");
- mapReader.read(r.getXml(R.xml.roadtocarntower1), "roadtocarntower1");
- mapReader.read(r.getXml(R.xml.roadtocarntower2), "roadtocarntower2");
- mapReader.read(r.getXml(R.xml.woodcave0), "woodcave0");
- mapReader.read(r.getXml(R.xml.woodcave1), "woodcave1");*/
+ mapReader.read(r, R.xml.home, "home");
+ mapReader.read(r, R.xml.crossglen, "crossglen");
+ mapReader.read(r, R.xml.crossglen_farmhouse, "crossglen_farmhouse");
+ mapReader.read(r, R.xml.crossglen_farmhouse_basement, "crossglen_farmhouse_basement");
+ mapReader.read(r, R.xml.crossglen_hall, "crossglen_hall");
+ mapReader.read(r, R.xml.crossglen_smith, "crossglen_smith");
+ mapReader.read(r, R.xml.crossglen_cave, "crossglen_cave");
+ mapReader.read(r, R.xml.wild1, "wild1");
+ mapReader.read(r, R.xml.wild2, "wild2");
+ mapReader.read(r, R.xml.wild3, "wild3");
+ mapReader.read(r, R.xml.jan_pitcave1, "jan_pitcave1");
+ mapReader.read(r, R.xml.jan_pitcave2, "jan_pitcave2");
+ mapReader.read(r, R.xml.jan_pitcave3, "jan_pitcave3");
+ mapReader.read(r, R.xml.fallhaven_nw, "fallhaven_nw");
+ mapReader.read(r, R.xml.snakecave1, "snakecave1");
+ mapReader.read(r, R.xml.snakecave2, "snakecave2");
+ mapReader.read(r, R.xml.snakecave3, "snakecave3");
+ mapReader.read(r, R.xml.wild4, "wild4");
+ mapReader.read(r, R.xml.hauntedhouse1, "hauntedhouse1");
+ mapReader.read(r, R.xml.hauntedhouse2, "hauntedhouse2");
+ mapReader.read(r, R.xml.fallhaven_ne, "fallhaven_ne");
+ mapReader.read(r, R.xml.fallhaven_church, "fallhaven_church");
+ mapReader.read(r, R.xml.fallhaven_barn, "fallhaven_barn");
+ mapReader.read(r, R.xml.fallhaven_potions, "fallhaven_potions");
+ mapReader.read(r, R.xml.fallhaven_gravedigger, "fallhaven_gravedigger");
+ mapReader.read(r, R.xml.fallhaven_clothes, "fallhaven_clothes");
+ mapReader.read(r, R.xml.fallhaven_arcir, "fallhaven_arcir");
+ mapReader.read(r, R.xml.fallhaven_arcir_basement, "fallhaven_arcir_basement");
+ mapReader.read(r, R.xml.fallhaven_athamyr, "fallhaven_athamyr");
+ mapReader.read(r, R.xml.fallhaven_rigmor, "fallhaven_rigmor");
+ mapReader.read(r, R.xml.fallhaven_tavern, "fallhaven_tavern");
+ mapReader.read(r, R.xml.fallhaven_prison, "fallhaven_prison");
+ mapReader.read(r, R.xml.fallhaven_derelict, "fallhaven_derelict");
+ mapReader.read(r, R.xml.fallhaven_nocmar, "fallhaven_nocmar");
+ mapReader.read(r, R.xml.catacombs1, "catacombs1");
+ mapReader.read(r, R.xml.catacombs2, "catacombs2");
+ mapReader.read(r, R.xml.catacombs3, "catacombs3");
+ mapReader.read(r, R.xml.catacombs4, "catacombs4");
+ mapReader.read(r, R.xml.hauntedhouse3, "hauntedhouse3");
+ mapReader.read(r, R.xml.hauntedhouse4, "hauntedhouse4");
+ mapReader.read(r, R.xml.fallhaven_sw, "fallhaven_sw");
+ mapReader.read(r, R.xml.wild5, "wild5");
+ mapReader.read(r, R.xml.wild6, "wild6");
+ mapReader.read(r, R.xml.wild6_house, "wild6_house");
+ mapReader.read(r, R.xml.wild7, "wild7");
+ mapReader.read(r, R.xml.wild8, "wild8");
+ mapReader.read(r, R.xml.wild9, "wild9");
+ mapReader.read(r, R.xml.wild10, "wild10");
+ mapReader.read(r, R.xml.flagstone0, "flagstone0");
+ mapReader.read(r, R.xml.flagstone_inner, "flagstone_inner");
+ mapReader.read(r, R.xml.flagstone_upper, "flagstone_upper");
+ mapReader.read(r, R.xml.flagstone1, "flagstone1");
+ mapReader.read(r, R.xml.flagstone2, "flagstone2");
+ mapReader.read(r, R.xml.flagstone3, "flagstone3");
+ mapReader.read(r, R.xml.flagstone4, "flagstone4");
+ mapReader.read(r, R.xml.wild11, "wild11");
+ mapReader.read(r, R.xml.wild12, "wild12");
+ mapReader.read(r, R.xml.wild11_clearing, "wild11_clearing");
+ mapReader.read(r, R.xml.clearing_level1, "clearing_level1");
+ mapReader.read(r, R.xml.clearing_level2, "clearing_level2");
+ mapReader.read(r, R.xml.fallhaven_se, "fallhaven_se");
+ mapReader.read(r, R.xml.fallhaven_lumberjack, "fallhaven_lumberjack");
+ mapReader.read(r, R.xml.fallhaven_alaun, "fallhaven_alaun");
+ mapReader.read(r, R.xml.fallhaven_storage, "fallhaven_storage");
+ mapReader.read(r, R.xml.fallhaven_farmer, "fallhaven_farmer");
+ mapReader.read(r, R.xml.wild13, "wild13");
+ mapReader.read(r, R.xml.wild14, "wild14");
+ mapReader.read(r, R.xml.wild14_cave, "wild14_cave");
+ mapReader.read(r, R.xml.wild14_clearing, "wild14_clearing");
+ mapReader.read(r, R.xml.wild15, "wild15");
+ mapReader.read(r, R.xml.wild15_house, "wild15_house");
+ mapReader.read(r, R.xml.road1, "road1");
+ mapReader.read(r, R.xml.foaming_flask, "foaming_flask");
+ mapReader.read(r, R.xml.fallhaven_derelict2, "fallhaven_derelict2");
+ mapReader.read(r, R.xml.vilegard_n, "vilegard_n");
+ mapReader.read(r, R.xml.vilegard_s, "vilegard_s");
+ mapReader.read(r, R.xml.vilegard_sw, "vilegard_sw");
+ mapReader.read(r, R.xml.vilegard_ogam, "vilegard_ogam");
+ mapReader.read(r, R.xml.vilegard_chapel, "vilegard_chapel");
+ mapReader.read(r, R.xml.vilegard_tavern, "vilegard_tavern");
+ mapReader.read(r, R.xml.vilegard_armorer, "vilegard_armorer");
+ mapReader.read(r, R.xml.vilegard_smith, "vilegard_smith");
+ mapReader.read(r, R.xml.vilegard_wrye, "vilegard_wrye");
+ mapReader.read(r, R.xml.vilegard_kaori, "vilegard_kaori");
+ mapReader.read(r, R.xml.vilegard_erttu, "vilegard_erttu");
+ mapReader.read(r, R.xml.road2, "road2");
+ mapReader.read(r, R.xml.road3, "road3");
+ mapReader.read(r, R.xml.road4, "road4");
+ mapReader.read(r, R.xml.road4_gargoylecave, "road4_gargoylecave");
+ mapReader.read(r, R.xml.road5, "road5");
+ mapReader.read(r, R.xml.road5_house, "road5_house");
+ mapReader.read(r, R.xml.gargoylecave1, "gargoylecave1");
+ mapReader.read(r, R.xml.gargoylecave2, "gargoylecave2");
+ mapReader.read(r, R.xml.gargoylecave3, "gargoylecave3");
+ mapReader.read(r, R.xml.gargoylecave4, "gargoylecave4");
+ mapReader.read(r, R.xml.blackwater_mountain0, "blackwater_mountain0");
+ mapReader.read(r, R.xml.blackwater_mountain1, "blackwater_mountain1");
+ mapReader.read(r, R.xml.blackwater_mountain2, "blackwater_mountain2");
+ mapReader.read(r, R.xml.blackwater_mountain3, "blackwater_mountain3");
+ mapReader.read(r, R.xml.blackwater_mountain4, "blackwater_mountain4");
+ mapReader.read(r, R.xml.blackwater_mountain5, "blackwater_mountain5");
+ mapReader.read(r, R.xml.blackwater_mountain6, "blackwater_mountain6");
+ mapReader.read(r, R.xml.blackwater_mountain7, "blackwater_mountain7");
+ mapReader.read(r, R.xml.blackwater_mountain8, "blackwater_mountain8");
+ mapReader.read(r, R.xml.blackwater_mountain9, "blackwater_mountain9");
+ mapReader.read(r, R.xml.blackwater_mountain10, "blackwater_mountain10");
+ mapReader.read(r, R.xml.blackwater_mountain11, "blackwater_mountain11");
+ mapReader.read(r, R.xml.blackwater_mountain12, "blackwater_mountain12");
+ mapReader.read(r, R.xml.blackwater_mountain13, "blackwater_mountain13");
+ mapReader.read(r, R.xml.blackwater_mountain14, "blackwater_mountain14");
+ mapReader.read(r, R.xml.blackwater_mountain15, "blackwater_mountain15");
+ mapReader.read(r, R.xml.blackwater_mountain16, "blackwater_mountain16");
+ mapReader.read(r, R.xml.blackwater_mountain17, "blackwater_mountain17");
+ mapReader.read(r, R.xml.blackwater_mountain18, "blackwater_mountain18");
+ mapReader.read(r, R.xml.blackwater_mountain19, "blackwater_mountain19");
+ mapReader.read(r, R.xml.blackwater_mountain20, "blackwater_mountain20");
+ mapReader.read(r, R.xml.blackwater_mountain21, "blackwater_mountain21");
+ mapReader.read(r, R.xml.blackwater_mountain22, "blackwater_mountain22");
+ mapReader.read(r, R.xml.blackwater_mountain23, "blackwater_mountain23");
+ mapReader.read(r, R.xml.blackwater_mountain24, "blackwater_mountain24");
+ mapReader.read(r, R.xml.blackwater_mountain25, "blackwater_mountain25");
+ mapReader.read(r, R.xml.blackwater_mountain26, "blackwater_mountain26");
+ mapReader.read(r, R.xml.blackwater_mountain27, "blackwater_mountain27");
+ mapReader.read(r, R.xml.blackwater_mountain28, "blackwater_mountain28");
+ mapReader.read(r, R.xml.blackwater_mountain29, "blackwater_mountain29");
+ mapReader.read(r, R.xml.blackwater_mountain30, "blackwater_mountain30");
+ mapReader.read(r, R.xml.blackwater_mountain31, "blackwater_mountain31");
+ mapReader.read(r, R.xml.blackwater_mountain32, "blackwater_mountain32");
+ mapReader.read(r, R.xml.blackwater_mountain33, "blackwater_mountain33");
+ mapReader.read(r, R.xml.blackwater_mountain34, "blackwater_mountain34");
+ mapReader.read(r, R.xml.blackwater_mountain35, "blackwater_mountain35");
+ mapReader.read(r, R.xml.blackwater_mountain36, "blackwater_mountain36");
+ mapReader.read(r, R.xml.blackwater_mountain37, "blackwater_mountain37");
+ mapReader.read(r, R.xml.blackwater_mountain38, "blackwater_mountain38");
+ mapReader.read(r, R.xml.blackwater_mountain39, "blackwater_mountain39");
+ mapReader.read(r, R.xml.blackwater_mountain40, "blackwater_mountain40");
+ mapReader.read(r, R.xml.blackwater_mountain41, "blackwater_mountain41");
+ mapReader.read(r, R.xml.blackwater_mountain42, "blackwater_mountain42");
+ mapReader.read(r, R.xml.blackwater_mountain43, "blackwater_mountain43");
+ mapReader.read(r, R.xml.blackwater_mountain44, "blackwater_mountain44");
+ mapReader.read(r, R.xml.blackwater_mountain45, "blackwater_mountain45");
+ mapReader.read(r, R.xml.blackwater_mountain46, "blackwater_mountain46");
+ mapReader.read(r, R.xml.blackwater_mountain47, "blackwater_mountain47");
+ mapReader.read(r, R.xml.blackwater_mountain48, "blackwater_mountain48");
+ mapReader.read(r, R.xml.blackwater_mountain49, "blackwater_mountain49");
+ mapReader.read(r, R.xml.blackwater_mountain50, "blackwater_mountain50");
+ mapReader.read(r, R.xml.blackwater_mountain51, "blackwater_mountain51");
+ mapReader.read(r, R.xml.blackwater_mountain52, "blackwater_mountain52");
+ mapReader.read(r, R.xml.wild0, "wild0");
+ mapReader.read(r, R.xml.crossroads, "crossroads");
+ mapReader.read(r, R.xml.fields0, "fields0");
+ mapReader.read(r, R.xml.fields1, "fields1");
+ mapReader.read(r, R.xml.fields2, "fields2");
+ mapReader.read(r, R.xml.fields3, "fields3");
+ mapReader.read(r, R.xml.fields4, "fields4");
+ mapReader.read(r, R.xml.fields5, "fields5");
+ mapReader.read(r, R.xml.fields6, "fields6");
+ mapReader.read(r, R.xml.fields7, "fields7");
+ mapReader.read(r, R.xml.fields8, "fields8");
+ mapReader.read(r, R.xml.fields9, "fields9");
+ mapReader.read(r, R.xml.fields10, "fields10");
+ mapReader.read(r, R.xml.fields11, "fields11");
+ mapReader.read(r, R.xml.fields12, "fields12");
+ mapReader.read(r, R.xml.houseatcrossroads0, "houseatcrossroads0");
+ mapReader.read(r, R.xml.houseatcrossroads1, "houseatcrossroads1");
+ mapReader.read(r, R.xml.houseatcrossroads2, "houseatcrossroads2");
+ mapReader.read(r, R.xml.houseatcrossroads3, "houseatcrossroads3");
+ mapReader.read(r, R.xml.houseatcrossroads4, "houseatcrossroads4");
+ mapReader.read(r, R.xml.houseatcrossroads5, "houseatcrossroads5");
+ mapReader.read(r, R.xml.loneford1, "loneford1");
+ mapReader.read(r, R.xml.loneford2, "loneford2");
+ mapReader.read(r, R.xml.loneford3, "loneford3");
+ mapReader.read(r, R.xml.loneford4, "loneford4");
+ mapReader.read(r, R.xml.loneford5, "loneford5");
+ mapReader.read(r, R.xml.loneford6, "loneford6");
+ mapReader.read(r, R.xml.loneford7, "loneford7");
+ mapReader.read(r, R.xml.loneford8, "loneford8");
+ mapReader.read(r, R.xml.loneford9, "loneford9");
+ mapReader.read(r, R.xml.loneford10, "loneford10");
+ mapReader.read(r, R.xml.roadbeforecrossroads, "roadbeforecrossroads");
+ mapReader.read(r, R.xml.roadtocarntower0, "roadtocarntower0");
+ mapReader.read(r, R.xml.roadtocarntower1, "roadtocarntower1");
+ mapReader.read(r, R.xml.roadtocarntower2, "roadtocarntower2");
+ mapReader.read(r, R.xml.woodcave0, "woodcave0");
+ mapReader.read(r, R.xml.woodcave1, "woodcave1");
}
world.maps.predefinedMaps.addAll(mapReader.transformMaps(loader, world.monsterTypes, world.dropLists));
@@ -465,7 +465,7 @@ public final class ResourceLoader {
public static final String columnSeparator = "\\|";
public static int parseImageID(DynamicTileLoader tileLoader, String s) {
String[] parts = s.split(":");
- return tileLoader.getTileID(parts[0], Integer.parseInt(parts[1]));
+ return tileLoader.prepareTileID(parts[0], Integer.parseInt(parts[1]));
}
public static ConstRange parseRange(String s) {
if (s == null || s.length() <= 0) return null;
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/TileStore.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/TileStore.java
index 7d50688c7..796b14878 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/TileStore.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/TileStore.java
@@ -1,5 +1,7 @@
package com.gpl.rpg.AndorsTrail.resource;
+import java.util.HashMap;
+
import com.gpl.rpg.AndorsTrail.AndorsTrailPreferences;
import android.content.res.Resources;
@@ -30,7 +32,8 @@ public final class TileStore {
//TODO: should be final.
public Bitmap[] bitmaps = new Bitmap[1];
-
+ private HashMap> tilesetLocalIDsToTileID = new HashMap>();
+
public void allocateTiles(int tilecount) {
if (tilecount <= 0) return;
@@ -42,4 +45,13 @@ public final class TileStore {
public Bitmap getBitmap(int tileID) {
return bitmaps[tileID];
}
+ public int getTileID(String tilesetName, int localId) {
+ return tilesetLocalIDsToTileID.get(tilesetName).get(localId);
+ }
+
+ public void setBitmap(int tileID, Bitmap bitmap, String tilesetName, int localId) {
+ bitmaps[tileID] = bitmap;
+ if (!tilesetLocalIDsToTileID.containsKey(tilesetName)) tilesetLocalIDsToTileID.put(tilesetName, new HashMap());
+ tilesetLocalIDsToTileID.get(tilesetName).put(localId, tileID);
+ }
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/MainView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/MainView.java
index d624ac731..50e05daea 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/MainView.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/MainView.java
@@ -7,7 +7,8 @@ import com.gpl.rpg.AndorsTrail.controller.VisualEffectController.VisualEffectAni
import com.gpl.rpg.AndorsTrail.model.ModelContainer;
import com.gpl.rpg.AndorsTrail.model.actor.Monster;
import com.gpl.rpg.AndorsTrail.model.item.Loot;
-import com.gpl.rpg.AndorsTrail.model.map.LayeredWorldMap;
+import com.gpl.rpg.AndorsTrail.model.map.LayeredTileMap;
+import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
import com.gpl.rpg.AndorsTrail.model.map.MapLayer;
import com.gpl.rpg.AndorsTrail.model.map.MonsterSpawnArea;
import com.gpl.rpg.AndorsTrail.resource.TileStore;
@@ -225,7 +226,7 @@ public final class MainView extends SurfaceView implements SurfaceHolder.Callbac
}
private void redrawArea_(final CoordRect area) {
if (!hasSurface) return;
- final LayeredWorldMap currentMap = model.currentMap;
+ final PredefinedMap currentMap = model.currentMap;
boolean b = currentMap.isOutside(area);
if (b) return;
@@ -251,7 +252,7 @@ public final class MainView extends SurfaceView implements SurfaceHolder.Callbac
private final Rect redrawRect = new Rect();
public void redrawAreaWithEffect(final CoordRect area, final VisualEffectAnimation effect) {
if (!hasSurface) return;
- final LayeredWorldMap currentMap = model.currentMap;
+ final PredefinedMap currentMap = model.currentMap;
if (currentMap.isOutside(area)) return;
calculateRedrawRect(area);
@@ -306,10 +307,11 @@ public final class MainView extends SurfaceView implements SurfaceHolder.Callbac
}
private void doDrawRect(Canvas canvas, CoordRect area) {
- final LayeredWorldMap currentMap = model.currentMap;
-
- drawMapLayer(canvas, area, currentMap.layers[LayeredWorldMap.LAYER_GROUND]);
- tryDrawMapLayer(canvas, area, currentMap, LayeredWorldMap.LAYER_OBJECTS);
+ final LayeredTileMap currentTileMap = model.currentTileMap;
+ final PredefinedMap currentMap = model.currentMap;
+
+ drawMapLayer(canvas, area, currentTileMap.layers[LayeredTileMap.LAYER_GROUND]);
+ tryDrawMapLayer(canvas, area, currentTileMap, LayeredTileMap.LAYER_OBJECTS);
for (Loot l : currentMap.groundBags) {
if (l.isVisible) {
@@ -324,7 +326,7 @@ public final class MainView extends SurfaceView implements SurfaceHolder.Callbac
}
}
- tryDrawMapLayer(canvas, area, currentMap, LayeredWorldMap.LAYER_ABOVE);
+ tryDrawMapLayer(canvas, area, currentTileMap, LayeredTileMap.LAYER_ABOVE);
if (model.uiSelections.selectedPosition != null) {
if (model.uiSelections.selectedMonster != null) {
@@ -335,8 +337,8 @@ public final class MainView extends SurfaceView implements SurfaceHolder.Callbac
}
}
- private void tryDrawMapLayer(Canvas canvas, final CoordRect area, final LayeredWorldMap currentMap, final int layerIndex) {
- if (currentMap.layers.length > layerIndex) drawMapLayer(canvas, area, currentMap.layers[layerIndex]);
+ private void tryDrawMapLayer(Canvas canvas, final CoordRect area, final LayeredTileMap currentTileMap, final int layerIndex) {
+ if (currentTileMap.layers.length > layerIndex) drawMapLayer(canvas, area, currentTileMap.layers[layerIndex]);
}
private void drawMapLayer(Canvas canvas, final CoordRect area, final MapLayer layer) {
@@ -397,7 +399,7 @@ public final class MainView extends SurfaceView implements SurfaceHolder.Callbac
private void recalculateMapTopLeft() {
mapTopLeft.set(0, 0);
- final LayeredWorldMap currentMap = model.currentMap;
+ final PredefinedMap currentMap = model.currentMap;
final Coord playerpos = model.player.position;
if (currentMap.size.width > screenSizeTileCount.width) {