+pwcave4
+waytobrimhaven2
+waytobrimhaven3
+waytobrimhaven0
+waytobrimhaven1
+roadtocarntower1
+roadtocarntower0
+woodsettlement0
+fallhaven_arcir_basement
+roadtocarntower2
+lodarcave7
+lodarcave5
+lodarcave6
+lodarcave3
+lodarcave4
+lodarcave1
+lodarcave2
+fields9
+lodarcave0
+waterway9
+fields6
+waterway8
+fields5
+fields8
+crossglen_cave
+fields7
+fields2
+fields1
+fields4
+fields3
+fields0
+wild14_clearing
+blackwater_mountain7
+lodarhouse1
+blackwater_mountain6
+lodarhouse0
+blackwater_mountain5
+mountainlake10a
+blackwater_mountain4
+blackwater_mountain9
+blackwater_mountain8
+crossglen_farmhouse
+fallhaven_storage
+pwcave2
+pwcave3
+pwcave0
+pwcave1
+wild16_cave
+lodarcave4a
+wild3
+wild2
+wild5
+wild4
+wild7
+wild6
+remgard_weapon
+wild9
+clearing_level2
+wild8
+clearing_level1
+blackwater_mountain0
+blackwater_mountain1
+blackwater_mountain2
+blackwater_mountain3
+vilegard_erttu
+flagstone_upper
+wild1
+wild0
+wild17
+wild15
+mountainlake13a
+wild16
+wild13
+flagstone0
+wild14
+wild11
+wild12
+wild10
+waterway6
+waterway7
+waterway4
+waterway5
+flagstone1
+waterway2
+flagstone2
+loneford10
+waterway3
+woodhouse3
+waterway0
+lodar8cave0
+flagstone3
+waterway1
+flagstone4
+road4_gargoylecave
+fallhaven_prison
+lonelyhouse1
+lonelyhouse0
+minerhouse0
+waytobrimhavencave3b
+remgard_villager4
+minerhouse4
+remgard_villager3
+minerhouse3
+minerhouse2
+minerhouse1
+remgard_villager5
+minerhouse8
+fallhaven_nocmar
+minerhouse7
+remgard_villager2
+minerhouse6
+remgard_villager1
+minerhouse5
+waytobrimhavencave3a
+lodar12cave0
+crossglen_hall
+lodar12cave1
+vilegard_ogam
+minerhouse9
+fallhaven_church
+vilegard_chapel
+remgard_clothes
+foaming_flask
+remgard_tavern1
+roadcave0
+roadcave1
+vilegard_sw
+lostmine3
+lostmine4
+lostmine5
+lostmine6
+gapfiller1
+gapfiller3
+lostmine0
+lostmine1
+gapfiller4
+lostmine2
+waytolake0
+lostmine9
+fallhaven_farmer
+vilegard_n
+lostmine8
+lostmine7
+waytolostmine0
+waytolake5
+waytolake3
+waytolake4
+vilegard_s
+waytolake1
+waytolake2
+road5_house
+waytolostmine2
+waytolostmine1
+waytolostmine3
+waytobrimhavencave1a
+lostmine10
+lostmine11
+fallhaven_potions
+remgard_armour
+mountainlake13
+mountainlake12
+mountainlake11
+loneford4
+mountainlake10
+loneford3
+loneford2
+loneford1
+mountaincave3
+mountaincave2
+crossglen_farmhouse_basement
+mountaincave1
+mountaincave0
+crossglen
+fallhaven_clothes
+loneford5
+hauntedhouse2
+loneford6
+hauntedhouse1
+loneford7
+loneford8
+loneford9
+fallhaven_tavern
+hauntedhouse4
+hauntedhouse3
+road1
+road3
+road2
+road5
+road4
+jan_pitcave1
+lodar5cave1
+lodar5cave0
+lodar21
+jan_pitcave3
+lodar5cave2
+jan_pitcave2
+fallhaven_gravedigger
+lodar20
+waterwayhouse
+fallhaven_rigmor
+waytominingtown1a
+lostmine2a
+wild6_house
+lodar8
+lodar9
+lodar6
+lodar7
+lodar4
+lodar5
+lodar2
+lodar3
+lodar10
+lodar12
+lodar11
+lodar14
+lodar13
+lodar16
+lodar15
+lodar18
+woodcave1
+lodar17
+woodcave0
+lostmine1a
+lodar19
+fallhaven_nw
+waterway12
+waterway11
+waterway14
+waterway13
+waterway15
+fallhaven_derelict
+vilegard_armorer
+remgard_school
+remgard_farmer2
+remgard_farmer3
+waterway11_east
+fallhaven_ne
+remgard_farmer1
+waterway10
+oldcave0
+oldcave1
+home
+roadbeforecrossroads
+roadbeforecrossroads8
+roadbeforecrossroads9
+roadbeforecrossroads6
+roadbeforecrossroads7
+roadbeforecrossroads4
+roadbeforecrossroads5
+roadbeforecrossroads2
+roadbeforecrossroads3
+lodar1cave0
+fallhaven_alaun
+remgard_barn
+lodar1
+lodar0
+remgard_tavern0
+vilegard_wrye
+waytomountaincave1
+waytomountaincave0
+waytomountaincave2
+remgard_church
+houseatcrossroads2
+blackwater_mountain39
+houseatcrossroads3
+wild11_clearing
+fallhaven_sw
+blackwater_mountain37
+houseatcrossroads4
+waytobrimhavencave0
+houseatcrossroads5
+waterwayextention
+blackwater_mountain38
+waytominingtown0
+mountainlake3
+waytobrimhavencave1
+mountainlake2
+waytominingtown1
+waytobrimhavencave2
+mountainlake1
+houseatcrossroads0
+waytobrimhavencave3
+waytominingtown2
+mountainlake0
+houseatcrossroads1
+waytominingtown3
+waytobrimhavencave4
+blackwater_mountain31
+mountainlake7
+blackwater_mountain51
+blackwater_mountain32
+blackwater_mountain52
+mountainlake6
+mountainlake5
+mountainlake4
+blackwater_mountain30
+fallhaven_lumberjack
+blackwater_mountain35
+blackwater_mountain36
+mountainlake9
+blackwater_mountain33
+blackwater_mountain34
+mountainlake8
+blackwater_mountain50
+woodhouse0
+woodhouse2
+woodhouse1
+fallhaven_se
+fields10
+blackwater_mountain48
+blackwater_mountain49
+fields11
+fallhaven_barn
+fields12
+vilegard_tavern
+roadbeforecrossroads1
+fallhaven_athamyr
+blackwater_mountain40
+blackwater_mountain41
+blackwater_mountain42
+blackwater_mountain43
+blackwater_mountain44
+blackwater_mountain45
+blackwater_mountain46
+blackwater_mountain47
+crossglen_smith
+pwcave2a
+blackwater_mountain19
+blackwater_mountain17
+snakecave2
+snakecave1
+blackwater_mountain18
+blackwater_mountain15
+snakecave3
+blackwater_mountain16
+blackwater_mountain13
+blackwater_mountain14
+blackwater_mountain11
+blackwater_mountain12
+blackwater_mountain10
+flagstone_inner
+fallhaven_derelict2
+vilegard_kaori
+fallhaven_arcir
+remgard_prison
+catacombs1
+catacombs2
+vilegard_smith
+waterwaycave
+blackwater_mountain26
+blackwater_mountain27
+blackwater_mountain28
+wild15_house
+catacombs3
+catacombs4
+blackwater_mountain29
+blackwater_mountain22
+blackwater_mountain23
+gargoylecave3
+remgard1
+blackwater_mountain24
+remgard0
+gargoylecave4
+blackwater_mountain25
+remgard3
+gargoylecave1
+remgard2
+gargoylecave2
+blackwater_mountain20
+remgard4
+blackwater_mountain21
+wild14_cave
+tradehouse0
+tradehouse1
+crossroads
+
\ No newline at end of file
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DisplayWorldMapActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DisplayWorldMapActivity.java
new file mode 100644
index 000000000..b94f4e1d2
--- /dev/null
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/DisplayWorldMapActivity.java
@@ -0,0 +1,65 @@
+package com.gpl.rpg.AndorsTrail.activity;
+
+import java.io.File;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.webkit.WebView;
+import android.widget.Toast;
+
+import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
+import com.gpl.rpg.AndorsTrail.R;
+import com.gpl.rpg.AndorsTrail.context.WorldContext;
+import com.gpl.rpg.AndorsTrail.controller.WorldMapController;
+import com.gpl.rpg.AndorsTrail.util.Coord;
+import com.gpl.rpg.AndorsTrail.util.L;
+
+public class DisplayWorldMapActivity extends Activity {
+ private WorldContext world;
+
+ private WebView displayworldmap_webview;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivity(this);
+ if (!app.isInitialized()) { finish(); return; }
+ this.world = app.world;
+
+ AndorsTrailApplication.setWindowParameters(this, app.preferences);
+
+ setContentView(R.layout.displayworldmap);
+
+ displayworldmap_webview = (WebView) findViewById(R.id.displayworldmap_webview);
+ displayworldmap_webview.setBackgroundColor(getResources().getColor(android.R.color.black));
+ displayworldmap_webview.getSettings().setBuiltInZoomControls(true);
+ displayworldmap_webview.getSettings().setJavaScriptEnabled(true);
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ update();
+ }
+
+ private void update() {
+ File worldmap = WorldMapController.getCombinedWorldMapFile();
+
+ if (!worldmap.exists()) {
+ Toast.makeText(this, getResources().getString(R.string.menu_button_worldmap_failed), Toast.LENGTH_LONG).show();
+ this.finish();
+ }
+
+ String url = "file://" + worldmap.getAbsolutePath();
+ Coord playerWorldPosition = WorldMapController.getPlayerWorldPosition(world);
+ if (playerWorldPosition != null) {
+ url += "?"
+ + playerWorldPosition.x * WorldMapController.WORLDMAP_DISPLAY_TILESIZE
+ + ","
+ + (playerWorldPosition.y-1) * WorldMapController.WORLDMAP_DISPLAY_TILESIZE;
+ }
+ L.log("Showing " + url);
+ displayworldmap_webview.loadUrl(url);
+ }
+}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java
index badc06f6a..18d7d00ee 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java
@@ -210,6 +210,15 @@ public final class MainActivity extends Activity {
return true;
}
});
+ menu.add(R.string.menu_button_worldmap)
+ .setIcon(android.R.drawable.ic_menu_mapmode)
+ .setOnMenuItemClickListener(new OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem arg0) {
+ startActivity(new Intent(MainActivity.this, DisplayWorldMapActivity.class));
+ return true;
+ }
+ });
return true;
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java
index bd6dee195..dce246db3 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MovementController.java
@@ -277,7 +277,7 @@ public final class MovementController implements TimedMessageTask.Callback {
world.tileManager.currentMapTiles = cachedTiles;
world.tileManager.cacheAdjacentMaps(res, world, nextMap);
- WorldMapController.updateWorldMap(world, nextMap, mapTiles, cachedTiles);
+ WorldMapController.updateWorldMap(world, nextMap, mapTiles, cachedTiles, res);
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/WorldMapController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/WorldMapController.java
index 58f65170b..eeeecf6c4 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/WorldMapController.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/WorldMapController.java
@@ -3,7 +3,9 @@ package com.gpl.rpg.AndorsTrail.controller;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.PrintWriter;
+import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
@@ -11,44 +13,79 @@ import android.graphics.Paint;
import android.os.AsyncTask;
import android.os.Environment;
+import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
+import com.gpl.rpg.AndorsTrail.R;
import com.gpl.rpg.AndorsTrail.context.WorldContext;
import com.gpl.rpg.AndorsTrail.model.map.LayeredTileMap;
import com.gpl.rpg.AndorsTrail.model.map.MapLayer;
import com.gpl.rpg.AndorsTrail.model.map.PredefinedMap;
import com.gpl.rpg.AndorsTrail.resource.tiles.TileCollection;
+import com.gpl.rpg.AndorsTrail.util.Coord;
import com.gpl.rpg.AndorsTrail.util.L;
public final class WorldMapController {
- public static void updateWorldMap(final WorldContext world, final PredefinedMap map, final LayeredTileMap mapTiles, final TileCollection cachedTiles) {
+
+ public static int WORLDMAP_SCREENSHOT_TILESIZE = 12;
+ public static int WORLDMAP_DISPLAY_TILESIZE = WORLDMAP_SCREENSHOT_TILESIZE;
+
+ public static void updateWorldMap(final WorldContext world, final PredefinedMap map, final LayeredTileMap mapTiles, final TileCollection cachedTiles, final Resources res) {
+
+ if (!shouldUpdateWorldMap(map)) return;
+
(new AsyncTask