public List<T> valuesAsList() { return Arrays.asList(values().toArray().toArray()); } }
@Override protected boolean act() { //something caused our bomb to explode early, or be defused. Do nothing. if (bomb.fuse != this){ Actor.remove( this ); return true; } //look for our bomb, remove it from its heap, and blow it up. for (Heap heap : Dungeon.level.heaps.values()) { if (heap.items.contains(bomb)) { heap.items.remove(bomb); if (heap.items.isEmpty()){ heap.destroy(); } bomb.explode(heap.pos); Actor.remove(this); return true; } } //can't find our bomb, something must have removed it, do nothing. bomb.fuse = null; Actor.remove( this ); return true; } }
@Override public void destroy() { super.destroy(); for (Heap heap: Dungeon.level.heaps.values()) { if (heap.type == Heap.Type.FOR_SALE) { CellEmitter.get( heap.pos ).burst( ElmoParticle.FACTORY, 4 ); heap.destroy(); } } }
@Override protected boolean act() { //something caused our bomb to explode early, or be defused. Do nothing. if (bomb.fuse != this){ Actor.remove( this ); return true; } //look for our bomb, remove it from its heap, and blow it up. for (Heap heap : Dungeon.level.heaps.values()) { if (heap.items.contains(bomb)) { heap.items.remove(bomb); if (heap.items.isEmpty()){ heap.destroy(); } bomb.explode(heap.pos); Actor.remove(this); return true; } } //can't find our bomb, something must have removed it, do nothing. bomb.fuse = null; Actor.remove( this ); return true; } }
@Override public void destroy() { super.destroy(); for (Heap heap: Dungeon.level.heaps.values()) { if (heap.type == Heap.Type.FOR_SALE) { CellEmitter.get( heap.pos ).burst( ElmoParticle.FACTORY, 4 ); heap.destroy(); } } }
@Override public void storeInBundle( Bundle bundle ) { bundle.put( MAP, map ); bundle.put( VISITED, visited ); bundle.put( MAPPED, mapped ); bundle.put( ENTRANCE, entrance ); bundle.put( EXIT, exit ); bundle.put( HEAPS, heaps.values() ); bundle.put( PLANTS, plants.values() ); bundle.put( MOBS, mobs ); bundle.put( BLOBS, blobs.values() ); bundle.put( MOBS_SPAWNED, mobsSpawned ); }
private void clearEntities(Room safeArea){ for (Heap heap : heaps.values()){ if (safeArea == null || !safeArea.inside(cellToPoint(heap.pos))){ for (Item item : heap.items) storedItems.add(item); heap.destroy(); } } for (Mob mob : Dungeon.level.mobs.toArray(new Mob[Dungeon.level.mobs.size()])){ if (mob != tengu && (safeArea == null || !safeArea.inside(cellToPoint(mob.pos)))){ mob.destroy(); if (mob.sprite != null) mob.sprite.killAndErase(); } } for (Plant plant : plants.values()){ if (safeArea == null || !safeArea.inside(cellToPoint(plant.pos))){ plants.remove(plant.pos); } } }
private void clearEntities(Room safeArea){ for (Heap heap : heaps.values()){ if (safeArea == null || !safeArea.inside(cellToPoint(heap.pos))){ for (Item item : heap.items) storedItems.add(item); heap.destroy(); } } for (Mob mob : Dungeon.level.mobs.toArray(new Mob[Dungeon.level.mobs.size()])){ if (mob != tengu && (safeArea == null || !safeArea.inside(cellToPoint(mob.pos)))){ mob.destroy(); if (mob.sprite != null) mob.sprite.killAndErase(); } } for (Plant plant : plants.values()){ if (safeArea == null || !safeArea.inside(cellToPoint(plant.pos))){ plants.remove(plant.pos); } } }
@Override public void storeInBundle( Bundle bundle ) { bundle.put( VERSION, Game.versionCode ); bundle.put( WIDTH, width ); bundle.put( HEIGHT, height ); bundle.put( MAP, map ); bundle.put( VISITED, visited ); bundle.put( MAPPED, mapped ); bundle.put( ENTRANCE, entrance ); bundle.put( EXIT, exit ); bundle.put( LOCKED, locked ); bundle.put( HEAPS, heaps.values() ); bundle.put( PLANTS, plants.values() ); bundle.put( TRAPS, traps.values() ); bundle.put( CUSTOM_TILES, customTiles ); bundle.put( CUSTOM_WALLS, customWalls ); bundle.put( MOBS, mobs ); bundle.put( BLOBS, blobs.values() ); bundle.put( FEELING, feeling ); }
@Override protected void onClick( Touch touch ) { if (dragging) { dragging = false; } else { PointF p = Camera.main.screenToCamera( (int)touch.current.x, (int)touch.current.y ); for (Char mob : Dungeon.level.mobs.toArray(new Mob[0])){ if (mob.sprite != null && mob.sprite.overlapsPoint( p.x, p.y)){ select( mob.pos ); return; } } for (Heap heap : Dungeon.level.heaps.values()){ if (heap.sprite != null && heap.sprite.overlapsPoint( p.x, p.y)){ select( heap.pos ); return; } } select( ((DungeonTilemap)target).screenToTile( (int)touch.current.x, (int)touch.current.y, true ) ); } }
@Override protected void onClick( NoosaInputProcessor.Touch touch ) { if (dragging) { dragging = false; } else { PointF p = Camera.main.screenToCamera( (int)touch.current.x, (int)touch.current.y ); for (Char mob : Dungeon.level.mobs.toArray(new Mob[0])){ if (mob.sprite != null && mob.sprite.overlapsPoint( p.x, p.y)){ select( mob.pos ); return; } } for (Heap heap : Dungeon.level.heaps.values()){ if (heap.sprite != null && heap.sprite.overlapsPoint( p.x, p.y)){ select( heap.pos ); return; } } select( ((DungeonTilemap)target).screenToTile( (int)touch.current.x, (int)touch.current.y, true ) ); } }
@Override public void flee() { for (Heap heap: Dungeon.level.heaps.values()) { if (heap.type == Heap.Type.FOR_SALE) { CellEmitter.get( heap.pos ).burst( ElmoParticle.FACTORY, 4 ); heap.destroy(); } } destroy(); sprite.emitter().burst( Speck.factory( Speck.WOOL ), 15 ); sprite.killAndErase(); } }
@Override public void flee() { for (Heap heap: Dungeon.level.heaps.values()) { if (heap.type == Heap.Type.FOR_SALE) { CellEmitter.get( heap.pos ).burst( ElmoParticle.FACTORY, 4 ); heap.destroy(); } } destroy(); sprite.emitter().burst( Speck.factory( Speck.WOOL ), 15 ); sprite.killAndErase(); } }
for (Heap heap : Dungeon.level.heaps.values()) { if (heap.type == Heap.Type.BONES && !Dungeon.visible[heap.pos]) { candidates.add( heap );
protected void runAway() { for (Heap heap : Dungeon.level.heaps.values()) { if (heap.type == Heap.Type.FOR_SALE) { CellEmitter.get(heap.pos).burst( Speck.factory( Speck.WOOL ), 5 ); heap.destroy(); } } destroy(); sprite.killAndErase(); Journal.remove( Journal.Feature.SHOP ); CellEmitter.get( pos ).burst(Speck.factory(Speck.WOOL), 10); }
for (Heap h : level.heaps.values()){ BArray.or( level.visited, level.heroFOV, h.pos - 1 - level.width(), 3, level.visited ); BArray.or( level.visited, level.heroFOV, h.pos - 1, 3, level.visited );
for (Heap h : level.heaps.values()){ BArray.or( level.visited, level.heroFOV, h.pos - 1 - level.width(), 3, level.visited ); BArray.or( level.visited, level.heroFOV, h.pos - 1, 3, level.visited );
@Override public void doRead() { for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { mob.beckon( curUser.pos ); if (Dungeon.level.heroFOV[mob.pos]) { Buff.prolong(mob, Amok.class, 5f); } } for (Heap heap : Dungeon.level.heaps.values()) { if (heap.type == Heap.Type.MIMIC) { Mimic m = Mimic.spawnAt( heap.pos, heap.items ); if (m != null) { m.beckon( curUser.pos ); heap.destroy(); } } } GLog.w( Messages.get(this, "roar") ); setKnown(); curUser.sprite.centerEmitter().start( Speck.factory( Speck.SCREAM ), 0.3f, 3 ); Sample.INSTANCE.play( Assets.SND_CHALLENGE ); Invisibility.dispel(); readAnimation(); }
@Override public void doRead() { for (Mob mob : Dungeon.level.mobs.toArray( new Mob[0] )) { mob.beckon( curUser.pos ); if (Dungeon.level.heroFOV[mob.pos]) { Buff.prolong(mob, Amok.class, 5f); } } for (Heap heap : Dungeon.level.heaps.values()) { if (heap.type == Heap.Type.MIMIC) { Mimic m = Mimic.spawnAt( heap.pos, heap.items ); if (m != null) { m.beckon( curUser.pos ); heap.destroy(); } } } GLog.w( Messages.get(this, "roar") ); setKnown(); curUser.sprite.centerEmitter().start( Speck.factory( Speck.SCREAM ), 0.3f, 3 ); Sample.INSTANCE.play( Assets.SND_CHALLENGE ); Invisibility.dispel(); readAnimation(); }
@Override protected void doRead() { for (Heap heap : Dungeon.level.heaps.values()) { if (heap.type == Heap.Type.CHEST_MIMIC) { Mimic m = Mimic.spawnAt( heap.hp, heap.pos, heap.items );