Made ObserverCommands and made racestate an observable. ObserverCommands observes the race passes in the params. #story[1196]

main
Joseph 9 years ago
parent 28d27a7b2b
commit f4cb1a3ac4

@ -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{

Loading…
Cancel
Save