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;
|
||||
}
|
||||
|
||||
// Notify Observers
|
||||
race.setChanged();
|
||||
race.notifyObservers();
|
||||
|
||||
waitForFramePeriod(previousFrameTime, currentTime, 50);
|
||||
previousFrameTime = currentTime;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package mock.model.commandFactory;
|
||||
import mock.model.MockBoat;
|
||||
import mock.model.MockRace;
|
||||
|
||||
import java.util.Observer;
|
||||
|
||||
/**
|
||||
* 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.MockRace;
|
||||
|
||||
public class SailsCommand implements Command {
|
||||
private MockRace race;
|
||||
private MockBoat boat;
|
||||
import java.util.Observable;
|
||||
|
||||
public class SailsCommand extends ObserverCommand {
|
||||
private boolean sailsOut;
|
||||
|
||||
public SailsCommand(MockRace race, MockBoat boat, Boolean sailsOut) {
|
||||
this.race = race;
|
||||
this.boat = boat;
|
||||
super(race, boat);
|
||||
this.sailsOut = sailsOut;
|
||||
}
|
||||
|
||||
@@ -18,4 +17,9 @@ public class SailsCommand implements Command {
|
||||
public void execute() {
|
||||
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 shared.model.Bearing;
|
||||
|
||||
import java.util.Observable;
|
||||
|
||||
/**
|
||||
* Command class for tacking and gybing
|
||||
*/
|
||||
public class TackGybeCommand implements Command {
|
||||
private MockRace race;
|
||||
private MockBoat boat;
|
||||
public class TackGybeCommand extends ObserverCommand {
|
||||
|
||||
/**
|
||||
* Constructor for class
|
||||
@@ -17,8 +17,7 @@ public class TackGybeCommand implements Command {
|
||||
* @param boat mock boat to update
|
||||
*/
|
||||
public TackGybeCommand(MockRace race, MockBoat boat) {
|
||||
this.race = race;
|
||||
this.boat = boat;
|
||||
super(race, boat);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -49,5 +48,9 @@ public class TackGybeCommand implements Command {
|
||||
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.MockRace;
|
||||
|
||||
import java.util.Observable;
|
||||
|
||||
/**
|
||||
* Command class for autoVMG
|
||||
*/
|
||||
public class VMGCommand implements Command {
|
||||
private MockRace race;
|
||||
private MockBoat boat;
|
||||
public class VMGCommand extends ObserverCommand {
|
||||
|
||||
/**
|
||||
* Constructor for class
|
||||
@@ -16,8 +16,7 @@ public class VMGCommand implements Command {
|
||||
* @param boat mock boat to update
|
||||
*/
|
||||
public VMGCommand(MockRace race, MockBoat boat) {
|
||||
this.race = race;
|
||||
this.boat = boat;
|
||||
super(race, boat);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -28,4 +27,9 @@ public class VMGCommand implements Command {
|
||||
boat.setAutoVMG(true);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Observable o, Object arg) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,17 +4,16 @@ import mock.model.MockBoat;
|
||||
import mock.model.MockRace;
|
||||
import shared.model.Bearing;
|
||||
|
||||
import java.util.Observable;
|
||||
|
||||
/**
|
||||
* Created by connortaylorbrown on 4/08/17.
|
||||
*/
|
||||
public class WindCommand implements Command {
|
||||
private MockRace race;
|
||||
private MockBoat boat;
|
||||
public class WindCommand extends ObserverCommand {
|
||||
private int direction;
|
||||
|
||||
public WindCommand(MockRace race, MockBoat boat, boolean upwind) {
|
||||
this.race = race;
|
||||
this.boat = boat;
|
||||
super(race, boat);
|
||||
this.direction = upwind? -1 : 1;
|
||||
}
|
||||
|
||||
@@ -34,4 +33,9 @@ public class WindCommand implements Command {
|
||||
|
||||
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.util.ArrayList;
|
||||
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}.
|
||||
* 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