From 9b7fbbf0f6c646dbb425a67e39e490be1ac635b4 Mon Sep 17 00:00:00 2001
From: Evan Debenham <Evan@ShatteredPixel.com>
Date: Wed, 26 Feb 2020 22:00:34 -0500
Subject: [PATCH] v0.8.0: added initial custom visuals for demon spawner rooms

---
 .../assets/custom_tiles/halls_special.png     | Bin 0 -> 302 bytes
 .../shatteredpixeldungeon/Assets.java         |   1 +
 .../rooms/special/DemonSpawnerRoom.java       |  42 +++++++++++++++++-
 3 files changed, 41 insertions(+), 2 deletions(-)
 create mode 100644 core/src/main/assets/custom_tiles/halls_special.png

diff --git a/core/src/main/assets/custom_tiles/halls_special.png b/core/src/main/assets/custom_tiles/halls_special.png
new file mode 100644
index 0000000000000000000000000000000000000000..e48bc1059360ee30d18a5e68a18783d93dd62536
GIT binary patch
literal 302
zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!3-oF?)7E^DVqSF5LZ2Uc_&RxOCSO=jEy6F
z%ripl6M@Lb{Qv*g88Pnvzsg^`vhd8w#WSZ>HPoi9UELreBBClOsi&xD^8E@E(44iN
zE{-7;jH%}uvkn{ZFkJksIg`zMcFy1b@v-XHXS6<JxXIr$(ZTr2Qr)(2?u^MDdG~$S
zpFM4Hz27F1_oHaTv-EW<XL3H!w^_Js!G+wjrV6dQ!mrd^ySe1HVf#S=rVZ?Qx4qWf
z4u5vXQsK}2FJ<>nA1^$?;o2N&J7XT}VXlJp?CH(BPW05?-<^N|%#;8});hWVcfT@j
y>|9n*R@;*BgNtdWRPL!55B;{XsHGp@+510`K7V?~ly;!Q89ZJ6T-G@yGywpffPSF>

literal 0
HcmV?d00001

diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java
index 2c7d7ae19..efd2f7a26 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/Assets.java
@@ -136,6 +136,7 @@ public class Assets {
 	public static final String PRISON_EXIT_NEW  = "custom_tiles/prison_exit_new.png";
 	public static final String CAVES_BOSS       = "custom_tiles/caves_boss.png";
 	public static final String CITY_BOSS        = "custom_tiles/city_boss.png";
+	public static final String HALLS_SP         = "custom_tiles/halls_special.png";
 	
 	public static final String BUFFS_SMALL	= "buffs.png";
 	public static final String BUFFS_LARGE	= "large_buffs.png";
diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/DemonSpawnerRoom.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/DemonSpawnerRoom.java
index 21913c758..21532e17b 100644
--- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/DemonSpawnerRoom.java
+++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/levels/rooms/special/DemonSpawnerRoom.java
@@ -21,15 +21,17 @@
 
 package com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special;
 
+import com.shatteredpixel.shatteredpixeldungeon.Assets;
+import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
 import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.DemonSpawner;
-import com.shatteredpixel.shatteredpixeldungeon.actors.mobs.RipperDemon;
 import com.shatteredpixel.shatteredpixeldungeon.levels.Level;
 import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
 import com.shatteredpixel.shatteredpixeldungeon.levels.painters.Painter;
 import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
 import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.EntranceRoom;
+import com.shatteredpixel.shatteredpixeldungeon.tiles.CustomTilemap;
+import com.watabou.noosa.Tilemap;
 import com.watabou.utils.Point;
-import com.watabou.utils.Random;
 
 public class DemonSpawnerRoom extends SpecialRoom {
 	@Override
@@ -49,6 +51,10 @@ public class DemonSpawnerRoom extends SpecialRoom {
 		spawner.pos = cx + cy * level.width();
 		level.mobs.add( spawner );
 
+		CustomFloor vis = new CustomFloor();
+		vis.setRect(left+1, top+1, width()-2, height()-2);
+		level.customTiles.add(vis);
+
 	}
 
 	@Override
@@ -57,4 +63,36 @@ public class DemonSpawnerRoom extends SpecialRoom {
 		if (room instanceof EntranceRoom) return false;
 		else                              return super.connect(room);
 	}
+
+	@Override
+	public boolean canPlaceTrap(Point p) {
+		return false;
+	}
+
+	@Override
+	public boolean canPlaceWater(Point p) {
+		return false;
+	}
+
+	private static class CustomFloor extends CustomTilemap {
+
+		{
+			texture = Assets.HALLS_SP;
+		}
+
+		@Override
+		public Tilemap create() {
+			Tilemap v = super.create();
+			int top = tileX + tileY* Dungeon.level.width();
+			int[] map = Dungeon.level.map;
+			int[] data = new int[tileW*tileH];
+			for (int i = 0; i < data.length; i++){
+				if (map[i+top] == Terrain.EMPTY_DECO) data[i] = 1;
+				else                                  data[i] = 0;
+			}
+			v.map( data, tileW );
+			return v;
+		}
+
+	}
 }