aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/fr/umlv/java/wallj/block/BombBlock.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/fr/umlv/java/wallj/block/BombBlock.java')
-rw-r--r--src/main/java/fr/umlv/java/wallj/block/BombBlock.java10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/main/java/fr/umlv/java/wallj/block/BombBlock.java b/src/main/java/fr/umlv/java/wallj/block/BombBlock.java
index 4f310eb..5570583 100644
--- a/src/main/java/fr/umlv/java/wallj/block/BombBlock.java
+++ b/src/main/java/fr/umlv/java/wallj/block/BombBlock.java
@@ -26,6 +26,7 @@ public class BombBlock extends JBoxBlock {
26 private static final Duration MAX_TIME = Duration.ofSeconds(9); 26 private static final Duration MAX_TIME = Duration.ofSeconds(9);
27 27
28 private Duration timer = MIN_TIME; 28 private Duration timer = MIN_TIME;
29 private boolean ignited = false;
29 30
30 BombBlock(Vec2 pos) { 31 BombBlock(Vec2 pos) {
31 super(BlockType.BOMB, BodyType.STATIC, SolidDef.squareShape(), pos); 32 super(BlockType.BOMB, BodyType.STATIC, SolidDef.squareShape(), pos);
@@ -44,6 +45,7 @@ public class BombBlock extends JBoxBlock {
44 public Stream<Event> update(Context context) { 45 public Stream<Event> update(Context context) {
45 return Updateables.updateAll(context, 46 return Updateables.updateAll(context,
46 this::handleBombConfiguration, 47 this::handleBombConfiguration,
48 this::handleSimulationStart,
47 this::consume, 49 this::consume,
48 this::paint); 50 this::paint);
49 } 51 }
@@ -55,8 +57,14 @@ public class BombBlock extends JBoxBlock {
55 return Stream.empty(); 57 return Stream.empty();
56 } 58 }
57 59
60 private Stream<Event> handleSimulationStart(Context context) {
61 Events.findFirst(context.getEvents(), SimulationStartEvent.class)
62 .ifPresent(startEvent -> ignited = true);
63 return Stream.empty();
64 }
65
58 private Stream<Event> consume(Context context) { 66 private Stream<Event> consume(Context context) {
59 decrementTimer(context.getTimeDelta()); 67 if (ignited) decrementTimer(context.getTimeDelta());
60 return timer.isNegative() ? 68 return timer.isNegative() ?
61 Stream.of(new BombExplosionEvent(TileVec2.of(getPos())), new BlockDestroyEvent(this)) : 69 Stream.of(new BombExplosionEvent(TileVec2.of(getPos())), new BlockDestroyEvent(this)) :
62 Stream.empty(); 70 Stream.empty();