Made ObserverCommands and made racestate an observable. ObserverCommands observes the race passes in the params. #story[1196]
This commit is contained in:
@@ -743,4 +743,10 @@ public class MockRace extends RaceState {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Made public, so race logic can control it
|
||||||
|
*/
|
||||||
|
public void setChanged() {
|
||||||
|
super.setChanged();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -185,6 +185,10 @@ public class RaceLogic implements RunnableWithFramePeriod, Observer {
|
|||||||
previousFrameTime = currentTime;
|
previousFrameTime = currentTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Notify Observers
|
||||||
|
race.setChanged();
|
||||||
|
race.notifyObservers();
|
||||||
|
|
||||||
waitForFramePeriod(previousFrameTime, currentTime, 50);
|
waitForFramePeriod(previousFrameTime, currentTime, 50);
|
||||||
previousFrameTime = currentTime;
|
previousFrameTime = currentTime;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package mock.model.commandFactory;
|
|||||||
import mock.model.MockBoat;
|
import mock.model.MockBoat;
|
||||||
import mock.model.MockRace;
|
import mock.model.MockRace;
|
||||||
|
|
||||||
|
import java.util.Observer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows RaceLogic to control MockRace state according to the Command pattern
|
* Allows RaceLogic to control MockRace state according to the Command pattern
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package mock.model.commandFactory;
|
||||||
|
|
||||||
|
import mock.model.MockBoat;
|
||||||
|
import mock.model.MockRace;
|
||||||
|
|
||||||
|
import java.util.Observer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Command that can observe the race
|
||||||
|
*/
|
||||||
|
public abstract class ObserverCommand implements Command, Observer {
|
||||||
|
MockRace race;
|
||||||
|
MockBoat boat;
|
||||||
|
|
||||||
|
public ObserverCommand(MockRace race, MockBoat boat) {
|
||||||
|
this.race = race;
|
||||||
|
this.boat = boat;
|
||||||
|
race.addObserver(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,14 +3,13 @@ package mock.model.commandFactory;
|
|||||||
import mock.model.MockBoat;
|
import mock.model.MockBoat;
|
||||||
import mock.model.MockRace;
|
import mock.model.MockRace;
|
||||||
|
|
||||||
public class SailsCommand implements Command {
|
import java.util.Observable;
|
||||||
private MockRace race;
|
|
||||||
private MockBoat boat;
|
public class SailsCommand extends ObserverCommand {
|
||||||
private boolean sailsOut;
|
private boolean sailsOut;
|
||||||
|
|
||||||
public SailsCommand(MockRace race, MockBoat boat, Boolean sailsOut) {
|
public SailsCommand(MockRace race, MockBoat boat, Boolean sailsOut) {
|
||||||
this.race = race;
|
super(race, boat);
|
||||||
this.boat = boat;
|
|
||||||
this.sailsOut = sailsOut;
|
this.sailsOut = sailsOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -18,4 +17,9 @@ public class SailsCommand implements Command {
|
|||||||
public void execute() {
|
public void execute() {
|
||||||
this.boat.setSailsOut(this.sailsOut);
|
this.boat.setSailsOut(this.sailsOut);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Observable o, Object arg) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,12 +4,12 @@ import mock.model.MockBoat;
|
|||||||
import mock.model.MockRace;
|
import mock.model.MockRace;
|
||||||
import shared.model.Bearing;
|
import shared.model.Bearing;
|
||||||
|
|
||||||
|
import java.util.Observable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command class for tacking and gybing
|
* Command class for tacking and gybing
|
||||||
*/
|
*/
|
||||||
public class TackGybeCommand implements Command {
|
public class TackGybeCommand extends ObserverCommand {
|
||||||
private MockRace race;
|
|
||||||
private MockBoat boat;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for class
|
* Constructor for class
|
||||||
@@ -17,8 +17,7 @@ public class TackGybeCommand implements Command {
|
|||||||
* @param boat mock boat to update
|
* @param boat mock boat to update
|
||||||
*/
|
*/
|
||||||
public TackGybeCommand(MockRace race, MockBoat boat) {
|
public TackGybeCommand(MockRace race, MockBoat boat) {
|
||||||
this.race = race;
|
super(race, boat);
|
||||||
this.boat = boat;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -49,5 +48,9 @@ public class TackGybeCommand implements Command {
|
|||||||
return phi > 180 ? 360 - phi : phi;
|
return phi > 180 ? 360 - phi : phi;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Observable o, Object arg) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,12 +3,12 @@ package mock.model.commandFactory;
|
|||||||
import mock.model.MockBoat;
|
import mock.model.MockBoat;
|
||||||
import mock.model.MockRace;
|
import mock.model.MockRace;
|
||||||
|
|
||||||
|
import java.util.Observable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Command class for autoVMG
|
* Command class for autoVMG
|
||||||
*/
|
*/
|
||||||
public class VMGCommand implements Command {
|
public class VMGCommand extends ObserverCommand {
|
||||||
private MockRace race;
|
|
||||||
private MockBoat boat;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for class
|
* Constructor for class
|
||||||
@@ -16,8 +16,7 @@ public class VMGCommand implements Command {
|
|||||||
* @param boat mock boat to update
|
* @param boat mock boat to update
|
||||||
*/
|
*/
|
||||||
public VMGCommand(MockRace race, MockBoat boat) {
|
public VMGCommand(MockRace race, MockBoat boat) {
|
||||||
this.race = race;
|
super(race, boat);
|
||||||
this.boat = boat;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -28,4 +27,9 @@ public class VMGCommand implements Command {
|
|||||||
boat.setAutoVMG(true);
|
boat.setAutoVMG(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Observable o, Object arg) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,17 +4,16 @@ import mock.model.MockBoat;
|
|||||||
import mock.model.MockRace;
|
import mock.model.MockRace;
|
||||||
import shared.model.Bearing;
|
import shared.model.Bearing;
|
||||||
|
|
||||||
|
import java.util.Observable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by connortaylorbrown on 4/08/17.
|
* Created by connortaylorbrown on 4/08/17.
|
||||||
*/
|
*/
|
||||||
public class WindCommand implements Command {
|
public class WindCommand extends ObserverCommand {
|
||||||
private MockRace race;
|
|
||||||
private MockBoat boat;
|
|
||||||
private int direction;
|
private int direction;
|
||||||
|
|
||||||
public WindCommand(MockRace race, MockBoat boat, boolean upwind) {
|
public WindCommand(MockRace race, MockBoat boat, boolean upwind) {
|
||||||
this.race = race;
|
super(race, boat);
|
||||||
this.boat = boat;
|
|
||||||
this.direction = upwind? -1 : 1;
|
this.direction = upwind? -1 : 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,4 +33,9 @@ public class WindCommand implements Command {
|
|||||||
|
|
||||||
boat.setBearing(Bearing.fromDegrees(heading + offset));
|
boat.setBearing(Bearing.fromDegrees(heading + offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update(Observable o, Object arg) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import shared.dataInput.RegattaDataSource;
|
|||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Observable;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -20,7 +21,7 @@ import java.util.List;
|
|||||||
* This is a base class inherited by {@link mock.model.MockRace} and {@link visualiser.model.VisualiserRaceState}.
|
* This is a base class inherited by {@link mock.model.MockRace} and {@link visualiser.model.VisualiserRaceState}.
|
||||||
* Has a course, state, wind, boundaries, etc.... Boats are added by inheriting classes (see {@link Boat}, {@link mock.model.MockBoat}, {@link visualiser.model.VisualiserBoat}.
|
* Has a course, state, wind, boundaries, etc.... Boats are added by inheriting classes (see {@link Boat}, {@link mock.model.MockBoat}, {@link visualiser.model.VisualiserBoat}.
|
||||||
*/
|
*/
|
||||||
public abstract class RaceState {
|
public abstract class RaceState extends Observable{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user