v2.2.0: visual changes so crystal spires can have adjacent terrain
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 995 B |
-5
@@ -111,11 +111,6 @@ public class CrystalSpire extends Mob {
|
|||||||
|
|
||||||
for (int i : cellsToAttack){
|
for (int i : cellsToAttack){
|
||||||
|
|
||||||
//TODO would be nice to find a way to crystal these cells
|
|
||||||
if(i == pos+1 || i == pos-1 || i == pos-Dungeon.level.width() || i == pos-2*Dungeon.level.width()){
|
|
||||||
continue; //don't spawn crystals in these locations
|
|
||||||
}
|
|
||||||
|
|
||||||
Char ch = Actor.findChar(i);
|
Char ch = Actor.findChar(i);
|
||||||
if (ch instanceof CrystalGuardian || ch instanceof CrystalSpire){
|
if (ch instanceof CrystalGuardian || ch instanceof CrystalSpire){
|
||||||
continue; //don't spawn crystals on these chars
|
continue; //don't spawn crystals on these chars
|
||||||
|
|||||||
+1
-5
@@ -59,11 +59,7 @@ public class MineGiantRoom extends CaveRoom {
|
|||||||
CrystalSpire m = new CrystalSpire();
|
CrystalSpire m = new CrystalSpire();
|
||||||
m.pos = level.pointToCell(p);
|
m.pos = level.pointToCell(p);
|
||||||
level.mobs.add(m);
|
level.mobs.add(m);
|
||||||
Painter.set(level, p, Terrain.CUSTOM_DECO_EMPTY);
|
Painter.set(level, p, Terrain.EMPTY);
|
||||||
Painter.set(level, p.x-1, p.y, Terrain.CUSTOM_DECO_EMPTY);
|
|
||||||
Painter.set(level, p.x+1, p.y, Terrain.CUSTOM_DECO_EMPTY);
|
|
||||||
Painter.set(level, p.x, p.y-1, Terrain.CUSTOM_DECO_EMPTY);
|
|
||||||
Painter.set(level, p.x, p.y-2, Terrain.CUSTOM_DECO_EMPTY);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Painter.fillEllipse(level, this, 3, Terrain.EMPTY);
|
Painter.fillEllipse(level, this, 3, Terrain.EMPTY);
|
||||||
|
|||||||
+30
-2
@@ -22,8 +22,11 @@
|
|||||||
package com.shatteredpixel.shatteredpixeldungeon.sprites;
|
package com.shatteredpixel.shatteredpixeldungeon.sprites;
|
||||||
|
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
import com.shatteredpixel.shatteredpixeldungeon.Assets;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
import com.shatteredpixel.shatteredpixeldungeon.actors.Char;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.effects.Splash;
|
import com.shatteredpixel.shatteredpixeldungeon.effects.Splash;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.scenes.GameScene;
|
||||||
|
import com.shatteredpixel.shatteredpixeldungeon.tiles.DungeonWallsTilemap;
|
||||||
import com.watabou.noosa.TextureFilm;
|
import com.watabou.noosa.TextureFilm;
|
||||||
|
|
||||||
public abstract class CrystalSpireSprite extends MobSprite {
|
public abstract class CrystalSpireSprite extends MobSprite {
|
||||||
@@ -39,7 +42,7 @@ public abstract class CrystalSpireSprite extends MobSprite {
|
|||||||
public CrystalSpireSprite(){
|
public CrystalSpireSprite(){
|
||||||
texture( Assets.Sprites.CRYSTAL_SPIRE );
|
texture( Assets.Sprites.CRYSTAL_SPIRE );
|
||||||
|
|
||||||
TextureFilm frames = new TextureFilm( texture, 30, 45 );
|
TextureFilm frames = new TextureFilm( texture, 24, 41 );
|
||||||
|
|
||||||
int c = texOffset();
|
int c = texOffset();
|
||||||
|
|
||||||
@@ -62,7 +65,7 @@ public abstract class CrystalSpireSprite extends MobSprite {
|
|||||||
hpPercent = ch.HP/(float)ch.HT;
|
hpPercent = ch.HP/(float)ch.HT;
|
||||||
}
|
}
|
||||||
|
|
||||||
TextureFilm frames = new TextureFilm( texture, 30, 45 );
|
TextureFilm frames = new TextureFilm( texture, 24, 41 );
|
||||||
|
|
||||||
if (hpPercent > 0.8f){
|
if (hpPercent > 0.8f){
|
||||||
idle.frames( frames, 0+texOffset() );
|
idle.frames( frames, 0+texOffset() );
|
||||||
@@ -85,10 +88,35 @@ public abstract class CrystalSpireSprite extends MobSprite {
|
|||||||
updateIdle();
|
updateIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean wasVisible = false;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update() {
|
||||||
|
super.update();
|
||||||
|
if (curAnim != die && ch != null && visible != wasVisible){
|
||||||
|
if (visible){
|
||||||
|
DungeonWallsTilemap.skipCells.add(ch.pos - 2*Dungeon.level.width());
|
||||||
|
DungeonWallsTilemap.skipCells.add(ch.pos - Dungeon.level.width());
|
||||||
|
} else {
|
||||||
|
DungeonWallsTilemap.skipCells.remove(ch.pos - 2*Dungeon.level.width());
|
||||||
|
DungeonWallsTilemap.skipCells.remove(ch.pos - Dungeon.level.width());
|
||||||
|
}
|
||||||
|
GameScene.updateMap(ch.pos-2*Dungeon.level.width());
|
||||||
|
GameScene.updateMap(ch.pos-Dungeon.level.width());
|
||||||
|
wasVisible = visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void die() {
|
public void die() {
|
||||||
super.die();
|
super.die();
|
||||||
Splash.around(this, blood(), 100);
|
Splash.around(this, blood(), 100);
|
||||||
|
if (ch != null && visible){
|
||||||
|
DungeonWallsTilemap.skipCells.remove(ch.pos - 2*Dungeon.level.width());
|
||||||
|
DungeonWallsTilemap.skipCells.remove(ch.pos - Dungeon.level.width());
|
||||||
|
GameScene.updateMap(ch.pos-2*Dungeon.level.width());
|
||||||
|
GameScene.updateMap(ch.pos-Dungeon.level.width());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract int texOffset();
|
protected abstract int texOffset();
|
||||||
|
|||||||
+1
@@ -393,6 +393,7 @@ public class DungeonTileSheet {
|
|||||||
directVisuals.put(Terrain.SECRET_TRAP, directVisuals.get(Terrain.EMPTY));
|
directVisuals.put(Terrain.SECRET_TRAP, directVisuals.get(Terrain.EMPTY));
|
||||||
directVisuals.put(Terrain.TRAP, directVisuals.get(Terrain.EMPTY));
|
directVisuals.put(Terrain.TRAP, directVisuals.get(Terrain.EMPTY));
|
||||||
directVisuals.put(Terrain.INACTIVE_TRAP, directVisuals.get(Terrain.EMPTY));
|
directVisuals.put(Terrain.INACTIVE_TRAP, directVisuals.get(Terrain.EMPTY));
|
||||||
|
directVisuals.put(Terrain.CUSTOM_DECO, directVisuals.get(Terrain.EMPTY));
|
||||||
directVisuals.put(Terrain.CUSTOM_DECO_EMPTY,directVisuals.get(Terrain.EMPTY));
|
directVisuals.put(Terrain.CUSTOM_DECO_EMPTY,directVisuals.get(Terrain.EMPTY));
|
||||||
|
|
||||||
directVisuals.put(Terrain.EMPTY_DECO, FLOOR_DECO);
|
directVisuals.put(Terrain.EMPTY_DECO, FLOOR_DECO);
|
||||||
|
|||||||
+8
@@ -24,10 +24,15 @@ package com.shatteredpixel.shatteredpixeldungeon.tiles;
|
|||||||
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
import com.shatteredpixel.shatteredpixeldungeon.Dungeon;
|
||||||
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
import com.shatteredpixel.shatteredpixeldungeon.levels.Terrain;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
public class DungeonWallsTilemap extends DungeonTilemap {
|
public class DungeonWallsTilemap extends DungeonTilemap {
|
||||||
|
|
||||||
|
public static HashSet<Integer> skipCells = new HashSet<>();
|
||||||
|
|
||||||
public DungeonWallsTilemap(){
|
public DungeonWallsTilemap(){
|
||||||
super(Dungeon.level.tilesTex());
|
super(Dungeon.level.tilesTex());
|
||||||
|
skipCells.clear();
|
||||||
map( Dungeon.level.map, Dungeon.level.width() );
|
map( Dungeon.level.map, Dungeon.level.width() );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,6 +67,9 @@ public class DungeonWallsTilemap extends DungeonTilemap {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (skipCells.contains(pos)){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (map[pos] == Terrain.LOCKED_EXIT || map[pos] == Terrain.UNLOCKED_EXIT){
|
if (map[pos] == Terrain.LOCKED_EXIT || map[pos] == Terrain.UNLOCKED_EXIT){
|
||||||
return DungeonTileSheet.EXIT_UNDERHANG;
|
return DungeonTileSheet.EXIT_UNDERHANG;
|
||||||
|
|||||||
+5
-1
@@ -35,7 +35,11 @@ public class RaisedTerrainTilemap extends DungeonTilemap {
|
|||||||
protected int getTileVisual(int pos, int tile, boolean flat) {
|
protected int getTileVisual(int pos, int tile, boolean flat) {
|
||||||
|
|
||||||
if (flat) return -1;
|
if (flat) return -1;
|
||||||
|
|
||||||
|
if (DungeonWallsTilemap.skipCells.contains(pos)){
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (tile == Terrain.HIGH_GRASS){
|
if (tile == Terrain.HIGH_GRASS){
|
||||||
return DungeonTileSheet.getVisualWithAlts(
|
return DungeonTileSheet.getVisualWithAlts(
|
||||||
DungeonTileSheet.HIGH_GRASS_UNDERHANG,
|
DungeonTileSheet.HIGH_GRASS_UNDERHANG,
|
||||||
|
|||||||
Reference in New Issue
Block a user