Skip to content

Commit

Permalink
Load custom emitters from the Resource bundle.
Browse files Browse the repository at this point in the history
  • Loading branch information
steffen-wilke committed Mar 21, 2020
1 parent 6f1eb7a commit 8ea0151
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 3 deletions.
7 changes: 4 additions & 3 deletions src/de/gurkenlabs/litiengine/environment/EntitySpawner.java
Expand Up @@ -3,6 +3,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.function.Function;
import java.util.function.IntFunction;

import de.gurkenlabs.litiengine.Game;
Expand All @@ -19,7 +20,7 @@ public abstract class EntitySpawner<T extends IEntity> implements IEntitySpawner
private int spawnDelay;
private SpawnMode spawnMode;
private List<Spawnpoint> spawnpoints;
private IntFunction<List<Spawnpoint>> customSpawnpoints;
private Function<IEntitySpawner<T>, List<Spawnpoint>> customSpawnpoints;

/**
* Initializes a new instance of the <code>EntitySpawner</code> class.
Expand All @@ -41,7 +42,7 @@ public EntitySpawner(final List<Spawnpoint> spawnpoints, final int interval, fin
this.spawnMode = SpawnMode.ALLSPAWNPOINTS;
}

public EntitySpawner(final int interval, final int amount, IntFunction<List<Spawnpoint>> spawnpointCallback) {
public EntitySpawner(final int interval, final int amount, Function<IEntitySpawner<T>, List<Spawnpoint>> spawnpointCallback) {
this(new ArrayList<Spawnpoint>(), interval, amount);
Objects.nonNull(spawnpointCallback);

Expand Down Expand Up @@ -130,7 +131,7 @@ protected void spawnNewEntities() {
}
break;
case CUSTOMSPAWNPOINTS:
List<Spawnpoint> spawnPoints = this.customSpawnpoints.apply(this.getSpawnAmount());
List<Spawnpoint> spawnPoints = this.customSpawnpoints.apply(this);

int index = 0;
for (Spawnpoint spawn : spawnPoints) {
Expand Down
Expand Up @@ -112,6 +112,14 @@ public static EmitterData load(EmitterData emitterData) {
return emitterData;
}

public static CustomEmitter get(String name) {
if (loadedCustomEmitters.containsKey(name)) {
return new CustomEmitter(loadedCustomEmitters.get(name));
}

return null;
}

public EmitterData getEmitterData() {
return this.emitterData;
}
Expand Down
7 changes: 7 additions & 0 deletions src/de/gurkenlabs/litiengine/resources/Resources.java
Expand Up @@ -21,6 +21,8 @@
import de.gurkenlabs.litiengine.environment.tilemap.xml.Blueprint;
import de.gurkenlabs.litiengine.environment.tilemap.xml.Tileset;
import de.gurkenlabs.litiengine.graphics.Spritesheet;
import de.gurkenlabs.litiengine.graphics.emitters.xml.CustomEmitter;
import de.gurkenlabs.litiengine.graphics.emitters.xml.EmitterData;
import de.gurkenlabs.litiengine.sound.Sound;
import de.gurkenlabs.litiengine.util.TimeUtilities;

Expand Down Expand Up @@ -220,6 +222,11 @@ public static void load(final URL gameResourceFile) {
}

log.log(Level.INFO, "{0} sprites loaded to memory", new Object[] { spriteload });

for (final EmitterData emitter : file.getEmitters()) {
CustomEmitter.load(emitter);
}

final double loadTime = TimeUtilities.nanoToMs(System.nanoTime() - loadStart);

log.log(Level.INFO, "loading game resources from {0} took {1} ms", new Object[] { gameResourceFile, loadTime });
Expand Down

0 comments on commit 8ea0151

Please sign in to comment.