mirror of
https://github.com/OMGeeky/andors-trail.git
synced 2026-01-18 01:27:25 +01:00
Map layers are now only loaded for the current map. The TMX map loader is now run every time the player enters a new map. This should resolve issue 171.
git-svn-id: https://andors-trail.googlecode.com/svn/trunk@61 08aca716-68be-ccc6-4d58-36f5abd142ac
This commit is contained in:
@@ -55,7 +55,7 @@
|
||||
</layer>
|
||||
<layer name="Objects" width="20" height="15">
|
||||
<data encoding="base64" compression="zlib">
|
||||
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==
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="Above" width="20" height="15">
|
||||
@@ -63,9 +63,9 @@
|
||||
eJxjYGBgcGZlIAiIUTNUATl+g+kpokAvOihkRdDkmEuuvcQCkLto5bYiHGZTI93Rwr2kAEJ+IOQ+aoZ5IZI56GYWEukOGI3NX840TCMgAABj2w13
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="Walkable" width="20" height="15" visible="0">
|
||||
<layer name="Walkable" width="20" height="15">
|
||||
<data encoding="base64" compression="zlib">
|
||||
eJwTZGBgEBzEGAaobR46wKeOEB+bWYSAIAGaWP349BDrd3IBpWYSG97kmkkNs/GlI2qaRao5yOZhM5sYd1ADUBLW5ORfAF3NCF8=
|
||||
eJwTZGBgEBzEGAaobR46wKeOEB+bWYSAIAGaWP349BDrd3IBpWYSG97kmkkNs/GlI3LcSU7aJGQGLjFC+qkBKAlrcvIvAIBVCIE=
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup name="Mapevents" width="20" height="15">
|
||||
@@ -75,7 +75,7 @@
|
||||
<property name="place" value="east"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object name="east" type="mapchange" x="608" y="256" width="32" height="32">
|
||||
<object name="east" type="mapchange" x="608" y="256" width="32" height="96">
|
||||
<properties>
|
||||
<property name="map" value="flagstone0"/>
|
||||
<property name="place" value="west"/>
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
</layer>
|
||||
<layer name="Objects" width="30" height="30">
|
||||
<data encoding="base64" compression="zlib">
|
||||
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==
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="Above" width="30" height="30">
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
<object name="south" type="mapchange" x="32" y="736" width="800" height="32">
|
||||
<properties>
|
||||
<property name="map" value="loneford1"/>
|
||||
<property name="place" value="northnoerthwest"/>
|
||||
<property name="place" value="northnorthwest"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object name="west" type="mapchange" x="0" y="32" width="32" height="736">
|
||||
|
||||
@@ -50,12 +50,12 @@
|
||||
</tileset>
|
||||
<layer name="Ground" width="30" height="30">
|
||||
<data encoding="base64" compression="zlib">
|
||||
eJztlEsOgzAMRLOg4ipUPUiOwP1vAkhUBTS2E/+y6WKExMIvHo9dX6Wsu6rwfZefqP9IC6EnA9V+MqrAo1hXUTXQGywc1K/kFcXU8KR+rT5q+uUy48FcAAPlOYLL5TeCSXkbkSHEQ3vryeV2hJqvhSntRMRcW/dxBJO7hZE8j5ukqf85NYp7aJ50ot7eyrZyNWyrv71cbYa5efX27ZGjXr53flv5UTvD8TPuEuJn3sIvd8QNzvI4M09/7l0bzfCXdQ==
|
||||
eJztlLsNgDAMRFOAWAXEIBmB/TcBJBAfnT/YcdJQnJAo/OLz2blPadmUhe+ULlH/kUZCbwaq/WZkgUex7qJqoDd4OKhfySuKaeFJ/Xp9tPTLZaYEcwQMlOcILpffCCblbUSGEA/tbUkutyPUfD1MaSci5qrdxxZM7hZG8krcJEv9+VAr7q6hs4l6u5bt5VrYXn+/cq0ZlmYW0as2Lxp+6fxq+VE7w/Fr3CXEr3kLT26LG1zL45p5+rlPrcQwl3M=
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="Objects" width="30" height="30">
|
||||
<data encoding="base64" compression="zlib">
|
||||
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==
|
||||
</data>
|
||||
</layer>
|
||||
<layer name="Above" width="30" height="30">
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
eJztVFsKwCAM8wre/7KDfQ1J06RWv1YQBppHY90cY8x/vXWaX63b+tG+mx3D3iq13x1PCL/Ll2l13qvix3kvGQ/ydOodMUznf0LRy3y5590+Vq+RTsTLMM7dVHKJfFY9KppKVrsz685317wq+19NR5uVe17xG2EUPnZ+N2v2lqI56NaN+kXVoct6OKnpZH2zX3YXmedMC2FRjx3aqBfEj/adzCJ/6zeb5cp8MD6EUzVVbkWzkqGjjbAPe5EkIQ==
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup name="Mapevents" width="30" height="30" visible="0">
|
||||
<objectgroup name="Mapevents" width="30" height="30">
|
||||
<object name="house" type="mapchange" x="768" y="768" width="32" height="32">
|
||||
<properties>
|
||||
<property name="map" value="flagstone_inner"/>
|
||||
@@ -81,6 +81,12 @@
|
||||
<property name="place" value="west"/>
|
||||
</properties>
|
||||
</object>
|
||||
<object name="west" type="mapchange" x="0" y="256" width="32" height="96">
|
||||
<properties>
|
||||
<property name="map" value="blackwater_mountain0"/>
|
||||
<property name="place" value="east"/>
|
||||
</properties>
|
||||
</object>
|
||||
</objectgroup>
|
||||
<objectgroup name="Spawn" width="30" height="30" visible="0">
|
||||
<object name="forestboar3" type="spawn" x="832" y="160" width="32" height="32"/>
|
||||
|
||||
@@ -68,7 +68,14 @@
|
||||
eJwTZGBgEBzEmAGNJkaeFICuh5BbqGEPKf4m1x5izEXGAJjWBbc=
|
||||
</data>
|
||||
</layer>
|
||||
<objectgroup name="Mapevents" width="13" height="10"/>
|
||||
<objectgroup name="Mapevents" width="13" height="10">
|
||||
<object name="south" type="mapchange" x="224" y="288" width="32" height="32">
|
||||
<properties>
|
||||
<property name="map" value="loneford2"/>
|
||||
<property name="place" value="lonefordhouse2"/>
|
||||
</properties>
|
||||
</object>
|
||||
</objectgroup>
|
||||
<objectgroup name="Spawn" width="13" height="10"/>
|
||||
<objectgroup name="Keys" width="13" height="10"/>
|
||||
</map>
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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<LayeredWorldMap> predefinedMaps = new ArrayList<LayeredWorldMap>();
|
||||
public final ArrayList<PredefinedMap> predefinedMaps = new ArrayList<PredefinedMap>();
|
||||
|
||||
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<String> 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<String> 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;
|
||||
|
||||
@@ -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<Loot> groundBags = new ArrayList<Loot>();
|
||||
//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) {
|
||||
@@ -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<TMXMap> maps = new ArrayList<TMXMap>();
|
||||
|
||||
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<LayeredWorldMap> transformMaps(DynamicTileLoader tileLoader, MonsterTypeCollection monsterTypes, DropListCollection dropLists) {
|
||||
public ArrayList<PredefinedMap> transformMaps(DynamicTileLoader tileLoader, MonsterTypeCollection monsterTypes, DropListCollection dropLists) {
|
||||
return transformMaps(maps, tileLoader, monsterTypes, dropLists);
|
||||
}
|
||||
public ArrayList<LayeredWorldMap> transformMaps(Collection<TMXMap> maps, DynamicTileLoader tileLoader, MonsterTypeCollection monsterTypes, DropListCollection dropLists) {
|
||||
ArrayList<LayeredWorldMap> result = new ArrayList<LayeredWorldMap>();
|
||||
public ArrayList<PredefinedMap> transformMaps(Collection<TMXMap> maps, DynamicTileLoader tileLoader, MonsterTypeCollection monsterTypes, DropListCollection dropLists) {
|
||||
ArrayList<PredefinedMap> result = new ArrayList<PredefinedMap>();
|
||||
|
||||
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<String, Integer> 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<String, Integer> 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<String, Integer> 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<String, Integer> 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<T1, T2> {
|
||||
private static final class Pair<T1, T2> {
|
||||
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<TMXTileSet> tileSets = new ArrayList<TMXTileSet>();
|
||||
public List<TMXLayer> layers = new ArrayList<TMXLayer>();
|
||||
public List<TMXObjectGroup> objectGroups = new ArrayList<TMXObjectGroup>();
|
||||
public ArrayList<TMXObjectGroup> objectGroups = new ArrayList<TMXObjectGroup>();
|
||||
}
|
||||
public class TMXTileSet {
|
||||
public static class TMXLayerMap {
|
||||
public int width;
|
||||
public int height;
|
||||
public ArrayList<TMXTileSet> tileSets = new ArrayList<TMXTileSet>();
|
||||
public ArrayList<TMXLayer> layers = new ArrayList<TMXLayer>();
|
||||
}
|
||||
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<TMXObject> objects = new ArrayList<TMXObject>();
|
||||
public ArrayList<TMXObject> objects = new ArrayList<TMXObject>();
|
||||
}
|
||||
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<TMXProperty> properties = new ArrayList<TMXProperty>();
|
||||
public ArrayList<TMXProperty> properties = new ArrayList<TMXProperty>();
|
||||
}
|
||||
public class TMXProperty {
|
||||
public static final class TMXProperty {
|
||||
public String name;
|
||||
public String value;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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<String, HashMap<Integer, Integer>> tilesetLocalIDsToTileID = new HashMap<String, HashMap<Integer,Integer>>();
|
||||
|
||||
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<Integer, Integer>());
|
||||
tilesetLocalIDsToTileID.get(tilesetName).put(localId, tileID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user