本文整理汇总了Java中com.watabou.pixeldungeon.levels.Terrain.DOOR属性的典型用法代码示例。如果您正苦于以下问题:Java Terrain.DOOR属性的具体用法?Java Terrain.DOOR怎么用?Java Terrain.DOOR使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类com.watabou.pixeldungeon.levels.Terrain
的用法示例。
在下文中一共展示了Terrain.DOOR属性的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: move
public void move( int step ) {
if (Level.adjacent( step, pos ) && buff( Vertigo.class ) != null) {
step = pos + Level.NEIGHBOURS8[Random.Int( 8 )];
if (!(Level.passable[step] || Level.avoid[step]) || Actor.findChar( step ) != null) {
return;
}
}
if (Dungeon.level.map[pos] == Terrain.OPEN_DOOR) {
Door.leave( pos );
}
pos = step;
if (flying && Dungeon.level.map[pos] == Terrain.DOOR) {
Door.enter( pos );
}
if (this != Dungeon.hero) {
sprite.visible = Dungeon.visible[pos];
}
}
示例2: build
@Override
protected boolean build() {
Painter.fill( this, _Left(), TOP, HALL_WIDTH, HALL_HEIGHT, Terrain.EMPTY_SP );
Painter.fill( this, _Left(), TOP, HALL_WIDTH, TOP, Terrain.EMPTY );
Painter.fill( this, _Left(), HALL_HEIGHT, HALL_WIDTH, TOP, Terrain.EMPTY );
for (int i = 0; i < 10; i++) {
map[getRandomTerrainCell(Terrain.EMPTY_SP)] = Terrain.STATUE_SP;
}
arenaDoor = (TOP + HALL_HEIGHT) * getWidth() + _Center();
map[arenaDoor] = Terrain.DOOR;
Painter.fill( this, _Left(), TOP + HALL_HEIGHT + 1, HALL_WIDTH, CHAMBER_HEIGHT, Terrain.EMPTY );
entrance = (TOP + HALL_HEIGHT + 2 + Random.Int( CHAMBER_HEIGHT - 1 )) * getWidth() + _Left() + (/*1 +*/ Random.Int( HALL_WIDTH-2 ));
map[entrance] = Terrain.ENTRANCE;
setExit((TOP - 1) * getWidth() + _Center(),0);
map[getExit(0)] = Terrain.LOCKED_EXIT;
return true;
}
示例3: defenseProc
@Override
public int defenseProc( Char enemy, int damage ) {
if (HP >= damage + 2) {
ArrayList<Integer> candidates = new ArrayList<Integer>();
boolean[] passable = Level.passable;
int[] neighbours = {pos + 1, pos - 1, pos + Level.WIDTH, pos - Level.WIDTH};
for (int n : neighbours) {
if (passable[n] && Actor.findChar( n ) == null) {
candidates.add( n );
}
}
if (candidates.size() > 0) {
Swarm clone = split();
clone.HP = (HP - damage) / 2;
clone.pos = Random.element( candidates );
clone.state = clone.HUNTING;
if (Dungeon.level.map[clone.pos] == Terrain.DOOR) {
Door.enter( clone.pos );
}
GameScene.add( clone, SPLIT_DELAY );
Actor.addDelayed( new Pushing( clone, pos, clone.pos ), -1 );
HP -= clone.HP;
}
}
return damage;
}
示例4: build
@Override
protected boolean build() {
Painter.fill( this, _Left(), TOP, HALL_WIDTH, HALL_HEIGHT, Terrain.WATER );
int y = TOP + 1;
while (y < TOP + HALL_HEIGHT) {
map[y * getWidth() + _Center() - 3] = Terrain.STATUE;
map[y * getWidth() + _Center() + 3] = Terrain.STATUE;
y += 2;
}
int pedestal_1 = (TOP + HALL_HEIGHT / 4) * getWidth() + _Center() - 2;
int pedestal_2 = (TOP + HALL_HEIGHT / 2 + HALL_HEIGHT / 4) * getWidth() + _Center() - 2;
int pedestal_3 = (TOP + HALL_HEIGHT / 4) * getWidth() + _Center() + 2;
int pedestal_4 = (TOP + HALL_HEIGHT / 2 + HALL_HEIGHT / 4) * getWidth() + _Center() + 2;
map[pedestal_1] = map[pedestal_2] = map[pedestal_3] = map[pedestal_4] = Terrain.PEDESTAL;
setExit((TOP - 1) * getWidth() + _Center(),0);
arenaDoor = (TOP + HALL_HEIGHT) * getWidth() + _Center();
map[arenaDoor] = Terrain.DOOR;
Painter.fill( this, _Left(), TOP + HALL_HEIGHT + 1, HALL_WIDTH, CHAMBER_HEIGHT, Terrain.WATER );
Painter.fill( this, _Left(), TOP + HALL_HEIGHT + 1, 1, CHAMBER_HEIGHT, Terrain.BOOKSHELF );
Painter.fill( this, _Left() + HALL_WIDTH - 1, TOP + HALL_HEIGHT + 1, 1, CHAMBER_HEIGHT, Terrain.BOOKSHELF );
entrance = (TOP + HALL_HEIGHT + 2 + Random.Int( CHAMBER_HEIGHT - 1 )) * getWidth() + _Left() + (/*1 +*/ Random.Int( HALL_WIDTH-2 ));
map[entrance] = Terrain.ENTRANCE;
map[getExit(0)] = Terrain.LOCKED_EXIT;
return true;
}
示例5: split
public Mob split(int cell, int damage) {
Mob clone;
try {
clone = getClass().newInstance();
} catch (Exception e) {
throw new TrackedRuntimeException("split issue");
}
clone.hp(Math.max((hp() - damage) / 2, 1));
clone.setPos(cell);
clone.setState(clone.HUNTING);
if (Dungeon.level.map[clone.getPos()] == Terrain.DOOR) {
Door.enter(clone.getPos());
}
Dungeon.level.spawnMob(clone, SPLIT_DELAY);
Actor.addDelayed(new Pushing(clone, getPos(), clone.getPos()), -1);
if (buff(Burning.class) != null) {
Buff.affect(clone, Burning.class).reignite(clone);
}
if (buff(Poison.class) != null) {
Buff.affect(clone, Poison.class).set(2);
}
if (isPet()) {
Mob.makePet(clone, Dungeon.hero);
}
return clone;
}
示例6: move
public void move(int step) {
if(!isMovable()) {
return;
}
if (buff(Vertigo.class) != null && Dungeon.level.adjacent(getPos(), step)) { //ignore vertigo when blinking or teleporting
List<Integer> candidates = new ArrayList<>();
for (int dir : Level.NEIGHBOURS8) {
int p = getPos() + dir;
if (Dungeon.level.cellValid(p)) {
if ((Dungeon.level.passable[p] || Dungeon.level.avoid[p]) && Actor.findChar(p) == null) {
candidates.add(p);
}
}
}
if (candidates.isEmpty()) { // Nowhere to move? just stay then
return;
}
step = Random.element(candidates);
}
if (Dungeon.level.map[getPos()] == Terrain.OPEN_DOOR) {
Door.leave(getPos());
}
setPos(step);
if (!isFlying()) {
Dungeon.level.press(getPos(),this);
}
if (isFlying() && Dungeon.level.map[getPos()] == Terrain.DOOR) {
Door.enter(getPos());
}
if (this != Dungeon.hero) {
getSprite().setVisible(Dungeon.visible[getPos()] && invisible >= 0);
}
}