From b902b05e5e9e14c0f0d21049795d4d3da65c6e68 Mon Sep 17 00:00:00 2001 From: Connor Taylor-Brown Date: Tue, 12 Sep 2017 11:46:57 +1200 Subject: [PATCH] Wrote possible fix for issue #50 (Composite command tries to remove non-existent element) --- .../java/mock/model/commandFactory/CompositeCommand.java | 8 ++++---- .../main/java/visualiser/Controllers/RaceController.java | 5 +++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/racevisionGame/src/main/java/mock/model/commandFactory/CompositeCommand.java b/racevisionGame/src/main/java/mock/model/commandFactory/CompositeCommand.java index 74c5e95b..a931a85a 100644 --- a/racevisionGame/src/main/java/mock/model/commandFactory/CompositeCommand.java +++ b/racevisionGame/src/main/java/mock/model/commandFactory/CompositeCommand.java @@ -1,7 +1,7 @@ package mock.model.commandFactory; -import java.util.ArrayDeque; import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedDeque; /** * Wraps multiple commands into a composite to execute queued commands during a frame. @@ -10,15 +10,15 @@ public class CompositeCommand implements Command { private Queue commands; public CompositeCommand() { - this.commands = new ArrayDeque<>(); + this.commands = new ConcurrentLinkedDeque<>(); } public void addCommand(Command command) { - commands.add(command); + commands.offer(command); } @Override public void execute() { - while(!commands.isEmpty()) commands.remove().execute(); + while(commands.peek() != null) commands.poll().execute(); } } diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java index f4eacb5e..4af633e9 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceController.java @@ -246,6 +246,11 @@ public class RaceController extends Controller { } }; trackBoat.start(); + + System.out.println(boat.getCurrentLeg().getEndCompoundMark().toString()); + boat.legProperty().addListener((o, prev, curr) -> { + System.out.println(curr.getEndCompoundMark().toString()); + }); } // Fix initial bird's-eye position view3D.updatePivot(new Translate(250, 0, 210));