diff options
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.java | 10 |
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(); |