Search in sources :

Example 1 with SoundSource

use of de.gurkenlabs.litiengine.entities.SoundSource in project litiengine by gurkenlabs.

the class DebugRenderer method renderEntityDebugInfo.

public static void renderEntityDebugInfo(final Graphics2D g, final IEntity entity) {
    if (!Game.config().debug().isDebugEnabled()) {
        return;
    }
    if (Game.config().debug().renderEntityNames()) {
        drawMapId(g, entity);
    }
    if (Game.config().debug().renderHitBoxes() && entity instanceof ICombatEntity) {
        g.setColor(Color.RED);
        Game.graphics().renderOutline(g, ((ICombatEntity) entity).getHitBox());
    }
    if (Game.config().debug().renderBoundingBoxes()) {
        g.setColor(Color.RED);
        Game.graphics().renderOutline(g, entity.getBoundingBox());
        if (entity instanceof SoundSource) {
            final int range = ((SoundSource) entity).getRange();
            final float[] dash1 = { 10f };
            final BasicStroke dashed = new BasicStroke(.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash1, 0.0f);
            Game.graphics().renderOutline(g, new Ellipse2D.Double(entity.getBoundingBox().getCenterX() - range, entity.getBoundingBox().getCenterY() - range, range * 2d, range * 2d), dashed);
        }
    }
    if (Game.config().debug().renderCollisionBoxes() && entity instanceof ICollisionEntity) {
        final ICollisionEntity collisionEntity = (ICollisionEntity) entity;
        g.setColor(collisionEntity.hasCollision() ? Color.RED : Color.ORANGE);
        Game.graphics().renderOutline(g, collisionEntity.getCollisionBox());
    }
    final EntityRenderEvent event = new EntityRenderEvent(g, entity);
    for (EntityRenderedListener listener : entityDebugListeners) {
        listener.rendered(event);
    }
}
Also used : SoundSource(de.gurkenlabs.litiengine.entities.SoundSource) BasicStroke(java.awt.BasicStroke) ICombatEntity(de.gurkenlabs.litiengine.entities.ICombatEntity) EntityRenderedListener(de.gurkenlabs.litiengine.entities.EntityRenderedListener) EntityRenderEvent(de.gurkenlabs.litiengine.entities.EntityRenderEvent) ICollisionEntity(de.gurkenlabs.litiengine.entities.ICollisionEntity) Point(java.awt.Point) Ellipse2D(java.awt.geom.Ellipse2D)

Example 2 with SoundSource

use of de.gurkenlabs.litiengine.entities.SoundSource in project litiengine by gurkenlabs.

the class SoundSourceMapObjectLoader method load.

@Override
public Collection<IEntity> load(Environment environment, IMapObject mapObject) {
    Collection<IEntity> entities = new ArrayList<>();
    if (!this.isMatchingType(mapObject)) {
        return entities;
    }
    final SoundSource sound = this.createSoundSource(mapObject);
    loadDefaultProperties(sound, mapObject);
    entities.add(sound);
    return entities;
}
Also used : SoundSource(de.gurkenlabs.litiengine.entities.SoundSource) IEntity(de.gurkenlabs.litiengine.entities.IEntity) ArrayList(java.util.ArrayList)

Example 3 with SoundSource

use of de.gurkenlabs.litiengine.entities.SoundSource in project litiengine by gurkenlabs.

the class Environment method remove.

/**
 * Removes the specified entity from this environment and unloads is.
 *
 * @param entity
 *          The entity to be removed.
 *
 * @see #remove(int)
 * @see #remove(String)
 * @see #removeAll(Iterable)
 * @see #unload(IEntity)
 * @see EnvironmentEntityListener#entityRemoved(IEntity)
 * @see IEntity#removed(Environment)
 * @see EntityListener#removed(IEntity, Environment)
 */
public void remove(final IEntity entity) {
    if (entity == null) {
        return;
    }
    this.allEntities.remove(entity.getMapId());
    Iterator<List<IEntity>> iter = this.layerEntities.values().iterator();
    while (iter.hasNext()) {
        List<IEntity> layer = iter.next();
        if (layer.remove(entity) && layer.isEmpty()) {
            iter.remove();
        }
    }
    if (this.miscEntities.get(entity.getRenderType()) != null) {
        this.miscEntities.get(entity.getRenderType()).values().remove(entity);
    }
    for (String tag : entity.getTags()) {
        if (this.getEntitiesByTag().containsKey(tag)) {
            this.getEntitiesByTag().get(tag).remove(entity);
            if (this.getEntitiesByTag().get(tag).isEmpty()) {
                this.getEntitiesByTag().remove(tag);
            }
        }
    }
    if (entity instanceof Emitter) {
        Emitter emitter = (Emitter) entity;
        this.removeEmitter(emitter);
    }
    if (entity instanceof MapArea) {
        this.mapAreas.remove(entity);
    }
    if (entity instanceof Prop) {
        this.props.remove(entity);
    }
    if (entity instanceof Creature) {
        this.creatures.remove(entity);
    }
    if (entity instanceof CollisionBox) {
        this.colliders.remove(entity);
        this.staticShadows.removeIf(x -> x.getOrigin() != null && x.getOrigin().equals(entity));
    }
    if (entity instanceof LightSource) {
        this.lightSources.remove(entity);
        this.updateLighting(entity);
    }
    if (entity instanceof Trigger) {
        this.triggers.remove(entity);
    }
    if (entity instanceof Spawnpoint) {
        this.spawnPoints.remove(entity);
    }
    if (entity instanceof SoundSource) {
        this.soundSources.remove(entity);
    }
    if (entity instanceof StaticShadow) {
        this.staticShadows.remove(entity);
        this.updateLighting(entity);
    }
    if (entity instanceof IMobileEntity) {
        this.mobileEntities.values().remove(entity);
    }
    if (entity instanceof ICombatEntity) {
        this.combatEntities.values().remove(entity);
    }
    this.unload(entity);
    this.fireEntityEvent(l -> l.entityRemoved(entity));
}
Also used : SoundSource(de.gurkenlabs.litiengine.entities.SoundSource) Emitter(de.gurkenlabs.litiengine.graphics.emitters.Emitter) Creature(de.gurkenlabs.litiengine.entities.Creature) ICombatEntity(de.gurkenlabs.litiengine.entities.ICombatEntity) IEntity(de.gurkenlabs.litiengine.entities.IEntity) Prop(de.gurkenlabs.litiengine.entities.Prop) MapArea(de.gurkenlabs.litiengine.entities.MapArea) Trigger(de.gurkenlabs.litiengine.entities.Trigger) StaticShadow(de.gurkenlabs.litiengine.entities.StaticShadow) IMobileEntity(de.gurkenlabs.litiengine.entities.IMobileEntity) List(java.util.List) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) ArrayList(java.util.ArrayList) LightSource(de.gurkenlabs.litiengine.entities.LightSource) Spawnpoint(de.gurkenlabs.litiengine.entities.Spawnpoint) CollisionBox(de.gurkenlabs.litiengine.entities.CollisionBox)

Example 4 with SoundSource

use of de.gurkenlabs.litiengine.entities.SoundSource in project litiengine by gurkenlabs.

the class Environment method addEntity.

private void addEntity(final IEntity entity) {
    int desiredID = entity.getMapId();
    // assign local map id if the entity's mapID is invalid
    if (desiredID == 0 || this.allEntities.keySet().contains(desiredID)) {
        entity.setMapId(getLocalMapId());
        log.fine(() -> String.format("Entity [%s] was assigned a local mapID because #%d was already taken or invalid.", entity, desiredID));
    }
    if (entity instanceof Emitter) {
        Emitter emitter = (Emitter) entity;
        this.addEmitter(emitter);
    }
    if (entity instanceof ICombatEntity) {
        this.combatEntities.put(entity.getMapId(), (ICombatEntity) entity);
    }
    if (entity instanceof IMobileEntity) {
        this.mobileEntities.put(entity.getMapId(), (IMobileEntity) entity);
    }
    if (entity instanceof Prop) {
        this.props.add((Prop) entity);
    }
    if (entity instanceof Creature) {
        this.creatures.add((Creature) entity);
    }
    if (entity instanceof CollisionBox) {
        this.colliders.add((CollisionBox) entity);
    }
    if (entity instanceof LightSource) {
        this.lightSources.add((LightSource) entity);
    }
    if (entity instanceof Trigger) {
        this.triggers.add((Trigger) entity);
    }
    if (entity instanceof Spawnpoint) {
        this.spawnPoints.add((Spawnpoint) entity);
    }
    if (entity instanceof SoundSource) {
        this.soundSources.add((SoundSource) entity);
    }
    if (entity instanceof StaticShadow) {
        this.staticShadows.add((StaticShadow) entity);
    } else if (entity instanceof MapArea) {
        this.mapAreas.add((MapArea) entity);
    }
    for (String rawTag : entity.getTags()) {
        if (rawTag == null) {
            continue;
        }
        final String tag = rawTag.trim().toLowerCase();
        if (tag.isEmpty()) {
            continue;
        }
        this.getEntitiesByTag().computeIfAbsent(tag, t -> new CopyOnWriteArrayList<>()).add(entity);
    }
    // we need to load the new entity manually
    if (this.loaded) {
        this.load(entity);
    }
    this.allEntities.put(entity.getMapId(), entity);
}
Also used : SoundSource(de.gurkenlabs.litiengine.entities.SoundSource) Color(java.awt.Color) Arrays(java.util.Arrays) AmbientLight(de.gurkenlabs.litiengine.graphics.AmbientLight) Point2D(java.awt.geom.Point2D) StaticShadow(de.gurkenlabs.litiengine.entities.StaticShadow) Rectangle2D(java.awt.geom.Rectangle2D) GameMetrics(de.gurkenlabs.litiengine.GameMetrics) ColorLayer(de.gurkenlabs.litiengine.graphics.ColorLayer) ILayer(de.gurkenlabs.litiengine.environment.tilemap.ILayer) DebugRenderer(de.gurkenlabs.litiengine.graphics.DebugRenderer) IMovementController(de.gurkenlabs.litiengine.physics.IMovementController) GravityForce(de.gurkenlabs.litiengine.physics.GravityForce) Map(java.util.Map) Trigger(de.gurkenlabs.litiengine.entities.Trigger) Creature(de.gurkenlabs.litiengine.entities.Creature) Shape(java.awt.Shape) EnumMap(java.util.EnumMap) Predicate(java.util.function.Predicate) Collection(java.util.Collection) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) EntityInfo(de.gurkenlabs.litiengine.entities.EntityInfo) RenderType(de.gurkenlabs.litiengine.graphics.RenderType) AffineTransform(java.awt.geom.AffineTransform) Logger(java.util.logging.Logger) IEntity(de.gurkenlabs.litiengine.entities.IEntity) Collectors(java.util.stream.Collectors) List(java.util.List) IMapObjectLayer(de.gurkenlabs.litiengine.environment.tilemap.IMapObjectLayer) Modifier(java.lang.reflect.Modifier) Entry(java.util.Map.Entry) Optional(java.util.Optional) Spawnpoint(de.gurkenlabs.litiengine.entities.Spawnpoint) Game(de.gurkenlabs.litiengine.Game) EntityListener(de.gurkenlabs.litiengine.entities.EntityListener) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) GeometricUtilities(de.gurkenlabs.litiengine.util.geom.GeometricUtilities) CollisionBox(de.gurkenlabs.litiengine.entities.CollisionBox) LightSource(de.gurkenlabs.litiengine.entities.LightSource) IMap(de.gurkenlabs.litiengine.environment.tilemap.IMap) MapUtilities(de.gurkenlabs.litiengine.environment.tilemap.MapUtilities) Quality(de.gurkenlabs.litiengine.configuration.Quality) IMapObject(de.gurkenlabs.litiengine.environment.tilemap.IMapObject) ArrayList(java.util.ArrayList) Level(java.util.logging.Level) Blueprint(de.gurkenlabs.litiengine.environment.tilemap.xml.Blueprint) Graphics2D(java.awt.Graphics2D) StaticShadowLayer(de.gurkenlabs.litiengine.graphics.StaticShadowLayer) Prop(de.gurkenlabs.litiengine.entities.Prop) BiConsumer(java.util.function.BiConsumer) ICollisionEntity(de.gurkenlabs.litiengine.entities.ICollisionEntity) MapProperty(de.gurkenlabs.litiengine.environment.tilemap.MapProperty) MapArea(de.gurkenlabs.litiengine.entities.MapArea) Iterator(java.util.Iterator) Emitter(de.gurkenlabs.litiengine.graphics.emitters.Emitter) IRenderable(de.gurkenlabs.litiengine.graphics.IRenderable) Resources(de.gurkenlabs.litiengine.resources.Resources) ICombatEntity(de.gurkenlabs.litiengine.entities.ICombatEntity) Consumer(java.util.function.Consumer) MapObjectType(de.gurkenlabs.litiengine.environment.tilemap.MapObjectType) TimeUtilities(de.gurkenlabs.litiengine.util.TimeUtilities) Direction(de.gurkenlabs.litiengine.Direction) IMobileEntity(de.gurkenlabs.litiengine.entities.IMobileEntity) StaticShadowType(de.gurkenlabs.litiengine.graphics.StaticShadowType) RenderEngine(de.gurkenlabs.litiengine.graphics.RenderEngine) SoundSource(de.gurkenlabs.litiengine.entities.SoundSource) Collections(java.util.Collections) IUpdateable(de.gurkenlabs.litiengine.IUpdateable) MapRenderer(de.gurkenlabs.litiengine.environment.tilemap.MapRenderer) Emitter(de.gurkenlabs.litiengine.graphics.emitters.Emitter) ICombatEntity(de.gurkenlabs.litiengine.entities.ICombatEntity) Creature(de.gurkenlabs.litiengine.entities.Creature) Prop(de.gurkenlabs.litiengine.entities.Prop) MapArea(de.gurkenlabs.litiengine.entities.MapArea) Spawnpoint(de.gurkenlabs.litiengine.entities.Spawnpoint) Blueprint(de.gurkenlabs.litiengine.environment.tilemap.xml.Blueprint) Trigger(de.gurkenlabs.litiengine.entities.Trigger) StaticShadow(de.gurkenlabs.litiengine.entities.StaticShadow) IMobileEntity(de.gurkenlabs.litiengine.entities.IMobileEntity) LightSource(de.gurkenlabs.litiengine.entities.LightSource) Spawnpoint(de.gurkenlabs.litiengine.entities.Spawnpoint) CollisionBox(de.gurkenlabs.litiengine.entities.CollisionBox) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList)

Example 5 with SoundSource

use of de.gurkenlabs.litiengine.entities.SoundSource in project litiengine by gurkenlabs.

the class SoundSourceMapObjectLoader method createSoundSource.

protected SoundSource createSoundSource(IMapObject mapObject) {
    SoundSource sound = new SoundSource();
    sound.setSound(mapObject.getStringValue(MapObjectProperty.SOUND_NAME));
    sound.setVolume(mapObject.getFloatValue(MapObjectProperty.SOUND_VOLUME));
    sound.setLoop(mapObject.getBoolValue(MapObjectProperty.SOUND_LOOP));
    sound.setRange(mapObject.getIntValue(MapObjectProperty.SOUND_RANGE));
    return sound;
}
Also used : SoundSource(de.gurkenlabs.litiengine.entities.SoundSource)

Aggregations

SoundSource (de.gurkenlabs.litiengine.entities.SoundSource)5 ICombatEntity (de.gurkenlabs.litiengine.entities.ICombatEntity)3 IEntity (de.gurkenlabs.litiengine.entities.IEntity)3 ArrayList (java.util.ArrayList)3 CollisionBox (de.gurkenlabs.litiengine.entities.CollisionBox)2 Creature (de.gurkenlabs.litiengine.entities.Creature)2 ICollisionEntity (de.gurkenlabs.litiengine.entities.ICollisionEntity)2 IMobileEntity (de.gurkenlabs.litiengine.entities.IMobileEntity)2 LightSource (de.gurkenlabs.litiengine.entities.LightSource)2 MapArea (de.gurkenlabs.litiengine.entities.MapArea)2 Prop (de.gurkenlabs.litiengine.entities.Prop)2 Spawnpoint (de.gurkenlabs.litiengine.entities.Spawnpoint)2 StaticShadow (de.gurkenlabs.litiengine.entities.StaticShadow)2 Trigger (de.gurkenlabs.litiengine.entities.Trigger)2 Emitter (de.gurkenlabs.litiengine.graphics.emitters.Emitter)2 List (java.util.List)2 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)2 Direction (de.gurkenlabs.litiengine.Direction)1 Game (de.gurkenlabs.litiengine.Game)1 GameMetrics (de.gurkenlabs.litiengine.GameMetrics)1