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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user