|
@@ -8,6 +8,7 @@ import java.util.TreeSet;
|
|
|
import java.util.stream.Collectors;
|
|
|
import me.hammerle.supersnuvi.entity.Entity;
|
|
|
import me.hammerle.supersnuvi.entity.EntityBuilder;
|
|
|
+import me.hammerle.supersnuvi.rendering.Game;
|
|
|
import me.hammerle.supersnuvi.tiles.BottledSoulTile;
|
|
|
import me.hammerle.supersnuvi.tiles.Location;
|
|
|
import me.hammerle.supersnuvi.tiles.StartTile;
|
|
@@ -81,21 +82,12 @@ public final class Level
|
|
|
spawns.add(new Point(5, 5));
|
|
|
}
|
|
|
|
|
|
- /*if(name.equals("00-Tech Demo"))
|
|
|
+ if(name.equals("00-Tech Demo"))
|
|
|
{
|
|
|
- data.addLayer();
|
|
|
- int index = data.getLayers() - 1;
|
|
|
- data.clearLayer(index);
|
|
|
- int width = data.getWidth();
|
|
|
- int height = data.getHeight();
|
|
|
- for(int x = 10; x < width; x++)
|
|
|
- {
|
|
|
- for(int y = 0; y < height; y++)
|
|
|
- {
|
|
|
- data.setTile(index, x, y, 224 + Math.min(15, x - 10));
|
|
|
- }
|
|
|
- }
|
|
|
- }*/
|
|
|
+ int index = data.getBackgroundIndex() + 1;
|
|
|
+ data.setTile(index, 5, 5, 2);
|
|
|
+ data.setTile(index, 30, 5, 1);
|
|
|
+ }
|
|
|
|
|
|
resetLevel();
|
|
|
|
|
@@ -136,6 +128,7 @@ public final class Level
|
|
|
public void resetLevel()
|
|
|
{
|
|
|
state.resetTiles();
|
|
|
+ data.activateEntities();
|
|
|
souls = 0;
|
|
|
shouldReset = false;
|
|
|
done = false;
|
|
@@ -184,20 +177,34 @@ public final class Level
|
|
|
{
|
|
|
if(worldLoaded)
|
|
|
{
|
|
|
- if(hero.getY() < 0)
|
|
|
- {
|
|
|
- resetLevel();
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
time += 0.0125;
|
|
|
|
|
|
state.tickTiles();
|
|
|
|
|
|
+ // entity spawn layer
|
|
|
+ int startX = renderer.getFirstVisibleBlockX();
|
|
|
+ int startY = renderer.getFirstVisibleBlockY();
|
|
|
+ int endX = Math.min(renderer.getLastVisibleBlockX() + 1, data.getWidth());
|
|
|
+ int endY = Math.min(renderer.getLastVisibleBlockY() + 1, data.getHeight());
|
|
|
+ data.forEachEntity((x, y, tile) ->
|
|
|
+ {
|
|
|
+ if(tile > 0)
|
|
|
+ {
|
|
|
+ data.deactivateEntity(x, y);
|
|
|
+
|
|
|
+ Entity ent = EntityBuilder.fromId(tile, this, renderer.toCoord(x), renderer.toCoord(y));
|
|
|
+ if(ent != null)
|
|
|
+ {
|
|
|
+ entities.put(entityCounter++, ent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, startX, endX, startY, endY);
|
|
|
+
|
|
|
// doing entity logic first
|
|
|
- entities.values().forEach(entity ->
|
|
|
+ entities.values().removeIf(entity ->
|
|
|
{
|
|
|
entity.tick();
|
|
|
+ return entity.getHealth().shouldDespawn();
|
|
|
});
|
|
|
}
|
|
|
}
|