- Dispatch commands with CompositeCommand - Single WindCommand handles upwind and downwind logic - Changed key bindings as Mac lacks PgUp PgDn - ControllerServer is observable, RaceLogic updates CompositeCommand as observermain
parent
851bbb4fde
commit
554f8a2a0f
@ -0,0 +1,23 @@
|
|||||||
|
package mock.model.commandFactory;
|
||||||
|
|
||||||
|
import java.util.Stack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wraps multiple commands into a composite to execute queued commands during a frame.
|
||||||
|
*/
|
||||||
|
public class CompositeCommand implements Command {
|
||||||
|
private Stack<Command> commands;
|
||||||
|
|
||||||
|
public CompositeCommand() {
|
||||||
|
this.commands = new Stack<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addCommand(Command command) {
|
||||||
|
commands.push(command);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
while(!commands.isEmpty()) commands.pop().execute();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,30 @@
|
|||||||
|
package mock.model.commandFactory;
|
||||||
|
|
||||||
|
import mock.model.MockBoat;
|
||||||
|
import mock.model.MockRace;
|
||||||
|
import shared.model.Bearing;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by connortaylorbrown on 4/08/17.
|
||||||
|
*/
|
||||||
|
public class WindCommand implements Command {
|
||||||
|
private MockRace race;
|
||||||
|
private MockBoat boat;
|
||||||
|
private int direction;
|
||||||
|
|
||||||
|
public WindCommand(MockRace race, MockBoat boat, boolean upwind) {
|
||||||
|
this.race = race;
|
||||||
|
this.boat = boat;
|
||||||
|
this.direction = upwind? 1 : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
double wind = race.getWindDirection().degrees();
|
||||||
|
double heading = boat.getBearing().degrees();
|
||||||
|
|
||||||
|
double offset = 3;
|
||||||
|
if(wind - heading < 0) offset *= -1 * direction;
|
||||||
|
boat.setBearing(Bearing.fromDegrees(heading + offset));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,31 @@
|
|||||||
|
package mock.model.commandFactory;
|
||||||
|
|
||||||
|
import mock.model.MockRace;
|
||||||
|
import network.Messages.Enums.BoatActionEnum;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import shared.model.Boat;
|
||||||
|
import shared.model.Race;
|
||||||
|
import visualiser.model.VisualiserRace;
|
||||||
|
|
||||||
|
import static org.testng.Assert.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by connortaylorbrown on 4/08/17.
|
||||||
|
*/
|
||||||
|
public class WindCommandTest {
|
||||||
|
private Race race;
|
||||||
|
private Boat boat;
|
||||||
|
private Command upwind;
|
||||||
|
private Command downwind;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() {
|
||||||
|
boat = new Boat(0, "Bob", "NZ");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void upwindCommandDecreasesAngle() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in new issue