From 7069c8150c51eee6b48a88aa80c8fbd048dabb08 Mon Sep 17 00:00:00 2001 From: "jason@long.name" Date: Sun, 1 Sep 2013 00:25:39 +0000 Subject: [PATCH] buildings: for component tiles, link back to the owner tile git-svn-id: https://micropolis.googlecode.com/svn/trunk/micropolis-java@811 d9718cc8-9f43-0410-858b-315f434eb58c --- src/micropolisj/engine/TileSpec.java | 3 +++ src/micropolisj/engine/Tiles.java | 10 ++++++++++ src/micropolisj/gui/MainWindow.java | 7 +++++++ 3 files changed, 20 insertions(+) diff --git a/src/micropolisj/engine/TileSpec.java b/src/micropolisj/engine/TileSpec.java index 09647e8..33ef0da 100644 --- a/src/micropolisj/engine/TileSpec.java +++ b/src/micropolisj/engine/TileSpec.java @@ -11,6 +11,9 @@ public class TileSpec boolean canBurn; boolean canConduct; boolean zone; + public TileSpec owner; + public int ownerOffsetX; + public int ownerOffsetY; Map attributes; List images; diff --git a/src/micropolisj/engine/Tiles.java b/src/micropolisj/engine/Tiles.java index fea6891..ebbd742 100644 --- a/src/micropolisj/engine/Tiles.java +++ b/src/micropolisj/engine/Tiles.java @@ -53,6 +53,16 @@ public class Tiles if (tmp != null) { tiles[i].onShutdown = get(Integer.parseInt(tmp)); } + + TileSpec.BuildingInfo bi = tiles[i].getBuildingInfo(); + if (bi != null) { + for (int j = 0; j < bi.members.length; j++) { + int tid = bi.members[j]; + tiles[tid].owner = tiles[i]; + tiles[tid].ownerOffsetX = (bi.width >= 3 ? -1 : 0) + j % bi.width; + tiles[tid].ownerOffsetY = (bi.height >= 3 ? -1 : 0) + j / bi.width; + } + } } } diff --git a/src/micropolisj/gui/MainWindow.java b/src/micropolisj/gui/MainWindow.java index 848ca8f..702d471 100644 --- a/src/micropolisj/gui/MainWindow.java +++ b/src/micropolisj/gui/MainWindow.java @@ -1093,6 +1093,13 @@ public class MainWindow extends JFrame ZoneStatus z = engine.queryZoneStatus(xpos, ypos); notificationPane.showZoneStatus(engine, xpos, ypos, z); + + TileSpec ts = Tiles.get(engine.getTile(xpos, ypos) & TileConstants.LOMASK); + if (ts != null) { + System.out.println("owner: "+ts.owner); + System.out.println(" x: "+ts.ownerOffsetX); + System.out.println(" y: "+ts.ownerOffsetY); + } } private void doZoom(int dir, Point mousePt)