v0.6.0: refactored falling landing position logic
Player can no longer fall ontop of enemies, traps, or items.
This commit is contained in:
parent
564234ae9d
commit
7ab1e18c91
|
@ -763,8 +763,14 @@ public abstract class Level implements Bundlable {
|
|||
GameScene.updateMap( cell );
|
||||
}
|
||||
|
||||
public int pitCell() {
|
||||
return randomRespawnCell();
|
||||
public int fallCell( boolean fallIntoPit ) {
|
||||
int result;
|
||||
do {
|
||||
result = randomRespawnCell();
|
||||
} while (traps.get(result) != null
|
||||
|| findMob(result) != null
|
||||
|| heaps.get(result) != null);
|
||||
return result;
|
||||
}
|
||||
|
||||
public void press( int cell, Char ch ) {
|
||||
|
|
|
@ -40,7 +40,6 @@ import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.Room;
|
|||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.PitRoom;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.ShopRoom;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.SpecialRoom;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.special.WeakFloorRoom;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.EntranceRoom;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.ExitRoom;
|
||||
import com.shatteredpixel.shatteredpixeldungeon.levels.rooms.standard.StandardRoom;
|
||||
|
@ -53,7 +52,6 @@ import com.watabou.utils.Random;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
|
||||
public abstract class RegularLevel extends Level {
|
||||
|
@ -374,14 +372,21 @@ public abstract class RegularLevel extends Level {
|
|||
}
|
||||
|
||||
@Override
|
||||
public int pitCell() {
|
||||
for (Room room : rooms) {
|
||||
if (room instanceof PitRoom || room.legacyType.equals("PIT")) {
|
||||
return pointToCell(room.random());
|
||||
public int fallCell( boolean fallIntoPit ) {
|
||||
if (fallIntoPit) {
|
||||
for (Room room : rooms) {
|
||||
if (room instanceof PitRoom || room.legacyType.equals("PIT")) {
|
||||
int result;
|
||||
do {
|
||||
result = pointToCell(room.random());
|
||||
} while (traps.get(result) != null
|
||||
|| findMob(result) != null
|
||||
|| heaps.get(result) != null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return super.pitCell();
|
||||
return super.fallCell( false );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -233,7 +233,7 @@ public class InterlevelScene extends PixelScene {
|
|||
Dungeon.depth++;
|
||||
level = Dungeon.loadLevel( Dungeon.hero.heroClass );
|
||||
}
|
||||
Dungeon.switchLevel( level, fallIntoPit ? level.pitCell() : level.randomRespawnCell() );
|
||||
Dungeon.switchLevel( level, level.fallCell( fallIntoPit ));
|
||||
}
|
||||
|
||||
private void ascend() throws IOException {
|
||||
|
|
Loading…
Reference in New Issue
Block a user